Kürzlich hatte ich die Gelegenheit, Oren Eini, CEO und Gründer von Hibernating Rhinos zu interviewen, das RavenDB bereitstellt, ein dokumentenorientiertes Open-Source-NoSQL, das speziell für die .NET/Windows-Plattform entwickelt wurde.
Oren verfügt über mehr als 20 Jahre Erfahrung in der Entwicklungswelt mit einem starken Fokus auf das Microsoft- und .NET-Ökosystem. Oren ist seit 2007 als einer der wertvollsten Fachleute von Microsoft anerkannt und Autor von „DSLs in Boo:Domain Specific Languages in .NET“. Er spricht häufig auf Branchenkonferenzen wie DevTeach, JAOO, QCon, Oredev, NDC, Yow! und Progressive.NET.
Das vollständige Interview können Sie unten lesen:
1. In dieser digitalisierten Welt sind Daten zu einem der wertvollsten Vermögenswerte geworden. Daher ist die Art und Weise, wie Daten gespeichert, organisiert und verarbeitet werden, entscheidend für den Geschäftserfolg. Da Unternehmen mit immer mehr Daten bombardiert werden, werden Datenspeicherung und -analyse immer komplexer. Können Sie uns einige der häufigsten Herausforderungen beim Datenbankmanagement nennen, mit denen Unternehmen heute konfrontiert sind?
Das Hauptproblem ist meiner Meinung nach nur die schiere Größe der Daten. Ich spreche nicht unbedingt von Big Data und der Komplexität der Verwaltung eines Datensatzes von Hunderten von Terabyte. Ich spreche von der Anzahl der Datenbanken und Datensilos, die Sie in einer Organisation haben. Da alles digital ist, haben Sie geschäftskritische Funktionen, die sich in einer Excel-Tabelle auf einem gemeinsam genutzten Laufwerk befinden, und historische Daten von Kundenkäufen auf einem Server, dem sich niemand nähern möchte, aus Angst, das Eigentum anzunehmen.
Allein herauszufinden, was die Organisation als Ganzes weiß, kann eine komplexe Aufgabe sein. Daten, die durch die Ritzen rutschen, sind leider alltäglich.
Auch Versuche, ein zentrales Repository für das gesamte Unternehmen zu schaffen, sind zum Scheitern verurteilt. Verschiedene Teile des Unternehmens haben sehr unterschiedliche Vorstellungen davon, was offensichtliche Dinge sind. Beispielsweise hat die Rechnungsabteilung eine ganz andere Vorstellung davon, was ein Kunde ist, als die Marketingabteilung. Der Versuch, die Daten in eine gemeinsame Form zu bringen, erweist allen einen Bärendienst.
2. Wie gehen wir vor, um diese Herausforderungen zu meistern? Denken Sie, dass die Auswahl einer effektiven Datenbankverwaltungslösung der erste Schritt ist? Und warum?
Der erste Schritt besteht darin, auf organisatorischer Ebene Regeln für Dateneigentum und Verantwortlichkeiten zu definieren. Auf der grundlegendsten Ebene besitzt Billing das Konzept, was auch immer sich ein Kunde in einem überfälligen Zahlungsstatus befindet, und das Marketing besitzt die Interessen eines Kunden. Die Idee besteht nicht darin, Informationssilos in der Organisation zu schaffen, sondern eine ausdrückliche Anerkennung der unterschiedlichen Bedürfnisse zu haben. Sobald dies erledigt ist, können Sie den richtigen Datenfluss in der Organisation definieren.
Die Rechnungsabteilung wird ihre Ansicht eines Kunden dem Rest der Organisation zur Verfügung stellen, behält sich jedoch die Freiheit vor, ihre Form innerhalb der Abteilung zu ändern.
Ich verwende die Rechnungs- und Marketingabteilungen und den Begriff des Kunden als Beispiel, um zuerst über das Geschäft sprechen zu können, was wichtig ist. Um es auf eine etwas technischere Art und Weise zu bringen, wir sprechen von Diensten und Datenflussverträgen. Ich verweise Sie auf das Mandat von Bezos und wie es Amazon verändert hat. Die Idee ist einfach:Anstatt die gesamte Organisation als ein Ganzes zu behandeln, was ab einer bestimmten Größe fast unmöglich ist, behandeln Sie sie als einen Haufen kooperierender Organisationen, die sehr klare Grenzen zwischen sich haben.
Sobald Sie diese Grenzen haben und eine gute Vorstellung vom Datenfluss in der Organisation haben, können Sie Ihre Installateure hinzuziehen und Dinge tun lassen, wie den Datenfluss an einen zentralen Ort zur Analyse umzuleiten.
Solche veröffentlichten Schnittstellen sind sehr hilfreich, wenn es an der Zeit ist, das Verhalten einiger Dinge zu ändern. Solange das externe Verhalten gleich ist, können wir die Art und Weise, wie wir es verarbeiten, frei ändern.
3. In den letzten Jahren haben Unternehmen verschiedene Arten von NoSQL-Datenbanken eingeführt. Da immer sensiblere Daten in NoSQL-Datenbanken gespeichert werden, sind Sicherheitsprobleme zu wachsender Besorgnis geworden. Was halten Sie davon?
Im Großen und Ganzen ist der häufigste Grund für mangelnde Sicherheit in NoSQL-Datenbanken die Fahrlässigkeit des Bedieners. Ich möchte hier zwei unterschiedliche Themen klar voneinander trennen. Wir haben NoSQL-Datenbanken wie Redis, deren Sicherheitsmodell ausdrücklich darauf abzielt, in einer vertrauenswürdigen Umgebung ausgeführt zu werden. Es gibt einige rudimentäre Sicherheitsfunktionen für Redis, aber die allgemeine Annahme ist, dass sie nur als dritte oder vierte Verteidigungslinie dienen sollen.
Von anderen NoSQL-Datenbanken wie MongoDB wird erwartet, dass sie in feindlichen Netzwerken (z. B. dem Internet) ausgeführt werden. Es ist jedoch einfach, MongoDB ohne jegliche Sicherheit einzurichten. Auf den ersten Blick wird MongoDB in einer gesicherten Konfiguration geliefert, sodass es nur auf dem lokalen Computer lauschen kann.
Das allererste, was Sie finden werden, wenn Sie versuchen, eine Remote-Verbindung zu MongoDB herzustellen, ist eine Anleitung, die erklärt, wie Sie den Remote-Zugriff auf MongoDB ohne jegliche Sicherheit aktivieren können.
Bis zu einem gewissen Grad ist dies eine Fahrlässigkeit des Bedieners. Aber angesichts der schieren Anzahl von MongoDB-Datenbanken, die weit offen gelassen werden, glaube ich, dass dies Haarspalterei ist. In China hatte eine offene MongoDB-Datenbank über 200 Millionen Lebensläufe, die nur darauf warteten, dass jemand herumschnüffelt; eine nachlässig eingerichtete Datenbank hat Russlands Hintertüren in über 2.000 Unternehmen aufgedeckt.
Mit Sicherheit bekommen Sie keine zweite Chance.
RavenDB dagegen weigert sich einfach, in einer anfälligen Konfiguration zu laufen. Sie können RavenDB ohne Sicherheit auf dem lokalen Rechner ausführen, aber wenn Sie versuchen, die Datenbank ohne angemessene Sicherheitsvorkehrungen dem Internet zugänglich zu machen, gibt die Datenbank einen Fehler zurück, der erklärt, wie Sie sie richtig einrichten sollten.
Wir füllen die maximale Menge an Lücken aus, indem wir davon ausgehen, dass die meisten Leute das erforderliche Minimum an Arbeit erledigen, und stellen sicher, dass der Endzustand in diesem Fall gut ist, also sind wir für Sie da.
4. Können Sie in Bezug auf RavenDB einige der wichtigsten Funktionen nennen, die den Kunden einen Mehrwert bieten? Wie hebt sich RavenDB in Bezug auf Funktionen und Leistung von anderen Anbietern ab?
RavenDB läuft seit über einem Jahrzehnt in Produktivsystemen. Einige der leistungsstärksten Funktionen haben wir auf unsere ursprüngliche Version zurückdatiert. Die Fähigkeit, dynamisch auf das betriebliche Umfeld zu reagieren, ist die offensichtlichste. RavenDB analysiert kontinuierlich, was vor sich geht (eingehende Anfragen, Serverauslastung usw.) und reagiert darauf, indem es die Ressourcenzuweisung, interne Strukturen usw. ändert. Die Idee ist, dass Ihre Datenbank verwaltet werden kann, anstatt dass ein Vollzeit-DBA Ihre Datenbank betreut seine eigenen Angelegenheiten.
Als wir anfingen, an RavenDB zu arbeiten, wollten wir eine Datenbank, die alle Vorteile einer relationalen Datenbank (schnell, ACID, zuverlässig) aber keine der Nachteile (starres Schema, laufende Wartung, hohe Komplexität) hat.
Als wir anfingen, hatte ich keine Ahnung, wie groß die Aufgabe war. In den letzten 10 Jahren haben wir viel Erfahrung beim Aufbau einer Datenbank gesammelt, die einfach funktioniert, ohne dass Sie viel Aufmerksamkeit darauf richten müssen. Wir haben RavenDB entwickelt, um es uns einfacher zu machen, Dinge mit Fokus auf Leistung zu implementieren. Ein kürzlich durchgeführter Benchmark auf einem Raspberry Pi (25 $, 1 GHz, 1 GB RAM) hat uns mit über 5.000 Schreibvorgängen pro Sekunde getaktet. Auf handelsüblicher Hardware können wir über 100.000 Schreibvorgänge pro Sekunde und über 1.000.000 Lesevorgänge pro Sekunde erreichen.
All das befindet sich auf einem einzigen Knoten, aber RavenDB war von Anfang an eine verteilte Datenbank. Das bedeutet, dass Sie in wenigen Minuten (und natürlich auf sichere Weise) einen Cluster einrichten können und über ein hochverfügbares und robustes System verfügen.
Wir bieten einige einzigartige Funktionen, die anderswo nicht verfügbar sind. ETL ist in RavenDB integriert und wird von unseren Kunden stark genutzt, um einen reichhaltigen Datenfluss zu ermöglichen. Sie müssen keine Lösung aus verschiedenen Teilen zusammennähen, es ist alles in der Box und es funktioniert einfach.
Auf die Abo-Funktion bin ich besonders stolz. Es ermöglicht Ihnen, eine fortlaufende Abfrage durchzuführen. Die Datenbank liefert Ihnen zunächst alle Ergebnisse, die zu Ihrer Suchanfrage passen. Da Sie diese Abfrage immer noch abonniert haben, sendet Ihre Datenbank alle neuen Dokumente, die Ihrer Abfrage entsprechen, sobald sie eingegeben oder aktualisiert werden, um dieser Abfrage zu entsprechen. Auf diese Weise können Sie problemlos robuste Geschäftsprozesse und Backend-Systeme erstellen.
Wir haben viel Mühe darauf verwendet, RavenDB zu einer Datenbank mit mehreren Modellen zu machen, die in der Lage ist, Dokumente, Schlüsselwerte, Binärdaten, verteilte Zähler und Graphabfragen zu verarbeiten.
5. Und schließlich, wie sieht die Zukunft von Datenbankverwaltungssystemen aus? Wie wird es sich in den nächsten 3-4 Jahren verändern?
Sie werden viel mehr Fokus auf Datenbanken mit mehreren Modellen sehen. Anstatt eine dedizierte Lösung für jeden gewünschten Datentyp bereitzustellen und sich mit der komplexen Integration zwischen den einzelnen Teilen auseinanderzusetzen, bewegt sich der Markt zu einer integrierten Lösung, die eine vollständige Suite von Optionen in einer einzigen Box bieten kann. P>
Die Cloud wird weiter an Bedeutung gewinnen, aber ich würde mich nicht vorschnell von On-Premise und verteilten Systemen verabschieden. Wir sehen, dass viele unserer Kunden die Verarbeitung am Rand und auf gelegentlich verbundenen Systemen durchführen. Ich denke, Sie werden eine Verschiebung des Fokus sehen, bei der die Rechenzentren der Vergangenheit in die Cloud verlagert wurden, aber ein Großteil der tatsächlichen Verarbeitung am Edge und auf mobilen Geräten verteilt wurde. Das erfordert eine andere Herangehensweise an die Datenverteilung und das Pushen von Daten in die Cloud und das Abrufen von Daten aus der Cloud.
Es wird viel mehr Wert auf die Art der verteilten Datenverarbeitung gelegt, die einst das exklusive Angebot von High-End-Systemen war.
Es wird sicherlich sehr interessant sein zu sehen, wie sich die Landschaft verändert und wie wir die Tools und Methoden entwickeln, um mit der ständig wachsenden Komplexität und Funktionalität umzugehen.