suchen
HeimDatenbankMySQL-TutorialMongoDB选型及注意问题点

MongoDB选型及注意问题点

Jun 07, 2016 pm 03:54 PM
mongodbnosqlBeachten选型问题

NoSQL和RDMS的争论,一直都是沸沸扬扬,可是站在我们普通的企业应用角度,应该注意些什么呢?本文将针对该问题进行讨论。 1、传统的RDMS在大型的系统应用中,经常成为系统瓶颈。应运而生的NoSQL,很大程度的弥补了RDMS的弊端,无形中给我们带来了更多的希望

NoSQL和RDMS的争论,一直都是沸沸扬扬,可是站在我们普通的企业应用角度,应该注意些什么呢?本文将针对该问题进行讨论。

1、传统的RDMS在大型的系统应用中,经常成为系统瓶颈。应运而生的NoSQL,很大程度的弥补了RDMS的弊端,无形中给我们带来了更多的希望。作为技术选型的决策者,必须有一个清醒的认识:明确系统的应用场景,清楚需求;辩证的看待RDMS和NoSQL的关系,充分发挥各自优势,最大限度的为系统服务。

2、本节不过多的介绍RDMS,针对最为流行的NoSQL--MongoDB,介绍其使用场景

2.1、Web应用程序。文档能表示丰富的数据结构,建模相同数据库所需的集合数量通常会比使用完全正规化关系型数据库的数据表数量要少。动态查询和二级索引能让你轻松的实现SQL开发者所熟悉的大多数查询。作为一个成长中的Web应用程序,MongoDB提供了清晰的扩展路线。

2.2、敏捷开发。MongoDB没有固定的Schema,所有花在提交、沟通和实施Schema变更的时间都生下来了。

2.3、分析和日志。MongoDB的目标原子更新和固定集合。

2.4、缓存

2.5、可变Schema

3、MongoDB存在的弊端及局限性

3.1、MongoDB应该运行于64位机器上。32为系统只能对4GB内存做寻址。

3.2、数据占用的内存会自动按需分配。这样一来在共享环境中运行数据库会变得更加麻烦。所以最好能让MongoDB运行在一台专门的服务器上。

3.3、运行带复制功能的MongoDB是十分重要的,尤其是没有开启Journaling日志的时候。

4、MongoDB的最佳实践

4.1、总是使用Replica Sets。Replica Sets通过自动failover机制提供MongoDB的高可用性。在应用中,如primary机器出现故障,那么某一台secondary机器就会通过选举成为新的primary,整个集群仍然能够提供正常服务。如果在开发者自己的环境中同步机制的代价过高,建议其使用一些云存储服务。

4.2、保持版本更新。保持版本更新很重要,10gen在每个版本中都会修复一些问题,使MongoDB的运行更出色。比如在2.0.x版本中,MongoDB的存储性能和并发性能就有极大提高,同时还包括索引优化、Bug修复以及compaction命令等一系列改进,以便开发者更方便地扩展其集群。

4.3、不要在32位系统上使用MongoDB。在32位机器上,MongoDB只能存储约2.5GB的数据。因为MongoDB在内部实现上是通过内存映射的方式来提高性能的,所以在32位机器上其内存地址本身就限制了数据容量。在Engine Yard云服务中使用MongoDB,请使用Large instance来部署MongoDB。在实际产品中,官方也只支持64位的MongoDB。

4.4、默认开启journaling日志。MongoDB支持在写操作前记录journaling日志来提高节点的可用性。强烈建议在部署时开启journaling日志。注意数据文件的存放位置。在使用时,请确认你的数据文件处于一个持久化存储中(比如/data/mongodb目录)。也可以使用非持久化的设备进行数据文件存储,不过你最好小心再小心,因为这可能会对你的集群架构造成影响。推荐使用EBS进行MongoDB的数据文件存储。热数据最好能放在内存中。能够保持热数据(以及索引数据)一直放在内存中,这一点非常重要,它将对整个集群的性能造成影响。如果通过监控发现page fault的数量增加,那么很可能就是热数据量超出了可用内存大小。当热数据量超出了可用内存量时,通常有两种解决方法:增加内存和数据分片。建议先增加内存,再考虑通过数据分片的方式解决。

4.5、压力过大升级配置。如果机器负载达到65%,那么应该考虑升级机器配置。在日常使用中,最好保持负载低于65%。同时这也对数据恢复和纵向扩展有影响。当需要升级配置时,AWS建议按下面的顺序来做:Large、Extra Large、High Memory 4XL。而在更高配置的机器上,网络延迟也会更小。

4.6、分片需谨慎。分片策略会受数据访问特点的影响,所以在进行数据分片前,最好先理清楚数据的访问特点,并想明白是否确实需要分片。分片字段对性能的影响非常大,所以选择一个好的分片字段是非常重要的。Config节点对整个集群的健康运行是至关重要的,所以一旦你选择使用分片机制,就一定要保证有3个Config节点。永远不要删除Config节点的数据,要确保频繁地对这些数据进行日常备份。如果可能,通过域名来指定节点的地址,比如在/etc/hosts文件中指定相应的本地域名,这能让你在集群配置上更灵活。Config节点的压力很小,但还需运行在64位机器上。千万不要把3个Config节点都放在同一台机器上!

