Applicazione di algoritmi su dati di grandi dimensioni


8

Esiste un libro o tutorial che ci insegna come applicare in modo efficiente gli algoritmi comuni (ordinamento, ricerca, ecc.) Su dati di grandi dimensioni (ovvero dati che non possono essere caricati completamente nella memoria principale) e come applicare in modo efficiente quegli algoritmi considerando il costo di bloccare il trasferimento dalla memoria esterna? Ad esempio, quasi tutti i libri di testo dell'algoritmo affermano che B e B + -trees possono essere utilizzati per archiviare dati su disco. Tuttavia, in realtà non è possibile spiegare come sia possibile farlo, in particolare la gestione dei puntatori in cui i dati sono presenti sul disco. Allo stesso modo, sebbene molti libri insegnino le tecniche di ricerca, non considerano i dati presenti nella memoria secondaria.

Ho controllato il libro di Knuth. Pur discutendo di queste idee, non ho ancora capito come applicarle effettivamente in un linguaggio di alto livello. C'è qualche riferimento che discute questi dettagli?



Puoi dare un'occhiata alla bibliografia completa di STXXL: la libreria di modelli standard per set di dati XXL .
Vor

Oggi con grandi DB come Oracle, DB2, SQL Server, normalmente nessuno lavora da solo grandi set di dati, se ti interessa potresti guardare documenti correlati a uno dei DB Server, ma oggi Martin Fowler e alcune altre persone stanno provando a passa a NO SQL , puoi anche controllarlo. (ma ci sono troppi aspetti nei grandi database, come la concorrenza, la sicurezza, ... non solo algoritmi veloci).

@Dave, Vor: grazie per i tuoi riferimenti. Li controllerò e ti informerò se sono quello che sto cercando.
Arani,

@SaeedAmiri: Capisco che, da quello che ho capito, l'archiviazione dei dati nei database è utile solo se i dati sono altamente strutturati in qualche modo. Pertanto, la sequenza di numeri e altri dati simili non vengono generalmente archiviati utilizzando i database. Inoltre, i libri di testo del database non descrivono in modo molto dettagliato dal punto di vista dello sviluppatore del database. Mentre la maggior parte di loro menziona il fatto che i database usano gli oggetti B e B +, molti non descrivono effettivamente COME implementano queste strutture di dati.
Arani,

Risposte:


2

I libri di database sono un buon esempio. Tuttavia, dai un'occhiata al campo I / O strutture dati efficienti (e algoritmi). Per quanto ne so, ci sono alcuni corsi su questo argomento, ma pochissimi libri.

Dai un'occhiata a questo libro: U. Meyer, P. Sanders e J. Sibeyn (a cura di), Algorithms for Memory Hierarchies, Lecture Notes in Computer Science 2625, Springer, 2003.

Dai un'occhiata a questi corsi: http://www.win.tue.nl/~hermanh/teaching/2IL35/ http://www.daimi.au.dk/~large/ioS12/

e queste diapositive: algo2.iti.kit.edu/sanders/courses/algen09-10/rdslides.pdf


1

Il libro di database di Ramkrishnan e Gehrke discute queste cose in dettaglio.


Il peggiore e il più noioso di sempre :)! sebbene sia una buona introduzione a molti argomenti interessanti nei database e nell'ottimizzazione del database.
AJed


0

Oggi questo campo è noto come big data e si sta evolvendo molto rapidamente e rapidamente in base alla forte connessione con la virtualizzazione e la tecnologia dei database relazionali è vista solo come un sottoinsieme. Inoltre, come notano i commenti, i database chiave / valore e NoSQL sono dove si stanno muovendo molta nuova innovazione e slancio. Ma dai tuoi commenti, sembri essere più interessato ai principi e alle tecniche di progettazione del database relazionale . Prova i seguenti riferimenti:


Non ho davvero studiato i sistemi di database non relazionali e quindi questa potrebbe essere una risposta plausibile. Ma in realtà non sto cercando libri di testo di database che descrivano la progettazione del database. Invece, un libro che lo descrive dal punto di vista dello sviluppatore del database (che ci dice esplicitamente come sono implementate le strutture di dati per lavorare sui dischi) sarebbe molto utile.
Arani,

odio ammetterlo, ma un po 'maledetto questi riferimenti. ci sono libri sugli algoritmi di database ma ci sono molti libri sulla progettazione di database che riguardano veramente come organizzare tabelle, datamodelling, normalizzazione, indici, ecc. concetti come questi. mentre questi sono tangenzialmente correlati alla tua domanda, non sono realmente esattamente connessi. fondamentalmente molte delle strategie per la gestione degli alberi b nei database moderni sono in qualche modo in bilico sui segreti commerciali. generalmente i b-alberi sono memorizzati in "pagine" che sono allocate e indicizzate dinamicamente. potrebbe cercare riferimenti migliori su questo a volte.
vzn,

indovinate che cosa volete veramente è il design dell'archiviazione del database fisico (che potrebbe essere coperto in modo lasco in alcuni di questi riferimenti, o forse no) .. ad esempio, ecco un white paper per un caso di studio con alcuni contenuti correlati, ad esempio "Internals of storage di progettazione fisica di SQL Server" , MS SQL server
vzn


1
vedi anche gli indici B + tree con qualche riferimento alle pagine di archiviazione e apache derby , un'implementazione di recupero / archiviazione di alberi B in java con dettagli di implementazione
vzn
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.