《解读NoSQL》——1.1 什么是NoSQL

简介:

本节书摘来自异步社区出版社《解读NoSQL》一书中的第1章,第1.1节,作者: 【美】Dan McCreary(丹•麦克雷) , Ann Kelly(安•凯利),更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.1 什么是NoSQL

准确定义NoSQL本身就具有挑战性。NoSQL这个术语其实是有待商榷的,因为它并没有真正意义上揭示NoSQL运动的核心主题。这个术语来源于一群定期在湾区开会并讨论一些共同关注的可扩展的开源数据库的人们,它就这样出现了。不管它形不形象,它似乎出现在所有地方:行业期刊、产品说明和各种会议。在本书,我们将用NoSQL区别于传统的关系型数据库管理系统(RDBMS)。

按照我们的目标,我们将从以下几个方面定义NoSQL。

NoSQL是关于快速而高效地处理数据,专注于性能、可靠性和敏捷性的一组概念。

这听起来有些宽泛,是吧?它没有排除SQL或者RDBMS,对吗?这其实并没有错。重要的是,我们需要搞清楚NoSQL背后的核心主题:它是什么,最重要的是,它不是什么。那么NoSQL究竟是什么?

NoSQL 不仅仅是普通意义上的表——NoSQL系统可以从许多格式中存储和检索数据:键值存储、图数据库、列族存储、文档存储甚至是普通的表。
NoSQL避免连接操作——NoSQL系统能够通过简单的接口提取数据从而避免连接操作。
NoSQL 是模式无关的——NoSQL系统允许将数据拖曳到一个文件夹并进行查询,而不需要创建对象-关系模型。
NoSQL 工作在多核处理器之上——NoSQL系统允许将数据库部署在多核处理器之上从而保持良好的性能。
NoSQL 运行在无共享的商用计算机——大多数(并不是所有的)NoSQL系统利用廉价的商用处理器、独立的硬盘和内存进行搭建。
NoSQL 支持线性扩展——当你增加更多的处理器时,你的单位性能增量始终是一致的。
NoSQL 是创新的——NoSQL对于存储、检索、操作数据提供了更多的选择。NoSQL的支持者(也被称为NoSQLers)对于NoSQL和SQL解决方案持一种兼收并蓄的态度。对于NoSQL社区来说,NoSQL的意思是“不只是SQL”。
同样重要的是,NoSQL不是什么。
**
NoSQL 不是一种SQL语言**——NoSQL并不是采用非SQL查询语言的应用。SQL和其他查询语言也可以被用于NoSQL数据库。
NoSQL 不仅是开源的——尽管许多NoSQL系统都有一个开源模式,但是借鉴NoSQL思想的商业产品同样也不排斥开源。你仍然可以通过商业产品创新地解决问题。
NoSQL 不仅仅代表海量数据——大部分但不是所有的NoSQL应用都是来源于为应对海量数据而提升当前应用运行规模的需求。虽然数据的容量和数据处理速度很重要,但NoSQL 也专注于数据的种类和敏捷性。
NoSQL 和云计算没有关系——虽然很多NoSQL系统为了能在负载变化时利用云端动态扩展的优势而部署在云端,但是NoSQL系统也能像在云端运行那样运行在公司的数据中心。
这不是关于如何用好RAM和SSD——NoSQL专注于高效地使用RAM和固态硬盘获得性能的提升,尽管这很重要,但是NoSQL系统可以运行在普通硬件之上。
NoSQL 并不是精英团体的专属产品——NoSQL不是一个排他的、只有少数产品的俱乐部,也并没有为加入设置门槛。想成为一个NoSQLer,你只需说服别人,对于他们的业务难题你有创新的解决思路。
NoSQL应用采用很多数据存储类型(不同的数据库)。有简单的表现键值关系的键值存储、表现关联关系的图存储、用以存储可变数据的文档存储,每一种NoSQL数据存储类型都有其独特的属性和使用场景,如表1-1所示。


14393bb86f2fdf6a4e665129641d3f739e554512


4639386639dd537f4d6263d416ab112ea85eaa1b

NoSQL系统拥有独特的特性能够使其单独使用或者与已有系统配合使用。许多机构认为NoSQL系统这样做的原因是为了克服一些常见的问题,如数据的容量、流动的速度、数据的种类和数据的敏捷性以及NoSQL运动背后的商业驱动所使然。