4.7、使用Mongo MMS图形化监控服务。如果你还没有完善的MongoDB监控,可以尝试Mongo MMS。Mongo MMS是10gen官方发布的一个监控服务,可以将集群的各项健康指标以图形化的方式汇总展示。

5、MongoDB都有哪些企业在使用

5.1、官网上列出了很多国外的企业,MongoDB的使用场景和用户颇为广泛,包括SAP、EA、迪士尼、ebay、Facebook等。

5.2、在国内,MongoDB不仅在淘宝、大众点评等互联网业务中使用,还在一些国内银行和汽车造业中使用。

6、MongoDB支持的数据结构

6.1、MongoDB存储的数据结构类型为BSON,是JSon的一个丰富数据类型的扩展,采用二进制编码存储

6.2、MongoDB支持数据类型

* string
* integer
* double
* date
* byte array (binary data)
* boolean (true and false)
* null
* BSON object

7、丰富的官方支持及方便管理的可视化客户端

7.1、官方地址:http://www.mongodb.org

7.2、可视化客户端官方地址:http://www.mongovue.com

7.3、可视化客户端的破解方法:删除注册表中:[HKEY_CURRENT_USER\Software\Classes\CLSID\{B1159E65-821C3-21C5-CE21-34A484D54444}\4FF78130]下所有的值。

Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Erläutern Sie den InnoDB -Pufferpool und seine Bedeutung für die Leistung.Erläutern Sie den InnoDB -Pufferpool und seine Bedeutung für die Leistung.Apr 19, 2025 am 12:24 AM

InnoDbbufferpool reduziert die Scheiben -E/A durch Zwischenspeicherung von Daten und Indizieren von Seiten und Verbesserung der Datenbankleistung. Das Arbeitsprinzip umfasst: 1. Daten lesen: Daten von Bufferpool lesen; 2. Daten schreiben: Schreiben Sie nach der Änderung der Daten an Bufferpool und aktualisieren Sie sie regelmäßig auf Festplatte. 3. Cache -Management: Verwenden Sie den LRU -Algorithmus, um Cache -Seiten zu verwalten. 4. Lesemechanismus: Last benachbarte Datenseiten im Voraus. Durch die Größe des Bufferpool und die Verwendung mehrerer Instanzen kann die Datenbankleistung optimiert werden.

MySQL gegen andere Programmiersprachen: Ein VergleichMySQL gegen andere Programmiersprachen: Ein VergleichApr 19, 2025 am 12:22 AM

Im Vergleich zu anderen Programmiersprachen wird MySQL hauptsächlich zum Speichern und Verwalten von Daten verwendet, während andere Sprachen wie Python, Java und C für die logische Verarbeitung und Anwendungsentwicklung verwendet werden. MySQL ist bekannt für seine hohe Leistung, Skalierbarkeit und plattformübergreifende Unterstützung, die für Datenverwaltungsanforderungen geeignet sind, während andere Sprachen in ihren jeweiligen Bereichen wie Datenanalysen, Unternehmensanwendungen und Systemprogramme Vorteile haben.

Lernen von MySQL: Eine Schritt-für-Schritt-Anleitung für neue BenutzerLernen von MySQL: Eine Schritt-für-Schritt-Anleitung für neue BenutzerApr 19, 2025 am 12:19 AM

MySQL ist es wert, gelernt zu werden, da es sich um ein leistungsstarkes Open -Source -Datenbankverwaltungssystem handelt, das für Datenspeicher, Verwaltung und Analyse geeignet ist. 1) MySQL ist eine relationale Datenbank, die SQL zum Betrieb von Daten verwendet und für die strukturierte Datenverwaltung geeignet ist. 2) Die SQL -Sprache ist der Schlüssel zur Interaktion mit MySQL und unterstützt CRUD -Operationen. 3) Das Arbeitsprinzip von MySQL umfasst Client/Server -Architektur, Speicher -Engine und Abfrageoptimierer. 4) Die grundlegende Nutzung umfasst das Erstellen von Datenbanken und Tabellen, und die erweiterte Verwendung umfasst das Verbinden von Tabellen mit dem Join. 5) Zu den häufigen Fehlern gehören Syntaxfehler und Erlaubnisprobleme, und die Debugging -Fähigkeiten umfassen die Überprüfung der Syntax und die Verwendung von Erklärungskenntnissen. 6) Die Leistungsoptimierung umfasst die Verwendung von Indizes, die Optimierung von SQL -Anweisungen und die regelmäßige Wartung von Datenbanken.

