Ich suche nach verschiedenen Datenbanktypen und DBMS für ein neues Projekt, das ich im Sommer starten möchte.
Ich habe Systeme in MySQL und PostgreSQL erstellt und möchte nun mein Wissen und meine Erfahrung in Datenbanken erweitern.
Mein Projekt wird eine Art soziales Netzwerk / Wissenssache sein. (Ich habe noch keinen Begriff dafür entwickelt).
Ich habe angeschaut:
- Cassandra (verwenden Sie eine eigene Abfragesprache); Es scheint gut für funktionsreiche Inhalte zu sein und eine leistungsstarke Abfrageausführung zu liefern. Ich bin jedoch nicht besonders daran interessiert, da für die Arbeit eine Java-Umgebung erforderlich ist und ich es vorziehen würde, nichts mit Oracle zu tun zu haben.
- MongoDB (noSQL-Typ von DBMS); Hervorragende Skalierbarkeit Sie verlieren jedoch alle Funktionen, die bereits in der bewährten SQL-Sprache verfügbar sind, wie z. B. Abfragen von Geschäftsinformationen.
Anforderungen an das System:
- Daten Text, Daten, Zeiten, xml, kleine Ints, Klecks,
- Struktur / Verhalten : normalisiert 3NF, nicht in Echtzeit, relational, skalierbar, robust
- Umgebung: Unix / Linux, kein JAVA !, läuft vorzugsweise auf C
Ich habe mich gefragt, ob Sie mich auf andere Datenbanksysteme verweisen könnten, die ich untersuchen sollte.
Ich habe mir auch objektrelationale Datenbanken angesehen. Ich finde die Idee, dass sie mit PHP-Objekten (PDOs) arbeiten, sehr gut, aber ihre Leistung scheint ein bisschen schlecht zu sein.
Angesichts der Tatsache, dass es hier DBAs gibt, wäre jedes Feedback zu diesen Systemen, die Sie betrieben haben, dankbar.
Vielen Dank
quelle
Antworten:
Ihre abstrakten Anforderungen rufen "PostgreSQL" nach mir. Ich denke jedoch, dass es sich lohnt, auf dem Laufenden zu bleiben, was die Bourgeoisie vorhat.
Gratis Gegenstände
Seltsames freies Zeug
Unfreie Sachen
Fazit
Ich habe keines dieser Dinge ausgiebig benutzt. Ich habe mit den meisten ein bisschen gespielt und bin immer mit PostgreSQL zurückgekehrt. Wenn Sie sich Ihre Anforderungen ansehen, ist die einzige PostgreSQL-Lösung, die nicht sofort verfügbar ist, die Skalierbarkeit. Andererseits ist es für meine Zwecke viel einfacher, Hardware im Wert von 4000 US-Dollar auf einen einzelnen dedizierten Datenbankcomputer zu werfen, als Cloud-Knoten oder Low-End-Computer im Wert von 4000 US-Dollar auf dieses Problem zu werfen. Und es gibt Möglichkeiten, mit PostgreSQL eine Skalierbarkeit zu erzielen, beispielsweise mit EnterpriseDB .
Es macht großen Spaß, mit diesen Dingen nebenbei herumzuspielen, aber wenn es darum geht, wertvolle, nicht reproduzierbare Produktionsdaten in etwas zu stecken, treten eine Reihe langweiliger Attribute wie Zuverlässigkeit, Stabilität und langfristige Rentabilität in den Vordergrund.
Gedankenexperiment für Sie
Bedenken Sie. Stellen Sie sich vor, Sie sind Mark Zuckerberg und müssen entweder Ihre Codebasis oder Ihre Daten preisgeben. Sie können Ihr gesamtes Entwicklungspersonal behalten, müssen aber entweder Ihren gesamten Code aufgeben - jede Zeile, sogar alle Entwicklererinnerungen darüber, wie sie alles implementiert haben, sind verschwunden -, aber Sie können alle Ihre Benutzerkonten und alle Ihre hochgeladenen Benutzer behalten Daten und all das, oder Sie können alle Daten aufgeben. Behalten Sie alle Strukturen und Server sowie die Konfiguration und das Setup bei, verlieren Sie jedoch jede Zeile in jeder Tabelle in jeder Datenbank.
Es sollte offensichtlich sein, dass es schlimmer wäre, die Daten zu verlieren. Warum würden alle Ihre Benutzer all diese Daten neu generieren? Denken Sie an all die verlorenen Marketingdaten, mit denen Facebook tatsächlich ihr Geld verdient. Und es gibt Unmengen von Unternehmern, die sich die Gelegenheit zunutze machen, Menschen dazu zu bringen, ihren Facebook-Klon zu verwenden. Jetzt würden all jene nicht mehr autorisierten Ex-Facebook-Nutzer über Alternativen nachdenken. Wenn sie andererseits die Codebasis verlieren, können sie sie möglicherweise sogar noch besser als jetzt wiederherstellen, aber sie können in sehr kurzer Zeit etwas online haben. Verdammt - sie könnten wahrscheinlich kaufenDie Facebook-Klon-Codebasis einer anderen Person lädt sie mit den tatsächlichen Daten, aber Sie können ihre Daten nicht einfach kopieren. Wenn Facebook immer noch alle wichtigen Daten auf seinen Servern hat, ist der Anreiz, das Unternehmen zu verlassen, viel geringer. Immer noch schlecht, aber noch viel weniger. Überraschenderweise weniger.
Die Ironie ist, dass es viel einfacher ist, alle Ihre Daten bei einem verrückten Unfall zu verlieren, als Ihren gesamten Code zu verlieren. Für die meisten Internet - Unternehmen, aber die Daten sind das Unternehmen, es ist Ihr wertvollstes Kapital. Und dies ist ein wichtiger Grund, eine traditionelle, bewährte, altmodische, nicht-sexuelle relationale Datenbank zu verwenden.
quelle
Bedenken Sie auch, dass es keinen Grund gibt, warum Sie eine relationale Datenbank für einige Dinge und die nosql-Datenbank für andere Dinge nicht verwenden können.
quelle
Apropos nosql, ich habe nur 1 Sache über die Facebook-Referenz hinzuzufügen:
Wenn Sie eine sehr große Skalierung planen, empfehle ich, dass Sie eine systemadministratorfreundliche und eine entwicklerfreundliche DB-Engine verwenden.
Beenden Sie die entwicklerfreundliche und superschnelle MongoDB, die nicht geografisch verteilt skaliert werden kann und keine Möglichkeit zum effizienten und einfachen Sichern bietet. Obwohl wir hier MongoDB verwenden, scheint es, dass Riak oder CouchDB in den Spezifikationen für Sysadmins besser aussehen (ich habe keine Erfahrung mit Riak oder CouchDB)
quelle