MongoDB循序渐进之[特性]面向文档存储
. 面向文档存储 JSON风格的文件与动态模式使MongoDB简单而强大。 Schema Design:模式设计 在MongoDB中Schema的设计是非常不同于传统的DBMS。然而Schema是非常重要的,并且是建立应用程序的第一步。 在传统的数据模型中,给一个实体关系模型一个独立的用例在
.
面向文档存储
JSON风格的文件与动态模式使MongoDB简单而强大。
Schema Design:模式设计
在MongoDB中Schema的设计是非常不同于传统的DBMS。然而Schema是非常重要的,并且是建立应用程序的第一步。
在传统的数据模型中,给一个实体关系模型一个独立的用例在概念上是正确的,这是一个很正常的第三范式,但这通常会偏离你处于性能方面的考虑。在MongoDB中,Schema的设计不仅仅是对数据进行建模的用例。根据最常见的用例,我们对Schema的设计进行了优化,这有利有弊——用例通常是高性能的。然而有一个偏见是说Schema可能使某些动态查询相比于关系模型缺少一点优雅。
当我们要设计Schema时,需要考虑以下问题:
1.什么时候我们嵌入数据和链接(见下文)?我们在这里的决定讲影响第二个问题的答案
2.我们有多少集合,它们是什么?
3.什么时候我们需要原子操作?这些操作可以执行范围内的BSON文档,但并不是所有文档。
4.我们将创建什么索引使查询和更新快?
5.我们如何切分?什么是分片键?
Embedding and Linking:嵌入和链接
在设计一个MongoDB Schema时一个关键问题是什么时候嵌入,什么时候链接。嵌入是嵌套对象和数组到BSON文档中,服务器空间,链接是文档之间的引用。
在MongoDB中没有join——在1000服务器集群中做分布式join是很困难的。嵌入有点像“prejoined”(预连接)数据。
服务器处理在一个文档里面的操作是很容易的,美国空间,这些操作可以相当丰富。链接相比之下必须处理客户端应用程序,应用程序是通过发行一个后续查询来处理文档。
一般来说,实体之间有“包含”关系,则应该选择嵌入。当不使用连接会导致重复的数据,那么就选择使用链接。
Collections:集合
在MongoDB中集合类似于关系数据库中的表,香港空间,每一个集合包含文档,正如上面提到的这些文件可以相当丰富。在一个集合文档内字段是没有显式声明。然而来自于Schema设计师的一个关于那些字段将会是什么的概念,并且文档在集合内是怎样被结构化的。MongoDB不需要集合内的文档有相同的结构,然而在实践中大多数集合都是高度同质的。只要我们愿意我们就可以避免这些,例如当添加一个新字段,在这种情况一个“alter table”风格操作不是必要的。
Atomic Operations:原子操作
有些问题需要能够执行原子操作。例如,简单地增加计数器一个需要的原子性操作的案例。MongoDB还可以执行更复杂的操作,如下面所示的伪代码:
atomically { if( doc.credits > 5 ) { doc.credits -= 5; doc.debits += 5; } }

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

How to use Go framework documentation? Determine the document type: official website, GitHub repository, third-party resource. Understand the documentation structure: getting started, in-depth tutorials, reference manuals. Locate the information as needed: Use the organizational structure or the search function. Understand terms and concepts: Read carefully and understand new terms and concepts. Practical case: Use Beego to create a simple web server. Other Go framework documentation: Gin, Echo, Buffalo, Fiber.

This article introduces how to configure MongoDB on Debian system to achieve automatic expansion. The main steps include setting up the MongoDB replica set and disk space monitoring. 1. MongoDB installation First, make sure that MongoDB is installed on the Debian system. Install using the following command: sudoaptupdatesudoaptinstall-ymongodb-org 2. Configuring MongoDB replica set MongoDB replica set ensures high availability and data redundancy, which is the basis for achieving automatic capacity expansion. Start MongoDB service: sudosystemctlstartmongodsudosys

This article describes how to build a highly available MongoDB database on a Debian system. We will explore multiple ways to ensure data security and services continue to operate. Key strategy: ReplicaSet: ReplicaSet: Use replicasets to achieve data redundancy and automatic failover. When a master node fails, the replica set will automatically elect a new master node to ensure the continuous availability of the service. Data backup and recovery: Regularly use the mongodump command to backup the database and formulate effective recovery strategies to deal with the risk of data loss. Monitoring and Alarms: Deploy monitoring tools (such as Prometheus, Grafana) to monitor the running status of MongoDB in real time, and

It is impossible to view MongoDB password directly through Navicat because it is stored as hash values. How to retrieve lost passwords: 1. Reset passwords; 2. Check configuration files (may contain hash values); 3. Check codes (may hardcode passwords).

According to news from this website on July 23, technology media techradar published a blog post yesterday (July 22), reporting that Sony will abandon the 5.5TB cartridge storage solution. Introduction to the 5.5TB ink cartridge storage solution. Sony released the third-generation ink cartridge storage solution in 2020. The capacity of a single box reaches 5.5TB. It uses a double-sided optical disc with three layers on each side. Records can be written at one time and data can be saved. Not bad for 100 years. The full name of this cartridge storage solution is Optical Disc Archive Cartridges. Its goal is to preserve important data for a long time. The time promised by Sony is to ensure that it remains unchanged for 100 years. It has very good stability and is resistant to temperature, humidity, water, electrical, gray and electricity

When developing an e-commerce website, I encountered a difficult problem: how to provide users with personalized product recommendations. Initially, I tried some simple recommendation algorithms, but the results were not ideal, and user satisfaction was also affected. In order to improve the accuracy and efficiency of the recommendation system, I decided to adopt a more professional solution. Finally, I installed andres-montanez/recommendations-bundle through Composer, which not only solved my problem, but also greatly improved the performance of the recommendation system. You can learn composer through the following address:

How to find documentation and tutorials for a specific framework: Visit the official framework website and look for the "Documentation" or "Tutorials" tab. Check the framework's GitHub repository or third-party website for community-contributed documentation. Use search engines, video sharing platforms, and online communities to find online tutorials.

For advanced Java developers, the official documentation (SpringBoot, Hibernate, etc.) provides comprehensive information, including API reference and best practices. Technical tutorial platforms (DZone, Baeldung, etc.) cover advanced features, design patterns, and code extensibility. Open source projects (GitHub, Maven, etc.) showcase real-world implementations to learn best practices and seek community support.
