Consigli per database orientato alle colonne [chiuso]
-
11-07-2019 - |
Domanda
Ho scoperto che i database sono generalmente disponibili in due versioni, il tradizionale RDBMS orientato alle righe o un database orientato agli oggetti (OODBMS). Tuttavia, a metà degli anni '90, ricordo, una nuova generazione di database mostrati orientati alle colonne. Ad alcuni di questi è stato assegnato il termine 4GL, ma non credo che sia stato un termine bloccato.
Quello che vorrei sapere è il seguente:
- Quali database orientati alle colonne esistono ancora?
- Quali sono le caratteristiche prestazionali di questi database?
- Esistono database orientati alle colonne open source?
- Con quali piattaforme interagiscono (.NET, Java, ecc.)
- Qual è stata la tua esperienza generale con loro?
I due database orientati alle colonne con cui ricordo di aver lavorato sono FAME e KDB.
Soluzione
HBase è un sistema di database orientato alle colonne open source modellato su BigTable di Google .
Altri suggerimenti
Infobright
È un motore MySQL orientato alle colonne
Puoi usare (quasi) tutti gli API / interfacce / strumenti di MySQL ma è orientato alle colonne.
È open-source e ha una versione gratuita.
È molto buono per lo stoccaggio. Avevo una tabella dei fatti 10Gig nel server SQL.
Infobright lo ha compresso a 15 MB.
Dai un'occhiata anche al C-store di Michael Stonebraker: C-store (include collegamenti al codice sorgente e al documento di ricerca)
Il documento contiene un eccellente punto di vista sui database orientati alle colonne, che dovrebbero rispondere alla maggior parte delle tue domande.
Per citare il documento,
"Most major DBMS vendors implement record-oriented
storage systems, where the attributes of a record (or tuple)
are placed contiguously in storage. With this row store
architecture, a single disk write suffices to push all of the
fields of a single record out to disk. Hence, high
performance writes are achieved, and we call a DBMS
with a row store architecture a write-optimized system.
In contrast, systems oriented toward ad-hoc querying
of large amounts of data should be read-optimized. Data
warehouses represent one class of read-optimized system,
in which periodically a bulk load of new data is
performed, followed by a relatively long period of ad-hoc
queries. Other read-mostly applications include customer
relationship management (CRM) systems, electronic
library card catalogs, and other ad-hoc inquiry systems. In
such environments, a column store architecture, in which
the values for each single column (or attribute) are stored
contiguously, should be more efficient. This efficiency
has been demonstrated in the warehouse marketplace by
products like Sybase IQ [FREN95, SYBA04], Addamark
[ADDA04], and KDB [KDB04]. In this paper, we discuss
the design of a column store called C-Store that includes a
number of novel features relative to existing systems."
Sybase IQ di cui ho sentito parlare.
InfiniDB è stato recentemente rilasciato open source (GPLv2) da Calpont. Supporta la maggior parte dell'API MySQL e archivia i dati in modo orientato alle colonne ed è ottimizzato per l'elaborazione analitica su larga scala.
Ecco la diversa wiki di DBMS orientata alle colonne Implementazioni DBMS orientate alla colonna
Sybase IQ è orientato alla colonna. Tutte le colonne vengono automaticamente indicizzate quando si crea una tabella e i dati sono ben compressi nelle colonne.
È un bel database OLAP (... data warehouse) ma non lo consiglierei per nessun tipo di elaborazione delle transazioni in quanto è progettato per le operazioni di data warehouse.
Per quanto riguarda le caratteristiche prestazionali, SELECTS è molto veloce per grandi volumi di dati ma INSERT / UPDATE / DELETE sono molto lenti rispetto ad un DB OLTP standard come Sybase ASE, ad esempio. Anche il blocco delle tabelle è molto diverso da un database OLTP, quindi aspettati blocchi di tabella esclusivi per le operazioni di scrittura (INSERTS, ecc.) Quando lavori nell'archivio dati MAIN.
Altrimenti supporta T-SQL (versione Sybase) e Watcom SQL.
Saluti,
Kevin