SQL (MySQL) vs NoSQL (CouchDB) [geschlossen]

126

Ich bin gerade dabei, eine hochskalierbare Anwendung zu entwerfen, in der viele Daten gespeichert werden müssen. Zum Beispiel speichert es viel über Benutzer und dann Dinge wie viele ihrer Nachrichten, Kommentare usw. Ich habe MySQL schon immer verwendet, aber jetzt möchte ich etwas Neues wie couchdb oder ähnliches ausprobieren, das nicht SQL ist.

Hat jemand irgendwelche Gedanken oder Anleitungen dazu?

christophmccann
quelle
3
Gah, CW. Und ich hatte gehofft, hier einen echten Repräsentanten und einen Street Cred zu bekommen. :-)
Franci Penov
1
Können Sie etwas mehr über Ihren Datensatz erklären?
Mikeal
4
Ich wünschte, das müsste nicht geschlossen werden. Diese Fragen sind wichtig zu stellen, aber aus irgendeinem Grund gehören sie nicht zu SO.
Neil Chowdhury

Antworten:

191

Hier ist ein Zitat aus einem kürzlich veröffentlichten Blog-Beitrag von Dare Obasanjo .

SQL-Datenbanken sind wie eine automatische Übertragung und NoSQL-Datenbanken sind wie eine manuelle Übertragung. Sobald Sie zu NoSQL wechseln, werden Sie für eine Menge Arbeit verantwortlich, die das System in einem relationalen Datenbanksystem automatisch erledigt. Ähnlich wie bei der Auswahl von Schaltgetriebe über Automatikgetriebe. Zweitens können Sie mit NoSQL mehr Leistung aus dem System herausholen, indem Sie viele Integritätsprüfungen eliminieren, die von relationalen Datenbanken aus der Datenbankebene durchgeführt werden. Dies ist ähnlich wie Sie mehr Leistung aus Ihrem Auto herausholen können, indem Sie ein Schaltgetriebe im Vergleich zu einem Fahrzeug mit Automatikgetriebe fahren.

Die bemerkenswerteste Ähnlichkeit ist jedoch, dass genau wie die meisten von uns die Vorteile eines Fahrzeugs mit Schaltgetriebe nicht wirklich nutzen können, da der Großteil unseres Fahrens auf dem Weg zur und von der Arbeit im Verkehr sitzt und es eine ähnlich harte Realität gibt , dass die meisten Websites nicht im Maßstab von Google oder Facebook sind und daher weder eine Bigtable noch eine Cassandra erforderlich sind.

Zu dem ich nur hinzufügen kann, dass der Wechsel von MySQL, wo Sie zumindest einige Erfahrung haben, zu CouchDB, wo Sie keine Erfahrung haben, bedeutet, dass Sie sich mit einer ganzen Reihe neuer Probleme befassen und verschiedene Konzepte und Best Practices lernen müssen. Das ist an sich schon wunderbar (ich spiele zu Hause mit MongoDB und mag es sehr), aber es sind Kosten, die Sie bei der Schätzung der Arbeit für dieses Projekt berechnen müssen. Sie bringen unbekannte Risiken mit sich und versprechen unbekannte Vorteile. Es wird sehr schwer zu beurteilen sein, ob Sie das Projekt pünktlich und mit der Qualität durchführen können, die Sie wollen / müssen, um erfolgreich zu sein, wenn es auf einer Technologie basiert, die Sie nicht kennen.

Wenn Sie einen Experten im NoSQL-Bereich im Team haben, sollten Sie sich diesen auf jeden Fall genauer ansehen. Aber ohne Fachwissen im Team, springen Sie nicht auf NoSQL für ein neues kommerzielles Projekt.

Update : Um etwas Benzin in das offene Feuer zu werfen, das Sie begonnen haben, finden Sie hier zwei interessante Artikel von Leuten aus dem SQL-Camp. :-)

