MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Die beliebtesten von ClusterControl unterstützten NoSQL-Datenbanken

NoSQL ("nicht nur SQL") ist ein Ansatz für das Datenbankdesign, der das Speichern und Abfragen von Daten außerhalb der traditionellen Strukturen relationaler Datenbanken ermöglicht. Es wurde hauptsächlich für den Umgang mit unstrukturierten Daten entwickelt, die aus zahlreichen Quellen wie Dokumenten, Audio, Video, sozialen Netzwerken usw. generiert werden. NoSQL-Datenbanken eignen sich am besten für moderne Anwendungen, bei denen sich Datenmodelle weiterentwickeln und Skalierbarkeit unerlässlich ist. Diese Datenbank hat in den letzten Jahren an Popularität gewonnen, da Unternehmen heute mehr denn je mit unstrukturierten Daten umgehen müssen. Dieses Modell speichert Daten anders als herkömmliche relationale Tabellen, damit die zugehörigen Daten in einer einzigen Datenstruktur gehalten werden können. Eine NoSQL-Datenbank kann in vier Kategorien unterteilt werden:

  • Dokumentspeicher

  • Schlüsselwert-Datenbanken

  • Wide-column Stores

  • Grafikdatenbanken

NoSQL-Datenbanken werden häufig in agilen Projekten eingesetzt, da sie flexible Datenmodelle bieten. Dadurch können sich Entwickler auf die Geschäftslogik und Algorithmen konzentrieren, anstatt sich mit Schemaaktualisierungen zu befassen. Wenn Sie davon ausgehen, dass das Datenmodell Ihrer Anwendung flexibel bleiben muss, um Änderungen im Laufe der Zeit zu berücksichtigen, kann der flexible Schemaansatz von NoSQL-Datenbanken für Ihre Anforderungen geeignet sein.

Laut db-engines sind die beiden besten NoSQL-Datenbanken (Juli 2021) MongoDB (Rang:5) und Redis (Rang:6). Interessanterweise existierten diese NoSQL-Datenbanken vor 12 Jahren noch nicht. Wie sie entstanden sind und an Attraktivität und Popularität gewonnen haben und wie sie die Landschaft des Datenbankverwaltungssystems verändert haben, ist die Hauptaussage dieses Blogbeitrags.

MongoDB

MongoDB ist eine dokumentenorientierte Open-Source-Datenbank mit der Erstveröffentlichung im Februar 2009. Dokumentendatenbanken stehen in starkem Kontrast zu den traditionellen relationalen Datenbanken. Sie speichern alle Informationen für ein bestimmtes Objekt in einer einzigen Instanz in der Datenbank, und jedes gespeicherte Objekt kann sich von jedem anderen unterscheiden. Dadurch wird die objektrelationale Zuordnung überflüssig und eine schemalose Struktur ermöglicht, eine Funktion, bei der Anwendungsentwickler aufgrund ihres flexiblen Datenmodells die Agilität haben, sich schnell weiterzuentwickeln. Anstatt eine Anwendung an Schemaanforderungen anzupassen, schreiben Entwickler die Anwendung und das Schema folgt.

MongoDB ist aufgrund seiner Flexibilität, einfachen Erlernbarkeit und niedrigeren Betriebskosten für den Einstieg sehr beliebt. Anwendungsentwickler lieben MongoDB, weil sie das Datenmodell unterwegs ändern können und weil MongoDB JSON-Dokumente verwendet, um Daten aufzuzeichnen. JSON ist allgegenwärtig und kann als De-facto-Format für das Senden von umfangreichen Daten zwischen Webanwendungen und Endpunkten angesehen werden. Das einfache Design und die Flexibilität machen es leicht zu lesen und zu verstehen und in den meisten Fällen einfach in der Programmiersprache Ihrer Wahl zu manipulieren.

MongoDB entstand dank 10gen (bevor es in MongoDB Inc. umbenannt wurde), begann 2007 mit der Entwicklung und brachte im Februar 2009 seine erste GA-Version heraus. Seitdem hat sich MongoDB schnell und weiterentwickelt gilt als eines der spannendsten Datenbankprojekte für moderne Anwendungen. Laut StackOverflow Developer Survey 2020 bleibt MongoDB die Datenbanktechnologie, die Entwickler am meisten lernen möchten. Zum Zeitpunkt der Erstellung dieses Artikels haben sie gerade Version 5.0 (13. Juli 2021) veröffentlicht und verfügen über viele bemerkenswerte Funktionen wie Live-Resharding, Unterstützung nativer Zeitreihendaten und versionierte API, die für Multi-Cloud-Umgebungen geeignet sind.

Ein weiteres wichtiges Merkmal von MongoDB sind die integrierten Hochverfügbarkeitsfunktionen wie Replikation, Replikatsatz und Sharding. Es ist horizontal skalierbar, was dazu beiträgt, die Arbeitsbelastung zu reduzieren und Ihr Unternehmen problemlos zu skalieren. Es bietet Replikation über ein selbst entwickeltes Konsensprotokoll, das von Raft inspiriert ist, und kann Daten über seinen Abfragerouter namens Mongos über Shards verteilen. Sie können ClusterControl verwenden, um ein MongoDB-Replikatset und eine Sharding-Cluster-Einrichtung ganz einfach bereitzustellen.

MongoDB erregte die öffentliche Aufmerksamkeit und Kritik aufgrund seiner Schwachstelle in der Standard-Sicherheitskonfiguration von MongoDB, die es jedem ermöglicht, vollen Zugriff auf die Datenbank zu haben. Daten von Zehntausenden von MongoDB-Installationen wurden gestohlen. Darüber hinaus wurden viele MongoDB-Server für Lösegeld gehalten. Diese Offenlegung hat uns dazu veranlasst, eine Handvoll sicherheitsbezogener Blog-Beiträge zu MongoDB zu schreiben, wie z. Folglich hat MongoDB die Aspekte der Standardkonfiguration verbessert, um mit MongoDB 3 und höher sicherer zu sein.

