¿Qué tecnologías y algoritmos se usan comúnmente para la resolución de entidades basadas en una intersección de algunos atributos?

Supongo que debido a que uno de sus campos es SSN, desea coincidencias exactas, lo que significa que para cada registro de una fuente externa hay una o ninguna coincidencia en su base de datos interna.

La tecnología simple sería utilizar una base de datos relacional. Dicho esto, el esquema debe configurarse para evitar que su consulta explote. Primero configure su propio esquema de datos interno para que sus entidades de confianza se definan en una definición de clave principal al crear la tabla. Esto tiene el beneficio adicional de encontrar también duplicados en sus propios datos para garantizar la integridad de sus datos. Esto solo funcionaría si la combinación de las teclas es única. Por ejemplo, puede tener varios nombres “John” y varios apellidos “Doe” en sus registros, pero solo puede haber un registro con un nombre “John” y un segundo nombre “Doe”. También debe configurar la columna SSN para que tenga una restricción “única”.

A continuación, cree una tabla para los registros de origen externos, pero no defina las claves principales porque, según usted, existen posibles errores en los datos. Debe crear un índice en la tabla después de importar los datos para verificar la unicidad e integridad de los datos. Esta tabla se crea temporalmente solo para los datos importados.

Cree un índice en su propia tabla de datos donde los atributos coincidan con los atributos de la fuente externa. Esto acelerará las uniones de mesa que está a punto de realizar. Puede resultar que la columna SSN sea la única necesaria para el índice.

Ahora realiza la unión para hacer el partido. Ingrese los resultados en otra tabla para guardarlos con seguridad para su propósito.

Pero, ¿cómo saber si el SSN de algunos registros no es correcto? Puede realizar una unión posterior en las otras columnas y tener una cláusula where definida como “your.SSN outside.SSN” para encontrar los registros infractores. Si no se devuelven filas, eres bueno. Puede usar este método para buscar variaciones en los nombres (como mi primer nombre puede ser “Steve” o “Steven”).

Si las consultas se ejecutan lentamente, debe encontrar los planes de consulta para ver dónde se pueden crear índices para ayudar a acelerar las cosas.

¿Qué pasa si hay errores en otros campos? Si hay demasiados errores, es posible que deba verificar manualmente los registros que no coinciden con ninguno de sus datos internos.

TL; DR … Contrata a un consultor de bases de datos para que haga la correspondencia exacta por ti.

Si no está buscando coincidencias exactas, pero está buscando un conjunto agregado de registros (como se usa en el marketing de focalización utilizado por Yahoo, Facebook o Google), probablemente necesite usar una base de datos NoSQL como Hadoop o Cassandra para realizar mapear / reducir operaciones. Las bases de datos NoSQL carecen de esquema, por lo que esto puede funcionar mejor debido a la imprevisibilidad de los datos externos.

Se necesita más desarrollo para este último, por lo que esto fue un ejercicio para el OP.

¡Buena suerte!

La búsqueda de tabla más eficiente para grandes conjuntos de datos suele ser la tabla Hash. No soy un experto, pero suponiendo que haya un número razonablemente pequeño de entradas en cada registro, este enfoque al menos se ejecutará mucho más rápido que una búsqueda de tabla básica:

Primero, enumere los atributos que deben verificarse para las coincidencias, omitiendo los atributos de alta probabilidad como el género. Luego, cree un conjunto de tablas hash, una con cada atributo de la lista para la entrada de clave e índice para el registro coincidente en el conjunto de datos principal como el valor vinculado. Luego busque en cada tabla coincidencias hash y ejecute su propio algoritmo para cada hit de la tabla hash para determinar si los registros coinciden o no.

La principal limitación inmediatamente evidente de este método parece ser que requiere que al menos un atributo coincida exactamente para detectar una coincidencia. Además, las búsquedas de tablas hash pierden su ventaja de velocidad si demasiadas entradas son iguales para un atributo dado y se agrupan en un solo ‘depósito’.

¿Esta sugerencia cumple con sus requisitos?

Para identificar el papel de una palabra clave en la consulta (que puede ser un texto no estructurado libre), se puede utilizar el reconocimiento de entidad con nombre. Y luego se buscarán los campos apropiados para esa palabra clave de consulta.

Por ej. si la consulta es “Alex Brown”.

Usando NER, se puede descubrir que Brown es el apellido. Por lo tanto, Brown se puede buscar en el campo ‘apellido’ del índice en lugar de decir el campo ‘dirección’ que puede contener la palabra ‘Brown’ (Brown University).