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
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. Warum bevorzugen die meisten Programmierer die Verwendung von MySQL?
Open Source, nur Unternehmen müssen eine Lizenz erwerbenGeeignet 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
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
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.
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:
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
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:
Eigenschaften relationaler Datenbanken:
Zum Beispiel MySql, SQL Server Oracle usw.
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:
Funktionen nicht relationaler Datenbanken: Es gibt kein Konzept von Zeilen und Spalten und die JSON-Klasse wird zum Speichern von Daten verwendet
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
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:
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
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!