Heim  >  Artikel  >  Datenbank  >  Eine kurze Diskussion der Datenbankkenntnisse ausgehend von MongoDB

Eine kurze Diskussion der Datenbankkenntnisse ausgehend von MongoDB

不言
不言nach vorne
2019-01-07 10:14:053594Durchsuche

Bei dem Inhalt dieses Artikels handelt es sich um eine kurze Diskussion des Datenbankwissens ausgehend von MongoDB. Ich hoffe, dass es für Freunde hilfreich ist.

Das heutige Thema ist, über Datenbanken von MongoDB zu sprechen. In täglichen Projekten verwenden wir im Allgemeinen MySQL als Datenbank, aber wenn es ein Problem gibt, hören wir oft so etwas wie „Wie wäre es, es durch zu ersetzen?“ „Probieren Sie MongoDB“ klingt, also lassen Sie uns Neulinge beiläufig über Datenbanken sprechen

Das Grundkonzept der Datenbank (Datenbank)

Eine Datenbank ist ein Lager, das Daten gemäß einer bestimmten Datenstruktur organisiert, speichert und verwaltet

  • Die Programme, die wir schreiben, werden alle im Speicher ausgeführt. Sobald das Programm endet oder der Computer ausfällt, gehen alle Daten im Programm verloren, sodass wir einige Programmdaten auf der Tastatur speichern müssen.

  • Datenbank ist eine häufige Wahl für die Persistenz großer Datenmengen, 1. Datei 2. Datenbank

  • Warum Datenbank zum Speichern von Daten verwenden

