Ho intrapreso un progetto riguardante la deduplicazione del database. Ho fatto alcune ricerche e ho scoperto che il tipo di dict Python in realtà è una hashmap che utilizza l'indirizzamento aperto .
Nel modulo di deduplicazione, avremo alcune regole che determinano se due record sono identici, con le regole che specificano essenzialmente gli attributi che identificano univocamente il record (non lo chiamavano una chiave candidata come il DB sta per essere non relazionale, no-sql). Ora diciamo che abbiamo a che fare con un set di dati davvero grande. Naturalmente, l'hashing è la strada da percorrere (trovato quel consiglio qui ).
Le domande:
- il modulo ha bisogno di calcolare un hash e quindi memorizzarlo in un dict? Non sarebbe inutile, in quanto l'implementazione dict è a sua volta una hashmap?
- quanto è costosa la conversione di una lista in un set? Quella conversione dovrebbe rimuovere tutti i duplicati, ma data l'enorme scala, è pratico?
- qual è il costo sostenuto per il controllo dell'appartenenza a un dict / set utilizzando la parola chiave "in"?
Hadoop MapReduce non è un'opzione, almeno per ora.
Non riesco davvero a tuffarmi nelle fonti Python per capirlo, dato che sono strettamente limitato nel tempo: |