Ich kann es kaum erwarten, dass NoSQL stirbt (Originalartikel ist weg, hier ist eine Kopie )
Kampf gegen die NoSQL-Denkweise, obwohl dies kein Anti-NoSQL-
Update ist : Nun, hier ist ein interessanter Artikel über NoSQL, das
NoSQL sinnvoll macht

Franci Penov
quelle
2
Beim Skalieren von SQL-Lösungen werden Features und Beziehungen entfernt. Ich denke also nicht, dass dies eine völlig faire Einschätzung ist. Auch ich würde nicht Gruppe NoSQL - Datenbanken zusammen wie diese, Cassanda zum Beispiel konzentriert sich ausschließlich auf die Skalierung nach oben , während CouchDB mit Skalierung der api betrifft nach unten und macht es einfach zu bedienen und versucht diese api maßstabs so weit oben wie möglich zu ermöglichen.
Mikeal
Könnte dies der Link zum Zitat sein? 25hoursaday.com/weblog/2010/03/29/…
edosoft
Ah ja, in der Tat. Ich habe vermisst, dass er es auch zu einem öffentlichen Blog-Beitrag gemacht hat. Ich werde den Beitrag aktualisieren.
Franci Penov
1
Danke für den Beitrag! Der Link "Ich kann es kaum erwarten, dass NoSQL stirbt" funktioniert bei mir nicht. Vielleicht möchten Sie ihn überprüfen.
Kbpontius
"Sie haben eine gut aufgezählte Liste von Einschränkungen und Warzen gegen eine neuere, schlecht verstandene Liste von Einschränkungen und Warzen eingetauscht" - Ich kann es kaum erwarten, dass NoSQL stirbt
Yarin
3

Es scheint, als ob sich heutzutage nur echte Lösungen um Skalierung oder Sharding drehen. Alle modernen Datenbanken (sowohl NoSQLs als auch NewSQLs) unterstützen die horizontale Skalierung sofort auf Datenbankebene, ohne dass die Anwendung über Sharding-Code oder ähnliches verfügen muss.

Leider wird für das vertrauenswürdige gute alte MySQL Sharding nicht "out of the box" bereitgestellt. ScaleBase (Haftungsausschluss: Ich arbeite dort) ist Hersteller einer vollständigen Scale-Out-Lösung, einer "automatischen Sharding-Maschine", wenn Sie möchten. ScaleBae analysiert Ihre Daten und Ihren SQL-Stream, teilt die Daten auf DB-Knoten auf und aggregiert sie zur Laufzeit - das müssen Sie nicht! Und es ist kostenloser Download.

Versteh mich nicht falsch, NoSQLs sind großartig, sie sind neu, neu ist mehr Auswahl und Auswahl ist immer gut !! Die Wahl von NoSQL ist jedoch mit einem Preis verbunden. Stellen Sie sicher, dass Sie ihn bezahlen können ...

Sie können hier weitere Daten zu MySQL, NoSQL ... sehen: http://www.scalebase.com/extreme-scalability-with-mongodb-and-mysql-part-1-auto-sharding

Hoffe das hat geholfen.

Doron Levari
quelle
0

Eine der besten Optionen ist MongoDB (NOSql dB), das die Skalierbarkeit unterstützt. Speichert große Datenmengen nur als BigData in Form von Dokumenten im Gegensatz zu Zeilen und Tabellen in SQL. Dies ist ein schnellerer Vorgang nach dem Sharding der Daten. Verwendet Replikatsätze um eine Datengarantie zu gewährleisten, die mehrere Server mit einem primären Datenbankserver als Basis verwaltet. Sprachunabhängig. Flexibel zu bedienen

Kiranmai Harshi
quelle
Sie sollten Ihre Meinung auf "am besten" stützen, da Couchbase, Cassandra, AeroSpike usw. und alle Datenbanken, die die von Ihnen genannten Funktionen unterstützen.
OneCricketeer