Die Datenbank ist strukturiert

  • Die Datenbank kann verschiedene Schnittstellen bereitstellen, um die Datenverarbeitung (Hinzufügen, Löschen, Ändern und Abfragen) schnell und bequem zu gestalten

  • Verschiedene Sprachen (PHP, JSP, .net..) bieten vollständige Schnittstellen

  • Datenbankpopularität (Quelle: https://db- engine.com /en/ranking)

Aus den statistischen Daten geht hervor, dass das beliebteste DBMS „relational“ ist und ganz oben liegt fünf Mit vier Plätzen wurden die Daten auf die Top Ten erweitert, und relationale Datenbanken belegen ebenfalls sieben Plätze. Eine kurze Diskussion der Datenbankkenntnisse ausgehend von MongoDBWarum bevorzugen die meisten Programmierer die Verwendung von MySQL?

Open Source, nur Unternehmen müssen eine Lizenz erwerben

  • Breites Einsatzspektrum: Kann auf den meisten Plattformen wie Linux, Windows, Ubuntu, Mac OS 🎜>

    Geeignet für PHP (PHP ist das beste der Welt) und kann auch mit anderen Programmiersprachen wie JAVA, PERL, C, C++ usw. verwendet werden.

  • Geeignet für kleine und große Anwendungen

  • Warum ist MongoDB immer noch in den Top 5, wenn relationale Datenbanken so gut sind? die Mängel von

  • relationalen Datenbanken und MySQL Was ist das?
  • Skalierbarkeit: Das Hinzufügen weiterer Daten zu einem bestimmten Datensatz kann eine Skalierung auf mehrere Tabellen, Spalten und Zeilen erfordern, und da Daten Zeile für Zeile gespeichert werden, auch wenn nur für eine der Spalten Im Betrieb liest die relationale Datenbank auch die gesamte Datenzeile vom Speichergerät in den Speicher, was zu höheren I/O-Vorgängen führt
  • Ein Fehler, der sich aus dem ersten ergibt, besteht darin, dass dies nicht möglich ist gespeichert werden Datenstruktur
  • Geschwindigkeit: Aufgrund des Problems der Datenstruktur dauert die Analyse der Daten eine gewisse Zeit. Außerdem können nur Teilstring-Matching-Abfragen durchgeführt werden Die Daten in der Tabelle werden allmählich größer, und der Abgleich ähnlicher Abfragen erfolgt sehr langsam, selbst wenn ein Index vorhanden ist.

Bevor Sie ihn verwenden, müssen Sie ein zu definierendes Schema schreiben Die Tabelle und das Tabellenstrukturschema lassen sich bei Bedarf nur schwer erweitern. Das Ändern der Tabellenstruktur erfordert die Ausführung von DDL (Datendefinitionssprache) und die Anweisungsänderung. Während der Änderung wird die Tabelle gesperrt 🎜>Was macht MongoDB so attraktiv?

  • Flexibilität: Die Dokumentstruktur entspricht besser der Art und Weise, wie Entwickler in ihren jeweiligen Programmiersprachen programmieren, die klar und in Schlüssel-Wert-Paaren strukturiert sind, sodass sie jederzeit problemlos hinzugefügt werden können Zeit und Bearbeitung von Daten/Dokumenten

  • Unterstützt verschiedene Abfragen: Felder, Ausdrücke, Bereichsabfragen, JavaScript-Funktionen usw.

  • Schnellere Bearbeitungszeit: Da verwandte Daten, die in mehreren Tabellen in einer MySQL-Datenbank gespeichert sind, im selben Dokument in MongoDB gespeichert werden

  • Es gibt kein striktes Schema: Das Dokument kann erstellt werden, bevor die Dokumentstruktur definiert ist

Die Funktionen von MongoDB machen es besser für die Verarbeitung großer Datenmengen geeignet

  • Lassen Sie uns die beiden zuerst vergleichen und dann im Detail erklären

  • MySQL MongoDB
    版本 1995- 2018(mysql 8.0) 2009
    结构 关系型 非关系型
    灵活性 弱,需要在使用之前先定义数据库模式 与MySQL相比具有相当大的灵活性 - 定义不需要的模式
    可扩展性 可以,但是比较困难,MySQL数据库可以垂直扩展,可以向单个服务器添加更多资源 比MySQL更具可扩展性。MongoDB可水平扩展,可以添加更多服务器来扩展您的数据库
    需要DB管理员 否 - 开发人员和管理员都可以使用
    适用场景 会计师事务所和银行,以及需要具有清晰架构的结构化数据的其他公司。非常适合具有或多或少固定要求的企业(twitter例外) 具有实时数据,物联网,内容管理,移动应用,社交网络,面向大数据/网络分析的系统以及不需要具有清晰架构或其架构的结构化数据的业务的理想选择不断变化

    Flexibilität

    Lassen Sie uns zunächst über Flexibilität sprechen. In einem Einkaufszentrum gibt es beispielsweise viele Produkte, und diese Produkte haben ihre eigenen einzigartigen Eigenschaften, wie z. B. die Bildschirmgröße und die Bildschirmauflösung , und Klimaanlagen haben Attribute wie Kühltyp und Außengerätegeräusch. Es ist sehr schwierig, sie in die Produkttabelle einzufügen, was für Programmierer zusätzliche Arbeit beim Entwerfen von Datentabellen bedeutet, und MongoDB verfügt nicht über Schema (Schema, Datenmodell). . Es wird sehr einfach erscheinen.

    Die Flexibilität von MongoDB spiegelt sich auch in unstrukturierten und halbstrukturierten Daten wider. MongoDB bietet Volltextindizierung und unterstützt auch Geolocation-Abfragen und -Indizierung. Beispielsweise möchte ein Benutzer wissen, wo es im Umkreis von fünf Kilometern öffentliche Toiletten gibt. Dabei handelt es sich um eine „Geografische Reichweitenabfrage“. Dann sucht er nach dem nächsten Fahrrad. Mobike verwendet MongoDB, um eine solche „Entfernungssortierungsabfrage“ durchzuführen.

    Skalierbarkeit

    Die Daten können nicht auf einer Maschine platziert werden, daher ist Sharding erforderlich, um sie auf mehreren Maschinen zu platzieren. Sharding ist seit vielen Jahren eine native Funktion von MongoDB und ist effizient in andere MongoDB-Funktionen integriert.

    Zum Beispiel wird einer komplexen Aggregationsabfrage in einem Shard-Cluster automatisch die Ausführung auf mehreren Knoten basierend auf dem Shard-Schlüssel (Shard-Schlüssel) zugewiesen, und die Rechenaufgaben werden ebenfalls auf die Datenknoten verlagert Aggregieren Sie schließlich die Ergebnisse aller Knoten auf einem Knoten. Sharding kann auch automatisch Daten zwischen Knoten migrieren, um deren Datenvolumen auszugleichen. Gleichzeitig kann in Kombination mit der Replikationstechnologie (Replikasatz) von MongoDB Datenverlust effektiv vermieden werden (während des Tests wurde festgestellt, dass Mongo automatisch alle Maschinenadressen des Replikatsatzes erkennt. Wenn ein Mongo gestoppt wird, wird der verbundene Server wird kein Fehler melden)

    Verteilung mithilfe einer Sharded-Cluster-Struktur in MongoDB:

    Eine kurze Diskussion der Datenbankkenntnisse ausgehend von MongoDB

    Nachteile von MongoDB

    • Wie wir alle wissen, nimmt MongoDB viel Serverspeicher ein

    • MongoDB ist etwas weniger sicher

    • Eine Datei, die ist zu frei und flexibel. Datenfehler durch Speicherformat (...)

    • Die Größe eines einzelnen Dokuments ist auf 16 M begrenzt

    • Für Array-Typen sind Datenoperationen nicht umfangreich genug

    Wann sollten wir MongoDB wählen?

    Nachdem wir so viel Mist gesagt haben, ist das Wichtigste, wann wir uns für die Verwendung von MongoDB entscheiden

    • Protokollsystem: Die während des Betriebs des Systems generierten Protokollinformationen sind im Allgemeinen vielfältig, haben einen großen Umfang und der Inhalt ist chaotisch. Diese unordentlichen Protokolle können über MongoDB gesammelt und verwaltet werden.

    • Geografische Standortspeicherung MongoDB unterstützt geografische Standorte und zweidimensionale räumliche Indizes und kann Längen- und Breitengrade speichern, sodass zwei Punkte schnell erfasst werden können berechnet. Entfernung untereinander und andere Standortinformationen

    • Der Datenumfang wächst schnell (z. B. die bereitgestellten Aufmerksamkeitsinformationen)

    • Muss Stellen Sie eine hochverfügbare Umgebung sicher

    • Anforderungen an die Dateispeicherung

    • Andere Szenarien wie Spieleentwicklung, Benutzerinformationen, Ausrüstung, Punkte usw. können Darüber hinaus können Logistiksysteme, soziale Systeme und sogar Internet-of-Things-Systeme gespeichert werden und MongoDB zusammen vergleichen und auswählen? Das liegt daran, dass es sich um verschiedene Arten von Datenbanken handelt. Von der Entwicklung der Datenbanken bis zur Gegenwart werden sie grob in drei Typen unterteilt:

    • RDBMS (relationale Datenbank)

    Das erste, was wir erwähnen müssen, ist die relationale Datenbank, zu der die MySQL-Datenbank gehört.

    Eigenschaften relationaler Datenbanken:

    Zum Beispiel MySql, SQL Server Oracle usw.

      Funktionen werden dargestellt durch Tabellen Stellen Sie eine Verbindung her
    • Verwenden Sie grundsätzlich die SQL-Sprache, um die Datenbank zu verwalten
    • Nosql (nicht relationale Datenbank)
    • NoSql, Außerdem handelt es sich um den Datenbanktyp von MongoDB, der aus einem Meetup in San Francisco im Jahr 2009 hervorgegangen ist, bei dem eine Beschreibung der NoSql-Technologie erschien:

    • Open Source, verteilte, nicht relationale Datenbanken

    Funktionen nicht relationaler Datenbanken: Es gibt kein Konzept von Zeilen und Spalten und die JSON-Klasse wird zum Speichern von Daten verwendet

      Eine Sammlung entspricht „Tabelle“, ein Dokument entspricht „Zeile“
    • Standardisierung und Nichtstandardisierung Reibung.
    • Standardisierung begrenzt die Innovation, nicht standardmäßige Wörter können nicht vereinheitlicht werden
    • NoSql wurde als nicht-relational interpretiert, als es zum ersten Mal vorgeschlagen wurde, und zwar dort ist auch No-SQL-Mittel, aber mit der rasanten Entwicklung in den letzten Jahren wurde SQL nach und nach in einem breiteren Spektrum von Bereichen angewendet. Daher sind SQL-Funktionen auch in der NoSql-Technologie eingeführt worden System, wodurch sich das Konzept von Not-Only-SQL entwickelte
    • Die meisten NoSql-Technologien haben die Unterstützung für ACID-Semantik und komplexe relationale Abfragen geschwächt, einfachere oder professionellere Datenmodelle eingeführt und Lese- und Schreibpfade optimiert Kann gegen höhere Lese- und Schreibleistung ausgetauscht werden

    • NewSql

    Laut Definition im Wiki

    NewSQL ist eine Klasse moderner relationaler Datenbankverwaltungssysteme, die darauf abzielen, die gleiche skalierbare Leistung von NoSQL-Systemen für die Online-Transaktionsverarbeitung bereitzustellen ( OLTP) Lese-/Schreib-Workloads unter Beibehaltung der ACID-Garantien eines herkömmlichen Datenbanksystems.

    NewSql kann als Produkt der Kombination von traditionellem RDBMS und NoSql-Technologie bezeichnet werden verstanden als verteilt Es ist eine Grundvoraussetzung dafür, dass eine relationale Datenbank verteilte Transaktionen unterstützt. NoSQL und NewSQL weisen viele Überschneidungen in ihren Technologie-Stacks auf, es gibt jedoch offensichtliche Unterschiede darin, ob sie relationale Modelle unterstützen und wie gut sie komplexe Transaktionen unterstützen. Da ich nicht viel darüber weiß, werde ich hier nicht viel sagen.

    Hier werde ich einfach die Arten von Datenbanken vorstellen, die zu NoSql, NewSql oder RDBMS gehören. Schließlich verbessert sich die Technologie jetzt auch ständig nosql-Funktionen:

    Eine kurze Diskussion der Datenbankkenntnisse ausgehend von MongoDB

    Manche Leute fragen sich vielleicht, warum Transaktionen bei der Einführung der Mängel von MongoDB nicht erwähnt werden. Dies liegt daran, dass in der MongoDB 4.0-Version Im Sommer 2018 führte MongoDB Transaktionsfunktionen ein und unterstützte ACID-Funktionen für mehrere Dokumente, z. B. die Verwendung der Mongo-Shell für Transaktionsvorgänge

    Eine kurze Diskussion der Datenbankkenntnisse ausgehend von MongoDB

    Spezifische Stresstestdaten wird später hinzugefügt

Das obige ist der detaillierte Inhalt vonEine kurze Diskussion der Datenbankkenntnisse ausgehend von MongoDB. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen
Vorheriger Artikel:Was bedeutet MariaDB?Nächster Artikel:Was bedeutet MariaDB?