2013-05-01 22 views
6

Wir sind gerade dabei, mit Cassandra die Füße nass zu machen. Keiner von uns hat Erfahrung mit dieser speziellen Plattform, sondern ist erfahrener Entwickler mit JavaEE, JPA usw. Ich stieß auf die Kundera-Bibliothek, die eine JPA-Implementierung bietet, die mit mehreren NoSQL-Datenspeichern, einschließlich Cassandra, kompatibel ist.Anfang Cassandra - Verwenden Sie Kundera? Etwas anderes?

Es ist verlockend, diesen Weg zu gehen, da wir VIEL schneller aufstehen können. Ist es jedoch die richtige Idee? Was sind die Nachteile einer solchen Bibliothek? Wie beeinflusst es die Leistung? Gibt es einen großen Unterschied?

Ich bin gespannt, welche Erfahrungen andere mit dieser Bibliothek gemacht haben. Und wenn wir etwas anderes sehen sollten, würde ich es gerne hören.

+5

Bitte überprüfen Sie die [faq], vor allem die "was _not_ zu fragen" Abschnitt. Dies ist kein Diskussionsforum. – Mat

+1

Eine andere verwandte Frage, die Sie erforschen können, ist http://stackoverflow.com/questions/15983190/cassand-client-java-apis/15990877#15990877 – Easility

+0

Schande, dass mehr Leute nicht wirklich solche Fragen wie "in erster Linie auf der Grundlage von Meinungen" schließen das ist, was das ist –

Antwort

9

Mit Jonathan's (jbellis) auf die nächste Ebene, IMHO, der Zweck von ORMs wie Hibernate oder JPA-Spezifikationen ist es, die Komplexität von SQL zu verbergen, da Anwendungsentwickler am besten Objekte und nicht SQL. Ähnlich wie kundera verbirgt sich die Komplexität von NoSQL, aber auf eine intelligente Art und Weise, die es ermöglicht, die Leistungsfähigkeit von NoSQL zu nutzen, aber es den Entwicklern immer noch leicht macht, das traditionelle RDBMS-Paradigma zu verwenden. Allerdings, wie Jonathan erwähnt, sollten Sie Cassandra Datenmodellierungskonzepte immer noch verstehen, sonst werden Sie am Ende ein anderes SQL ähnliches Monster sogar über Cassandra erstellen. Kundera hilft bei dieser NoSQL-Modellierung, indem Optimierungstechniken wie Eingebettete oder Eins-zu-Viele-Beziehungen automatisch in mehrere Spalten konvertiert werden, anstatt neue Spaltenfamilien (RDBMS-Tabellenäquivalente) zu erstellen und damit ein physikalisches relationales Modell zu umgehen. "Ein Werkzeug ist nur so gut wie die Fähigkeiten des Handwerkers/der Frau, die es benutzen!"

+0

Also, das sagte, die Vorteile der Verwendung von etwas wie Kundera (Transaktionsunterstützung, Lucene Indizierung, etc.) überwiegen etwaige Leistungseinbußen oder andere Nachteile? Ich erkenne die Notwendigkeit, das Datenmodell neu zu gestalten, um weniger SQL-artig zu sein und mehr mit dem, was die Datenquellen handhaben sollen. Hat es noch einen Vorteil, diese Route hinunter zu gehen? – Shadowman

+2

Lucene-basierte Indizierung ist optional. Vielleicht möchten Sie die sekundäre Indizierung von Cassandra verwenden. Mit derzeit 2.5 Release-Aufwand ist der Overhead im Vergleich zu roher Sparsamkeit usw. sehr gering. –

8

Verwenden Sie die native CQL driver und lesen Sie die documentation on data modeling. Cassandra ist eine relationale Datenbank, so wie Kundera es tut, ist eine großartige Möglichkeit, sich in eine Ecke zu malen, ohne zu verstehen, wie man dorthin gelangt ist.

+4

Ich würde sagen, es hängt von Anwendungsfall, Fall zu verwenden. Kundera verwendet Cassandra nicht als relationales Schema, sondern bietet einen JPA-Zugang. Mit der aktuellen CQL-Entwicklung empfiehlt Cassandra selbst, eine Art von Schema zur Verfügung zu stellen. Also, Kundera kommt sehr praktisch und es ermöglicht Ihnen: 1. Handles implizit Cassandra Schema-Management 2. Tun CRUD über Cassandra in JPA-Weise. 3. Natürlich ist Cassandra keine relational verteilte Datenbank, aber wir haben immer noch Fälle gesehen, in denen Leute nach solchen JPA-ähnlichen Anwendungsfällen suchen, nach mehrdeutiger Persistenz. Dort kommt Kundera sehr praktisch, –

2

PlayOrm ist eine noSql-Mapping-Schicht und ist NICHT unbedingt JPA-konform, wenn man viele der Muster von noSQL befolgt. noSQL ist nicht relational. Tatsächlich sollte es wahrscheinlich nicht das R in PlayORM haben, da es auch nicht wirklich relational ist. Sie haben jedoch immer noch Beziehungen in NoSQL. Es ist nicht nur ein RDBMS.

Verwandte Themen