相关文章
|
2天前
|
SQL 存储 NoSQL
SQL vs. NoSQL:如何根据大数据需求选择合适数据库
【4月更文挑战第8天】本文对比分析了SQL与NoSQL数据库在大数据项目中的应用。SQL数据库适合结构化数据、强一致性和复杂事务处理,如金融系统,而NoSQL则适用于半结构化和非结构化数据、高并发及大数据场景,如社交网络。选择时应考虑业务需求、技术栈、团队经验和成本效益,以找到最佳解决方案。随着技术发展,NewSQL和Multi-model数据库也提供了更多选择。
32 0
|
2天前
|
存储 NoSQL 关系型数据库
面试题18: NOSQL数据库
面试题18: NOSQL数据库
|
2天前
|
存储 NoSQL API
一个小巧、快速、轻量级的 .NET NoSQL 嵌入式数据库
一个小巧、快速、轻量级的 .NET NoSQL 嵌入式数据库
171 0
|
2天前
|
JSON NoSQL MongoDB
理解Nosql数据库的mongodb
【5月更文挑战第5天】MongoDB是2009年发布的一款通用型NoSQL数据库,结合了关系模型和NoSQL的优点,适用于各种现代应用。其特点包括图形界面、数据服务、云基础设施集成(AWS, Azure, Google Cloud)。它具备全面的查询能力、ACID事务、可调整的一致性保证,并有多语言驱动及工具,可在任何地方运行。
25 4
|
2天前
|
存储 SQL NoSQL
非关系型数据库(NoSQL)
【4月更文挑战第9天】非关系型数据库(NoSQL)是分布式、非结构化、不遵循ACID原则的数据存储系统,常用于大规模数据存储和高并发场景。其类型包括键值对、文档型、列式和图形数据库。与关系型数据库不同,NoSQL数据模型更灵活,适合社交媒体和物联网应用,但在复杂事务处理上不如后者。实际应用中,通常会根据需求选择合适的数据库类型。
52 3
|
2天前
|
NoSQL atlas MongoDB
Nosql数据库MongoDB的使用场景
【5月更文挑战第5天】 MongoDB是全球性的多云数据库,可在私有、公共和混合云中运行,提供高可用性、扩展性和合规性。 安全特性包括认证、授权、审计、网络隔离和加密。可提供跨云操作、可视化工具、搜索功能和数据湖支持,适用于现代应用开发,包括边缘数据处理。
29 1
|
2天前
|
缓存 NoSQL 关系型数据库
在Python Web开发过程中:数据库与缓存,MySQL和NoSQL数据库的主要差异是什么?
MySQL与NoSQL的主要区别在于数据结构、查询语言和可扩展性。MySQL是关系型数据库,依赖预定义的数据表结构,使用SQL进行复杂查询,适合垂直扩展。而NoSQL提供灵活的存储方式(如JSON、哈希表),无统一查询语言,支持横向扩展,适用于处理大规模、非结构化数据和高并发场景。选择哪种取决于应用需求、数据模型及扩展策略。
170 0
|
2天前
|
NoSQL MongoDB Redis
Python与NoSQL数据库(MongoDB、Redis等)面试问答
【4月更文挑战第16天】本文探讨了Python与NoSQL数据库(如MongoDB、Redis)在面试中的常见问题,包括连接与操作数据库、错误处理、高级特性和缓存策略。重点介绍了使用`pymongo`和`redis`库进行CRUD操作、异常捕获以及数据一致性管理。通过理解这些问题、易错点及避免策略,并结合代码示例,开发者能在面试中展现其技术实力和实践经验。
322 8
Python与NoSQL数据库(MongoDB、Redis等)面试问答
|
2天前
|
NoSQL 关系型数据库 MongoDB
非关系型数据库(NoSQL)的语法
【4月更文挑战第11天】NoSQL数据库语法各异,无统一标准。Redis以其多样数据类型(如字符串、散列)和命令式操作(如`SET`、`GET`)为特点,而MongoDB采用类似JavaScript的查询语言,支持复杂操作。适应不同NoSQL数据库需学习相应语法,参考官方文档是最佳实践。
11 3
|
2天前
|
存储 运维 监控
面经:Cassandra分布式NoSQL数据库深度解读
【4月更文挑战第10天】本文是关于Apache Cassandra的面试准备指南,涵盖了数据模型、一致性模型、架构性能优化和故障恢复等核心知识点。作者强调理解Cassandra的列族、Tunable Consistency、Gossip协议及运维策略的重要性,并通过代码示例辅助解释。掌握这些内容不仅能帮助在面试中表现出色,也有助于实际工作中解决大规模数据处理问题。
29 1