来源于https://www.digitalocean.com/community/tutorials/a-comparison-of-nosql-database-management-systems-and-models
Introduction
NoSQL databases try to offer certain functionality that more traditional relational database management systems do not. Whether it is for holding simple key-value pairs for shorter lengths of time for caching purposes, or keeping unstructured collections (e.g. collections) of data that could not be easily dealt with using relational databases and the structured query language (SQL) – they are here to help.
In this DigitalOcean article, we are going to try to introduce you to various popular NoSQL database management systems and explain their purposes and functionality, so that you can decide which one to use, or if they even suit your application's needs -- at all.
Glossary
1. Database Management Systems
2. NoSQL Database Management Systems
- Key / Value Based
- Column Based
- Document Based
- Graph Based
3. Key / Value Based NoSQL Database Management Systems
- Popular Key / Value Based Databases
- When To Use
4. Column Based NoSQL Database Management Systems
- Popular Column Based Databases
- When To Use
5. Document Based NoSQL Database Management Systems
- Popular Document Based Databases
- When To Use
6. Graph Based NoSQL Database Management Systems
- Popular Graph Based Databases
- When To Use
7. NoSQL DBMSs In Comparison To Relational DBMSs
- When To Use NoSQL Databases
Database Management Systems
Databases are logically modeled storage spaces for all kinds of different information (data). Each database, other than schema-less ones, have a model which provides structure for the data being dealt with. Database management systems are applications (or libraries) which manage databases of various shapes, sizes, and sorts.
Note: To learn more about Database Management Systems, check out our article: Understanding Databases.
NoSQL Database Management Systems
In the past decade or so, relational database management systems have been the choice of many developers and system administrators for a variety of applications, for a variety of reasons. Despite not being exactly flexible, the powerful nature of many RDBMS allowed complex database set-ups to be created, queried and used. This was more than enough for many requirements, since it was not until long ago that different needs started to rise.
The term "NoSQL" was coined over a decade ago, funnily enough as a name to yet-another relational database. However, this database had a different idea behind it: eliminating the use of the standardised SQL. In the next years to come, others picked up and continued to grow this thought, by referring to various other non-relational databases as NoSQL databases.
By design, NoSQL databases and management systems are relation-less (or schema-less). They are not based on a single model (e.g. relational model of RDBMSs) and each database, depending on their target-functionality, adopt a different one.
There are almost a handful of different operational models and functioning systems for NoSQL databases.:
- Key / Value:
e.g. Redis, MemcacheDB, etc.
- Column:
e.g. Cassandra, HBase, etc.
- Document:
e.g. MongoDB, Couchbase, etc
- Graph:
e.g. OrientDB, Neo4J, etc.
In order to better understand the roles and underlying technology of each database management system, let's quickly go over these four operational models.
Key / Value Based
We will begin our NoSQL modeling journey with key / value based database management simply because they can be considered the most basic and backbone implementation of NoSQL.
These type of databases work by matching keys with values, similar to a dictionary. There is no structure nor relation. After connecting to the database server (e.g. Redis), an application can state a key (e.g.the_answer_to_life
) and provide a matching value (e.g. 42
) which can later be retrieved the same way by supplying the key.
Key / value DBMSs are usually used for quickly storing basic information, and sometimes not-so-basic ones after performing, for example, a CPU and memory intensive computation. They are extremely performant, efficient and usually easily scalable.
Note: When it comes to computers, a dictionary usually refers to a special sort of data object. They constitutes of arrays of collections with individual keys matching values.
Column Based
Column based NoSQL database management systems work by advancing the simple nature of key / value based ones.
Despite their complicated-to-understand image on the internet, these databases work very simply by creating collections of one or more key / value pairs that match a record.
Unlike the traditional defines schemas of relational databases, column-based NoSQL solutions do not require a pre-structured table to work with the data. Each record comes with one or more columns containing the information and each column of each record can be different.
Basically, column-based NoSQL databases are two dimensional arrays whereby each key (i.e. row / record) has one or more key / value pairs attached to it and these management systems allow very large and un-structured data to be kept and used (e.g. a record with tons of information).
These databases are commonly used when simple key / value pairs are not enough, and storing very large numbers of records with very large numbers of information is a must. DBMS implementing column-based, schema-less models can scale extremely well.
Document Based
Document based NoSQL database management systems can be considered the latest craze that managed to take a lot of people by storm. These DBMS work in a similar fashion to column-based ones; however, they allow much deeper nesting and complex structures to be achieved (e.g. a document, within a document, within a document).
Documents overcome the constraints of one or two level of key / value nesting of columnar databases. Basically, any complex and arbitrary structure can form a document, which can be stored using these management systems.
Despite their powerful nature, and the ability to query records by individual keys, document based management systems have their own issues and downfalls compared to others. For example, retrieving a value of a record means getting the whole lot of it and same goes for updates, all of which affect the performance.
Graph Based
Finally, the very interesting flavour of NoSQL database management systems is the graph based ones.
The graph based DBMS models represent the data in a completely different way than the previous three models. They use tree-like structures (i.e. graphs) with nodes and edges connecting each other through relations.
Similarly to mathematics, certain operations are much simpler to perform using these type of models thanks to their nature of linking and grouping related pieces of information (e.g. connected people).
These databases are commonly used by applications whereby clear boundaries for connections are necessary to establish. For example, when you register to a social network of any sort, your friends' connection to you and their friends' friends' relation to you are much easier to work with using graph-based database management systems.
Key / Value Based NoSQL Database Management Systems
Key / Value data stores are highly performant, easy to work with and they usually scale well.
Popular Key / Value Based Databases
Some popular key / value based data stores are:
- Redis:
In-memory K/V store with optional persistence.
- Riak:
Highly distributed, replicated K/V store.
- Memcached / MemcacheDB:
Distributed memory based K/V store.
When To Use
Some popular use cases for key / value based data stores are:
- Caching:
Quickly storing data for - sometimes frequent - future use.
- Queue-ing:
Some K/V stores (e.g. Redis) supports lists, sets, queues and more.
- Distributing information / tasks:
They can be used to implement Pub/Sub.
- Keeping live information:
Applications which need to keep a state cane use K/V stores easily.
Column Based NoSQL Database Management Systems
Column based data stores are extremely powerful and they can be reliably used to keep important data of very large sizes. Despite not being "flexible" in terms of what constitutes as data, they are highly functional and performant.
Popular Column Based Databases
Some popular column based data stores are:
- Cassandra:
Column based data store based on BigTable and DynamoDB.
- HBase:
Data store for Apache Hadoop based on ideas from BigTable.
When To Use
Some popular use cases for column based data stores are:
- Keeping unstructured, non-volatile information:
If a large collection of attributes and values needs to be kept for long periods of time, column-based data stores come in extremely handy.
- Scaling:
Column based data stores are highly scalable by nature. They can handle an awful amount of information.
Document Based NoSQL Database Management Systems
Document based data stores are excellent for keeping a lot of unrelated complex information that is highly variable in terms of structure from one another.
Popular Document Based Databases
Some popular document based data stores are:
- Couchbase:
JSON-based, Memcached-compatible document-based data store.
- CouchDB:
A ground-breaking document-based data store.
- MongoDB:
An extremely popular and highly-functional database.
When To Use
Some popular use cases for document based data stores are:
- Nested information:
Document-based data stores allow you to work with deeply nested, complex data structures.
- JavaScript friendly:
One of the most critical functionalities of document-based data stores are the way they interface with applications: Using JS friendly JSON.
Graph Based NoSQL Database Management Systems
Graph based data stores offer a very unique functionality that is unmatched with any other DBMSs.
Popular Graph Based Databases
Some popular graph based data stores are:
- OrientDB:
A very fast graph and document based hybrid NoSQL data store written in Java that comes with different operational modes.
- Neo4J:
A schema-free, extremely popular and powerful Java graph based data store.
When To Use
Some popular use cases for graph based data stores are:
- Handling complex relational information:
As explained in the introduction, graph databases make it extremely efficient and easy to use to deal with complex but relational information, such as the connections between two entities and various degrees of other entities indirectly related to them.
- Modelling and handling classifications:
Graph databases excel in any situation where relationships are involved. Modelling data and classifying various information in a relational way can be handled very well using these type of data stores.
NoSQL DBMSs In Comparison To Relational DBMSs
In order to draw a clear picture of how NoSQL solutions differ from relational database management systems, let's create a quick comparison list:
When To Use NoSQL Databases
- Size matters:
If will be working with very large sets of data, consistently scaling is easier to achieve with many of the DBMS from NoSQL family.
- Speed:
NoSQL databases are usually faster - and sometimes extremely speedier - when it comes to writes. Reads can also be very fast depending on the type of NoSQL database and data being queried.
- Schema-free design:
Relational DBMSs require structure from the beginning. NoSQL solutions offer a large amount of flexibility.
- Automated (or easy) replications / scaling:
NoSQL databases are growing rapidly and they are being actively built today - vendors are trying to tackle common issues and one of them clearly is replication and scaling. Unlike RDBMSs, NoSQL solutions can easily scale and work with(in) clusters.
- Multiple choices:
When it comes to choosing a NoSQL data store, there are a variety of models, as we have discussed, that you can choose from to get the most out of the database management system - depending on your data type.
相关推荐
《NoSQL研发之路:从历史发展到特殊领域应用》 一、NoSQL概念与分类 NoSQL,全称为“Not Only SQL”,意在强调数据库不仅仅局限于传统的SQL关系型数据库,而是涵盖了一系列非关系型数据库技术。NoSQL数据库的出现...
根据提供的信息,我们可以推断出该文档主要围绕“NoSQL数据库入门”这一主题展开,并且它是一本高清PDF格式的学习指导书籍。尽管文档的部分内容似乎与Linux公社网站介绍有关,但我们的重点将放在提取与NoSQL数据库...
NoSQLBooster for MongoDB是一款强大的管理工具,专为优化MongoDB操作而设计,其前身为Mongobooster,是开发人员和数据库管理员进行高效数据库管理和维护的理想选择。 NoSQLBooster提供了一系列功能,旨在提升...
NoSQL数据库 14信管一班2组23殷月园 NoSQL数据库PPT全文共20页,当前为第1页。 内容大纲 定义 产生 共同特征 分类 适用场景 发展现状 7 挑战 NoSQL数据库PPT全文共20页,当前为第2页。 一.什么是NoSQL数据库? NoSQL...
MongoDB 4.0 客户端工具NosqlBooster是一款专为MongoDB数据库设计的强大图形用户界面(GUI)工具,适用于管理和操作MongoDB数据库。NosqlBooster提供了直观的界面,使得对MongoDB的数据查询、编辑、管理变得更加便捷...
【 NosQL 数据库详解】 NosQL(Not Only SQL)是一种非关系型数据库,它与传统的关系型数据库不同,强调水平扩展、高并发处理和大数据存储。在 NosQL 期末复习中,我们需要掌握的关键知识点包括数据库的类型、特性...
MongoDB 是一种流行的开源、分布式、面向文档的数据库系统,属于 NoSQL 数据库类型。NoSQL(Not Only SQL)指的是非关系型数据库,它不采用传统的关系型数据库模型,而是提供了一种更灵活的方式来存储和处理数据。在...
### NoSQL分布式数据库知识点解析 #### 一、选择题知识点详解 **1. 关系数据库与非关系数据库** - **关系数据库**: MySQL、SQL Server 和 Oracle 均属于关系数据库,它们采用 SQL 作为标准查询语言,支持 ACID ...
《NoSQL数据库原理与应用案例教程》PPT课件(共9单元)第4章 HBase原理实现.pdf《NoSQL数据库原理与应用案例教程》PPT课件(共9单元)第4章 HBase原理实现.pdf《NoSQL数据库原理与应用案例教程》PPT课件(共9单元)第4章 ...
NosqlBooster for MongoDB是一款高效、用户友好的MongoDB管理工具,专为简化MongoDB的日常操作而设计。版本7.0.8是该工具的一个更新版本,提供了一系列增强的功能和优化,旨在提高开发人员和数据库管理员的工作效率...
NosqlBooster是一款专为MongoDB设计的强大管理工具,它提供了类似SQL的查询界面,使得对MongoDB数据的操作更加直观和高效。在这个场景中,我们讨论的是 NosqlBooster 的6.2.17版本的压缩包。 NosqlBooster的核心...
在Mac OS环境下,为了方便管理和操作MongoDB数据库,我们可以使用像NosqlBooster for MongoDB这样的可视化工具。NosqlBooster是专为MongoDB设计的一款高效、功能强大的管理软件,尤其适合Mac用户。 标题中的"Mac OS...
【分布式数据库原理与NoSQL详解】 在当今大数据时代,传统的SQL关系型数据库已经无法满足海量数据的存储和处理需求,因此分布式数据库和NoSQL数据库应运而生。本课件将深入探讨分布式数据库的原理以及NoSQL数据库的...
而NosqlBooster for MongoDB则是专为MongoDB设计的一款高效、强大的图形化管理工具,旨在简化数据库的日常管理和开发工作。NosqlBooster 5.2.8是该工具的一个版本,提供了一系列增强的功能和优化的用户体验。 ...
Nosql 分布式数据库期末考试题 本期末考试题涵盖了 Nosql 数据库的基础知识、 MongoDB、HBase、Neo4j 等分布式数据库的特点和应用场景。涵盖了数据库基础知识、Nosql 数据库的特点、CAP 理论、分布式数据库设计等多...
MongoDB是一种流行的开源、分布式文档型数据库,属于NoSQL数据库的一种。它以其灵活性、高性能、易扩展性以及支持丰富的数据模型而备受青睐。NoSQL Manager for MongoDB是一款专为MongoDB设计的强大管理工具,提供了...
【实验四:NoSQL和关系数据库的操作比较】 本实验旨在对比分析四种不同的数据库管理系统:MySQL、HBase、Redis和MongoDB。这些数据库在处理大数据时各有特点,理解它们的概念及不同点是实验的关键。 1. **MySQL**...
NoSQL 数据库是当前大数据时代的热门话题,NoSQL 数据库学习之路是 NoSQL 数据库的详细介绍,介绍了目前主流的 NoSQL 数据库实现原理,涵盖了 CAP 理论、 BASE 理论、一致性哈希、 Vector Clock、Gossip Protocol 等...
NoSQL数据库,全称为"Not Only SQL",是近年来在大数据处理和互联网应用中逐渐兴起的一种非关系型数据库。它的出现是对传统关系型数据库(TRDB)在处理大规模数据时所面临挑战的一种回应。NoSQL数据库放弃了关系数据...