MySQL: Wesentliche Fähigkeiten für Anfänger zu meisternMySQL: Wesentliche Fähigkeiten für Anfänger zu meisternApr 18, 2025 am 12:24 AM

MySQL ist für Anfänger geeignet, um Datenbankfähigkeiten zu erlernen. 1. Installieren Sie MySQL Server- und Client -Tools. 2. Verstehen Sie grundlegende SQL -Abfragen, wie z. B. SELECT. 3.. Stammdatenoperationen: Daten erstellen, Daten einfügen, aktualisieren und löschen. 4. Lernen Sie fortgeschrittene Fähigkeiten: Unterabfragen und Fensterfunktionen. 5. Debugging und Optimierung: Überprüfen Sie die Syntax, verwenden Sie Indizes, vermeiden Sie die Auswahl*und verwenden Sie die Grenze.

MySQL: Strukturierte Daten und relationale DatenbankenMySQL: Strukturierte Daten und relationale DatenbankenApr 18, 2025 am 12:22 AM

MySQL verwaltet strukturierte Daten effizient durch Tabellenstruktur und SQL-Abfrage und implementiert Inter-Tisch-Beziehungen durch Fremdschlüssel. 1. Definieren Sie beim Erstellen einer Tabelle das Datenformat und das Typ. 2. Verwenden Sie fremde Schlüssel, um Beziehungen zwischen Tabellen aufzubauen. 3.. Verbessern Sie die Leistung durch Indexierung und Abfrageoptimierung. 4. regelmäßig Sicherung und Überwachung von Datenbanken, um die Datensicherheit und die Leistungsoptimierung der Daten zu gewährleisten.

MySQL: Schlüsselmerkmale und Funktionen erklärtMySQL: Schlüsselmerkmale und Funktionen erklärtApr 18, 2025 am 12:17 AM

MySQL ist ein Open Source Relational Database Management -System, das in der Webentwicklung häufig verwendet wird. Zu den wichtigsten Funktionen gehören: 1. unterstützt mehrere Speichermotoren wie InnoDB und MyISAM, geeignet für verschiedene Szenarien; 2. Bietet Master-Slave-Replikationsfunktionen, um Lastausgleich und Datensicherung zu erleichtern. 3.. Verbessern Sie die Abfrageeffizienz durch Abfrageoptimierung und Index.

Der Zweck von SQL: Interaktion mit MySQL -DatenbankenDer Zweck von SQL: Interaktion mit MySQL -DatenbankenApr 18, 2025 am 12:12 AM

SQL wird verwendet, um mit der MySQL -Datenbank zu interagieren, um die Datenzusatz, Löschung, Änderung, Inspektion und Datenbankdesign zu realisieren. 1) SQL führt Datenoperationen über SELECT, INSERT, INTERATE, UPDATE, Löschen von Anweisungen durch. 2) Verwenden Sie Anweisungen für Datenbankdesign und -verwaltung create, ändern, fallen. 3) Komplexe Abfragen und Datenanalysen werden über SQL implementiert, um die Effizienz der Geschäftsentscheidungen zu verbessern.

MySQL für Anfänger: Erste Schritte mit der DatenbankverwaltungMySQL für Anfänger: Erste Schritte mit der DatenbankverwaltungApr 18, 2025 am 12:10 AM

Zu den grundlegenden Operationen von MySQL gehört das Erstellen von Datenbanken, Tabellen und die Verwendung von SQL zur Durchführung von CRUD -Operationen für Daten. 1. Erstellen Sie eine Datenbank: createdatabasemy_first_db; 2. Erstellen Sie eine Tabelle: CreateTableBooks (IDINGAUTO_INCRECTIONPRIMARYKEY, Titelvarchar (100) Notnull, AuthorVarchar (100) Notnull, veröffentlicht_yearint); 3.. Daten einfügen: InsertIntoBooks (Titel, Autor, veröffentlicht_year) va

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SecLists

SecLists

SecLists ist der ultimative Begleiter für Sicherheitstester. Dabei handelt es sich um eine Sammlung verschiedener Arten von Listen, die häufig bei Sicherheitsbewertungen verwendet werden, an einem Ort. SecLists trägt dazu bei, Sicherheitstests effizienter und produktiver zu gestalten, indem es bequem alle Listen bereitstellt, die ein Sicherheitstester benötigen könnte. Zu den Listentypen gehören Benutzernamen, Passwörter, URLs, Fuzzing-Payloads, Muster für vertrauliche Daten, Web-Shells und mehr. Der Tester kann dieses Repository einfach auf einen neuen Testcomputer übertragen und hat dann Zugriff auf alle Arten von Listen, die er benötigt.

PHPStorm Mac-Version

PHPStorm Mac-Version

Das neueste (2018.2.1) professionelle, integrierte PHP-Entwicklungstool

Herunterladen der Mac-Version des Atom-Editors

Herunterladen der Mac-Version des Atom-Editors

Der beliebteste Open-Source-Editor

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Leistungsstarke integrierte PHP-Entwicklungsumgebung