2012-01-15 15 views
9

“Un database grafico -transforms a-> RDBMS”Cosa può fare un RDBMS che Neo4j (e database di grafici) non può?

Il sito Neo4j sembra implicare che qualsiasi cosa si può fare in RDBMS, si può fare in Neo4j.

Prima di scegliere Neo4j come sostitutivo per un RDBMS, ho bisogno di alcuni dubbi.


Sono interessato a Neo4j per

  • capacità di fare rapidamente modificare i dati "schema"
  • capacità di esprimere entità naturalmente, invece di relazioni e normalizzazioni
  • ... che porta a codice altamente espressivo (meglio di ORM)

Questa è una soluzione NoSQL che mi interessa per è funzionalità, non alte prestazioni.


Domanda: Fa Neo4j presentare eventuali problemi che possono rendere inadatto in sostituzione RDBMS?

Sono particolarmente preoccupato per questi:

  • c'è qualche funzione DB devo implementare in logica dell'applicazione? (Ad esempio, è necessario implementare join a livello applicazione per alcuni DB NoSQL)
  • I campi "indicizzati" consentono una ricerca più veloce di O (n)?
  • Come gestisco backup e replica caldi?
  • eventuali problemi con lo schema "alterazione" o la locazione di entità con diverse versioni dello schema che convivono?
+2

Se desideri informazioni su questo argomento, copia il tuo post sul gruppo neo4j google http://neo4j.org/forums, qui troverai le risposte. –

+0

@Michael Hunger, Will :-) Sì, questo era troppo specializzato per SO. – aitchnyu

+0

Non vedo come questo non sia-costruttivo. – smartcaveman

risposta

0

L'utilizzo di un db aziendale come oracle offre molte, molte funzionalità che possono o non possono far parte di neo. Questi includono:

  • transazioni ACID
  • Alta disponibilità/backup/standby
  • capacità di utilizzare SQL per ottenere i dati in modo più efficiente utilizzando un ottimizzatore basato costo - il db determina il modo migliore per recuperare il dati in base alle tue ultime statistiche
  • scalabilità, partizionamento
  • supporto
  • sicurezza

Se si intende implementare la maggior parte delle funzionalità dell'applicazione in codice da soli e non si richiede la struttura e le funzionalità avanzate offerte da un rdbms o se le strutture dati sono più adatte a un db basato sul grafico, allora da tutti significa prova neo.C'è un motivo per cui la maggior parte delle app aziendali utilizza uno dei tradizionali server rdbms ma questo potrebbe non essere sempre il caso in futuro

2

Questo è un argomento estremamente ampio che copre qualsiasi cosa, dalla modellazione e implementazione a IT e supporto. È impossibile rispondere davvero a tutte queste domande qui, soprattutto senza dettagli sulla tua situazione. Tuttavia, sembra che tu stia esplorando opzioni e strade. Quindi, passerò semplicemente alcune considerazioni generali su qualcuno che ha implementato un certo numero di sistemi.

Tutti sembrano pensare che il loro nuovo paradigma di database sostituisca i database relazionali. Quindi, prendi quelle affermazioni con un granello di sale.

Mi piace pensare in termini di 3 modelli fondamentali: Relazionale, Documento e Grafici. A seconda del problema, uno o più di questi è la risposta giusta. Non farei transazioni finanziarie in altro che relazionale (basato su SQL). Se stai costruendo un CMS, allora un DB Document è la strada da percorrere. Se la mia applicazione è la modellazione di reti (strade, persone, connessioni, reti, ecc.) Io uso Neo4J.

Per quanto riguarda la qualità della produzione, ci sono opzioni solide in ogni categoria. Relazionale ha un sacco. Per i database di documenti andrei su MongoDB o su un sistema JCR di livello superiore come Apache Jackrabbit. Per la grafica, ho solo esperienza con Neo4j ed è solido per me.

Qualunque cosa tu faccia, non comprare nell'hype che "Abbiamo l'unica tecnologia che risolve tutti i tuoi problemi". Non è lì e limita il tuo pensiero.

1

Sono convinto che Neo4j sia un buon sostituto per i database relazionali ormai.

  • E 'ACID compliant
  • Anche se la versione della comunità manca di alcune funzionalità come il backup a caldo, l'edizione Enterprise ha
  • Si può ottenere il supporto per esso
  • A prima vista (e nelle nuove versioni in cui non hai bisogno di una clausola START) la sua CYPHER linguaggio di query può fare quasi tutto SQL può

ma

  • E 'difficile trovare uno sviluppatore CYPHER di uno SQL uno
  • e non avere un ottimizzatore equivalente: è importante più che con SQL come si scrive la query

Anche se supporta la replica e Neo esplicitamente lo commercializza come un grande prodotto di dati, non posso confermare che sia abbastanza scalabile e non ho studiato gli aspetti di sicurezza.

Nelle versioni recenti (più giovane della domanda precedente), è possibile definire indici su etichette, che funzionano come indici su tabelle in un DB relazionale, consentendo ricerche O (log (n)).

(fyi: Neo4j non ha tabelle, ma ogni nodo (~ = riga) può avere etichette diverse, paragonabili alle etichette di Gmail. Questo è più flessibile: non è necessario scegliere se si mettono auto e biciclette in una per i veicoli da tavolo o meno: una bicicletta dovrebbe avere sia un veicolo che un'etichetta bicicletta)

Per rispondere alla domanda iniziale: Neo4j non supporta l'applicazione dello schema.Neo consiglia di implementare test di coerenza automatizzati sul database, che vengono eseguiti sull'istanza del test di accettazione come parte del ciclo di rilascio.

Problemi correlati