Quale database è meglio lavorare con grafici e dati strutturati ad albero?

dapper database graph hierarchy tree

Domanda

Sto pensando di lavorare con Dapper.NET per un sito di famiglia.

Nella struttura saranno presenti molti dati simili ad albero. Quale database fornisce le query migliori per lavorare con le relazioni ad albero cicliche / aciclici?

Voglio conoscere la facilità e il confronto delle prestazioni delle query gerarchiche. vale a dire. come CTE in SQL Server, Connetti da / Inizia con Oracle ecc.

Dapper è la scelta migliore come Micro ORM per questo tipo di dati strutturati ad albero?

Ho bisogno di un'opinione per scegliere il database giusto e il giusto Micro ORM per questo.

Scusa per il mio cattivo inglese.

Risposta popolare

La mia domanda continua: quanti dati ti aspetti?

Ma a parte questo, non è solo il tipo di database che stai scegliendo per i tuoi dati, ma è anche la struttura delle tabelle. Gli alberi gerarchici possono essere archiviati in vari modi a seconda delle esigenze.

Struttura della tabella

Le strutture particolari possono essere molto veloci sulle letture trasversali, ma rallentare su inserti / aggiornamenti (cioè insiemi annidati ), altri (elenchi di adiacenze) al contrario. Per un rapporto 99: 1: scrittura (la maggior parte delle applicazioni odierne legge molto più della scrittura) Preferirei scegliere una struttura di serie nidificata modificata che abbia lasciato, destra, profondità e parent. Questo ti dà la migliore possibilità per gli scenari di lettura.

Tipo di database

A meno che tu non stia mirando a enormi quantità di dati, ti suggerisco di utilizzare uno qualsiasi dei database SQL che conosci meglio (MSSQL, MySQL, Oracle). Ma se il tuo database conterrà un numero enorme di nodi di gerarchia, flirtare con un database specializzato orientato ai grafici potrebbe essere un'opzione migliore.

80 milioni di nodi

Se dovessi optare per una soluzione di serie nidificata modificata (utilizzando anche valori negativi, quindi numero di aggiornamenti su metà di inserimento / aggiornamento) avresti una tabella di gerarchie left . colonne right , ID e ParentID che risulterebbero in una tabella approssimativa di 1,2 GB. Ma questa è la tua stima più alta dopo almeno due anni di utilizzo.

Il mio consiglio

Vai veloce e vai leggero - Non esagerare con l'utilizzo del miglior database possibile per archiviare la tua gerarchia se risulta che non è necessario, dopotutto. Pertanto ti suggerisco di utilizzare inizialmente il DB relazionale in modo da poter essere rapidamente disponibile sul mercato anche se la soluzione inizierà a battere dopo alcuni milioni di record. Ma prima che il tuo database inizi a lottare (stiamo parlando di anni qui) otterrai due cose:

  1. Vedrai se il tuo prodotto decollerà in primo luogo (ci sono già molti servizi di genealogia) quindi non investirai nell'apprendimento di nuove tecnologie; Poiché utilizzeresti una tecnologia comprovata e supportata, ti metteresti rapidamente sul mercato
  2. Se il tuo prodotto ha successo (e spero sinceramente che lo faccia) ti darà comunque abbastanza tempo per apprendere una diversa soluzione di storage e implementarla; con i livelli di codice appropriati non dovrebbe essere difficile cambiare lo spazio di archiviazione in seguito, quando richiesto


Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow