So wählen Sie einen Datenspeicher für das nächste neue glänzende Ding aus
Veröffentlicht: 2018-01-26Hinweis: Dies ist ein technischer Blogbeitrag, der von Principal Engineer Silvia Botros verfasst wurde und erstmals am 25. Dezember 2017 im Sysadvent-Blog erschien.
Datenbanken können schwierig sein. Weißt du, was schwieriger ist? Erstmal einen auswählen. Dies ist eine Herausforderung, egal ob Sie in einem neuen Unternehmen sind, das noch versucht, sein Produkt/den Markt zu finden, oder in einem Unternehmen, das sein Publikum gefunden hat und einfach das Produktangebot erweitert.
Beim Erstellen einer neuen Sache ist einer der allerersten Teile dieses Designprozesses, welche Datenspeicher wir verwenden sollten, und sollte das eine Einzahl oder eine Mehrzahl sein? Sollten wir relationale Stores verwenden oder müssen wir einen Key-Value-Store auswählen? Was ist mit Zeitoptionen? Sollten wir auch eine verteilte Log-Wiedergabe einstreuen?
Damit. Viele. Optionen…
Ich werde in diesem Artikel versuchen, einen Prozess zu beschreiben, der diese Entscheidung hoffentlich leiten wird, und gegebenenfalls erklären, wie die Größe und Reife Ihrer Organisation diese Entscheidung beeinflussen können.
Grundlegende Anforderungen
Daten sind das Lebenselixier eines jeden Produkts. Selbst wenn wir im Design planen, mehr modernste Technologie zum Speichern des Anwendungsstatus zu verwenden (weil MySQL oder Postgres nicht mehr „cool“ sind), ist das, was wir wählen, immer noch ein Datenspeicher und erfordert daher, dass wir strenge Regeln anwenden unsere Auswahl treffen.
Wichtig ist, sich daran zu erinnern, dass nichts umsonst ist. Alle Datenspeicher sind mit Kompromissen verbunden, und wenn Sie nicht explizit angeben, welche Kompromisse Sie als Geschäftsrisiko eingehen, gehen Sie ein unbekanntes Risiko ein, das sich zum ungünstigsten Zeitpunkt zeigt.
Es ist unwahrscheinlich, dass Ihr Produktmanager weiß oder sich darum kümmern muss, was Sie für Ihren Datenspeicher verwenden, aber er wird die Anforderungen vorantreiben, die die Optionsliste schrumpfen lassen. Manchmal braucht jedoch sogar das etwas Anstupsen durch das Entwicklungsteam. Hier ist eine Liste der Dinge, die Sie das Produktteam fragen müssen, um Ihre Optionen zu verbessern:
- Wachstumsrate: Wie werden sich die Daten selbst oder der Zugriff darauf voraussichtlich im Laufe der Zeit verändern?
- Wie wird das Abrechnungsteam diese neuen Daten verwenden?
- Wie wird das ETL-Team diese Daten verwenden?
- Welche Genauigkeits-/Konsistenzanforderungen werden für diese neue Funktion erwartet?
- Welche Zeitspanne für diese Konsistenz ist akzeptabel? Ist eine Nachbearbeitungskorrektur akzeptabel?
Finde den Kontext, der nicht gesagt wird
Die Wahl des Datenspeichers ist keine Wahl, die dem DBA oder dem Ops-Team oder auch nur dem Ingenieur, der den Code schreibt, vorbehalten ist.
Ausgereifte Organisationen mit einem bekanntermaßen adressierbaren Markt müssen von Stakeholdern aus der gesamten Organisation zu einer Entscheidung kommen.
Wenn die Anforderungen des Produktteams in ein Dutzend Datenspeicher passen, wie bestimmen Sie dann Anforderungen, die nicht explizit genannt werden?
Sie müssen unausgesprochene Anforderungen so schnell wie möglich an die Oberfläche bringen, da dies der Weg zu gescheiterten Erwartungen auf der ganzen Linie ist.
Viele angedeutete Dinge können dazu führen, dass Sie in dieser „zu viele Auswahl“-Falle scheitern. Dies beinhaltet, ist aber nicht beschränkt auf:
- Unvollständige Feature-Listen
- Leistungsanforderungen, die nicht explizit aufgeführt sind
- Konsistenzanforderungen, die angenommen werden
- Wachstumsrate, die nicht angegeben ist
- Abrechnungs- oder ETL-Abfrageanforderungen, die noch nicht verfügbar/bekannt sind
All dies sind Möglichkeiten, die dazu führen können, dass ein Engineering-Team zu lange am Rad dreht, um eine lange Liste von Datenspeicheroptionen zu überprüfen, nur weil die expliziten Kriterien, mit denen sie arbeiten, zu freizügig oder unvollständig sind.
Für mehr „Greenfield“-Produkte ist, wie ich bereits erwähnt habe, Ihr Ziel Flexibilität. Ein allgemeinerer Datenspeicher von bekannter Qualität hilft Ihnen also dabei, einem Ergebnis näher zu kommen, mit dem Wissen, dass Sie später möglicherweise zu einem Datenspeicher wechseln müssen, der für Ihre neue Größenordnung besser geeignet ist.
Machen Sie Ihre Liste
Es ist an der Zeit, mögliche Lösungen anhand Ihrer Anforderungsliste zu filtern. Die resultierende Liste darf nicht mehr als eine Handvoll möglicher Datenspeicher sein. Wenn die Liste der potenziellen Datenbanken, die Sie verwenden können, länger ist, sind Ihre Anforderungen zu freizügig und Sie müssen zurückgehen und weitere Informationen finden.
Für jüngere, weniger ausgereifte Unternehmen sind die Datenspeicheranforderungen der Bereich mit den meisten Unbekannten. Möglicherweise bauen Sie etwas Neues, das noch niemand anbietet, und daher sind Dinge wie die gesamte adressierbare Marktgröße und die Wachstumsrate möglicherweise relativ unbekannt und schwer zu quantifizieren.
In diesem Fall müssen Sie sich nicht zu früh in der Lebensdauer Ihres neuen Unternehmens durch die Verwendung eines One-Trick-Pony-Datenspeichers einschränken. Ja, irgendwann werden Ihre Daten auf neue und unerwartete Weise wachsen, aber was Sie jetzt brauchen, ist Flexibilität, wenn Sie versuchen, Ihre Marktnische zu finden und zu erfahren, wie das Wachstum Ihrer Daten aussehen wird und welche spezifischen Skalierbarkeitsfunktionen entscheidend werden Ihr Wachstum.
Wenn Sie ein größeres Unternehmen mit einer wachsenden Zahl zahlender Kunden sind, besteht Ihre Aufgabe hier darin, die Optionsliste auf vorzugsweise Datenspeicher zu reduzieren, die Sie bereits haben und pflegen. Wenn Sie bereits viele zahlende Kunden haben, wird das Risiko, neue Datenspeicher hinzuzufügen, mit denen Ihr Team nicht vertraut ist, größer und je nach Kontext der Daten einfach inakzeptabel.
Eine andere Sache, die Sie im Auge behalten sollten, ist, welche Tools bereits für Datenspeicher vorhanden sind und was die Einführung eines neuen für die Vorarbeit bedeuten würde, die Ihr Team leisten muss. Konfigurationsmanagement, Sicherungsskripte, Datenwiederherstellungsskripte, neue Überwachungsprüfungen, neue Dashboards zum Erstellen und Kennenlernen. Die Liste der Betriebskosten eines neuen Datenspeichers ist unabhängig vom Risiko nicht trivial.
Wähle dein Gift
Hier ist also ein schlecht gehütetes Geheimnis, an dem DBAs festhalten. Datenbanken sind alle in irgendetwas schrecklich. Es gibt sogar ein ganzes Theorem darüber. Nicht nur Datenbanken im herkömmlichen Sinne, sondern jede Technologie, die Zustände speichert, wird auf eine Weise schrecklich sein, die einzigartig für die Art und Weise ist, wie Sie sie verwenden.
Das ist einfach eine Tatsache des Lebens, die Sie jetzt besser verinnerlichen sollten. Nein, ich sage nicht, dass Sie es vermeiden sollten, eine dieser Technologien zu verwenden, ich sage, halten Sie Ihre Erwartungen vernünftig und wissen Sie, dass SIE und nur Sie und Ihr Team letztendlich dafür verantwortlich sind, die von Ihnen gemachten Versprechen zu erfüllen.
Was bedeutet das in nicht abstrakten Begriffen? Sobald Sie eine solide Vorstellung davon haben, welche Datenspeicher Teil dessen sein werden, was Sie erstellen, sollten Sie damit beginnen, die Schwächen dieser Datenspeicher zu kennen. Diese Schwächen umfassen, sind aber nicht beschränkt auf:
- Funktioniert dieser Datenspeicher bei Scanabfragen gut?
- Verlässt sich dieser Datenspeicher auf ein Gossip-Protokoll für die Datenreplikation? Wenn ja, wie geht es mit Netzwerkpartitionen um? Wie viele Daten sind in diesem Klatsch enthalten?
- Hat dieser Datenspeicher einen Single Point of Failure?
- Wie reif sind die Fahrer in der Community, um mit ihm zu sprechen, oder müssen Sie Ihre eigenen rollen?
- Diese Liste kann riesig sein
Wenn Sie die Schwächen der potenziellen Lösungen, die noch auf Ihrer Liste stehen, durchdenken, sollten weitere Optionen von der Liste gestrichen werden. Dies ist jetzt Realität, die die hohen Versprechen der Technologie erfüllt.
Tabellenkalkulation und abbacken!
Sobald Ihre Auswahlliste auf eine kleine Handvoll reduziert ist, ist es an der Zeit, sie alle in eine Tabelle zu schreiben und etwas tiefer zu graben. Sie benötigen eine Pro-Spalte und eine Contra-Spalte, und an diesem Punkt müssen Sie einige Zeit in jeder Datenbankdokumentation verbringen, um die wichtigsten Details zur Durchführung bestimmter Aufgaben herauszufinden.
Wenn Sie von diesen Daten eine große Wachstumsrate erwarten, müssen Sie wissen, welche dieser Optionen einfacher zu skalieren ist. Wenn dies eine Funktion ist, die viele Fuzzy-Suchen durchführt, müssen Sie wissen, welcher Datenspeicher mit Scans oder dem Durchsuchen einer großen Anzahl von Zeilen besser umgehen kann und mit welchem Design. Das Ziel in dieser Phase ist es, die Liste auf idealerweise 2 oder 3 Optionen allein durch Dokumentation zu reduzieren, denn wenn diese neue Funktion für den Unternehmenserfolg kritisch genug ist, müssen Sie alle drei bewerten.
Warum Benchmark sagen Sie? Weil keine zwei Unternehmen denselben Datenspeicher auf die gleiche Weise verwenden. Denn manchmal beinhaltet die Dokumentation Vorbehalte, die nur in den Kriegsgeschichten anderer Leute aufgedeckt werden.
Denn niemand außer Ihnen besitzt die Stabilität, Zuverlässigkeit und Vorhersagbarkeit dieses Datenspeichers.
Entwerfen Sie Ihren Benchmark im Voraus. Idealerweise richten Sie eine vollständige Instanz der Datenspeicher in Ihrer Liste mit Spezifikationen auf Produktionsebene ein und produzieren Testdaten, die nicht zu klein sind, um Auslastungstests nutzlos zu machen. Stellen Sie sicher, dass Sie nicht nur Benchmarks für „normale Last“ durchführen, sondern auch einige Fehlerszenarien testen.
Die Hoffnung ist, dass Sie durch den Benchmark alle Vorbehalte herausfinden können, die schwerwiegend genug sind, um Sie dazu zu veranlassen, die Optionsliste jetzt erneut zu überprüfen, anstatt später, wenn der gesamte Code geschrieben ist und Sie sich jetzt mit viel Zeit in der Brandschutzübungsphase befinden und Aufwand für die von Ihnen getroffene Wahl.
Dokumentieren Sie Ihre Wahl
Unabhängig davon, was Sie tun, müssen Sie die Methode, mit der Sie Ihre Wahl getroffen haben, und die Alternativen, die auf dem Weg zu dieser Entscheidung untersucht wurden, dokumentieren und intern verbreiten. Unter der Annahme, dass es einen übergreifenden Architekturentwurf gibt, wie diese neue Funktion und alle ihre Komponenten erstellt werden, stellen Sie sicher, dass Sie einen Abschnitt erstellen, der dem Datenspeicher gewidmet ist, der diese neue Funktion unterstützt, mit Links zu allen Benchmarks, die durchgeführt wurden, um die Entscheidung zu treffen, zu der das Team gekommen ist .
Davon profitieren nicht nur zukünftige Neueinstellungen, sondern auch Ihr Team jetzt. Ein Dokument, das Menschen asynchron lesen und Meinungen entwickeln können, bietet eine Möglichkeit, den Entscheidungsprozess transparent zu halten, ein Gefühl der besten Absicht unter den Teammitgliedern zu entwickeln und Kritik aus unvorhergesehenen Perspektiven einzubringen.
Imbiss
Diese Schritte werden nicht nur zu datengestützten Entscheidungen beim Ausbau des Geschäftsangebots führen, sondern auch zu einer robusten Infrastruktur und einem disziplinierteren Ansatz, wann und wo Sie ein ständig wachsendes Feld von Technologien nutzen, um einen Mehrwert für Ihre Zahlungen zu schaffen Kunden.