Einige große Unternehmen verlassen sich stark auf MongoDB als Datenspeicher, wie Forbes, Toyota, SAP, Cisco, eBay und Adobe. MongoDB gilt als wegweisend in der Datenbankwelt und wird zu einer der wichtigsten Datenbankplattformen im Internetzeitalter.

ClusterControl unterstützt MongoDB seit der Version Juli 2013 (v1.2.3) und wurde seitdem kontinuierlich verbessert. ClusterControl unterstützte damals sogar TokuMX (MongoDB mit Tokuteks fraktalem Baum), bevor es in MongoDB 3 aufgrund der Kerndesignänderungen des Upstreams veraltet war. In den jüngsten bemerkenswerten Verbesserungen führt ClusterControl die Unterstützung für Percona Backup for MongoDB ein, eine verteilte Lösung mit geringen Auswirkungen zum Erreichen konsistenter Backups von MongoDB-Shard-Clustern und Replikatsätzen. Das Percona Backup for MongoDB-Projekt wird geerbt und ersetzt mongodb_consistent_backup, das nicht mehr aktiv entwickelt oder unterstützt wird.

Redis

Redis ist eine weitere beliebte NoSQL-Datenbanktechnologie, die sich auf häufigen Hochgeschwindigkeitszugriff auf dieselben Datenblöcke konzentriert, selbst wenn diese Datenblöcke groß sind. Im Mai 2019 veröffentlichte Salvatore Sanfilllippo die erste Version von Redis, auch bekannt als Remote Dictionary Server, und hat aufgrund seiner reichhaltigeren Funktionen gegenüber der damals bereits etablierten Open-Source-In-Memory-Datenbanklösung namens Memcached alle Aufmerksamkeit auf sich gezogen.

Redis ist aufgrund der In-Memory-Datenstruktur und der Tatsache, dass es in der Sprache C geschrieben wurde, superschnell (das ist einer der Gründe, warum Memcached in C neu geschrieben wurde). Aufgrund der hohen Leistung haben sich Entwickler für das Daten-Caching an Redis gewandt, wenn das Volumen der Lese- und Schreibvorgänge die Möglichkeiten der herkömmlichen Datenbanken übersteigt. Daten, auf die häufig zugegriffen wird, können zwischengespeichert und von In-Memory-Schlüsselwert-Datenspeichern bereitgestellt werden, wodurch Lese- und Schreibvorgänge auf langsameren festplattenbasierten Systemen mit Schwerpunkt auf dauerhafter Speicherung minimiert werden.

Traditionell sind Datenbankverwaltungssysteme eher darauf ausgelegt, robuste Datenfunktionalitäten bereitzustellen, als Geschwindigkeit im großen Maßstab. Der Anwendungscache wird häufig verwendet, um Kopien von Nachschlagetabellen und die Antworten auf teure Abfragen vom DBMS zu speichern, um sowohl die Leistung der Anwendung zu verbessern als auch die Belastung der Datenquelle zu verringern. Manchmal erfordert der Workflow einer Anwendung die Generierung ressourcenintensiver Ergebnisse. Nachdem diese Ergebnisse erhalten wurden, gibt es Fälle, in denen die Ergebnisse später wiederverwendet werden könnten, z. B. bei der Durchführung von Teilaggregationen. Der Cache fungiert als ideales Zwischenmedium, um solche Ergebnisse zwischen Anfragen aufzubewahren. Hier glänzt Redis.

Redis hat sich von einem sehr schnellen einfachen Schlüsselwertspeicher zu einem dauerhaften Datenspeicher entwickelt und wird als Messaging-Broker und Warteschlangensystem verwendet. Es ermöglicht echte Zustandslosigkeit für Anwendungsprozesse und reduziert gleichzeitig die Duplizierung von Daten oder Anfragen an externe Datenquellen. Laut StackOverflow Developer Survey 2020 bleibt Redis an der Spitze der Datenbanktechnologie, an deren Weiterentwicklung Entwickler Interesse bekundet haben. Zum Zeitpunkt der Erstellung dieses Artikels ist Redis 6 die neueste Version mit einer neuen, ausgeklügelteren benutzerbasierten ACL-Implementierung, integrierter SSL-Verschlüsselung des Datenverkehrs und Multithread-E/A, obwohl der Redis-Prozess immer noch Singlethread ist .

Die Redis-Bereitstellung wird in ClusterControl 1.9.0 unterstützt, indem unser neues ClusterControl-GUI-Paket der nächsten Generation verwendet wird, das in einer separaten Installation verfügbar ist. Zum Zeitpunkt des Verfassens dieses Artikels bezeichnen wir es als ClusterControl v2, gekennzeichnet mit Technology Preview, das nur die Bereitstellung einer Redis-Replikation mit bis zu 5 Knoten mit Redis Sentinel mit Sicherungsverwaltung von AOF und RDB unterstützt. Wenn Sie daran interessiert sind, lesen Sie bitte diese Anleitung zur Installation.

Zusammenfassung

MongoDB und Redis sind derzeit zweifellos zwei der besten NoSQL-Datenbanklösungen auf dem Markt und es wird angenommen, dass sie ihre Position in der Top-10-Datenbank-Rangliste für eine lange Zeit halten werden. Aus diesem Grund unterstützt ClusterControl beide Datenbanktechnologien.