什么是 NoSQL?
具有灵活数据模型的高性能非关系数据库
引用自:亚马逊官方:https://aws.amazon.com/cn/nosql/
什么是 NoSQL 数据库?
NoSQL 数据库专门构建用于特定的数据模型,并且具有灵活的架构来构建现代应用程序。NoSQL 数据库因其易于大规模开发、强大的功能和良好的性能而被广泛认可。它们使用各种数据模型,其中包括文档、图形、键值、内存和搜索。本页面包含的资源可帮助您更好地了解 NoSQL 数据库并开始使用。
数十年来,用于应用程序开发的主要数据模型是由关系数据库(如 Oracle、DB2、SQL Server、MySQL 和 PostgreSQL)使用的关系数据模型。直到 21 世纪中后期,才开始大规模采用和使用其他数据模型。为了对这些新类别的数据库和数据模型进行区分和分类,创造了术语“NoSQL”。通常术语“NoSQL”与“非关系”可互换使用。
AWS 专门构建的非关系数据库的新增功能
NoSQL(非关系)数据库如何工作?
NoSQL 数据库使用各种数据模型来访问和管理数据,例如文档、图形、键值、内存和搜索。这些类型的数据库专门针对需要大数据量、低延迟和灵活数据模型的应用程序进行了优化,这是通过放宽其他数据库的某些数据一致性限制来实现的。
考虑为简单的书籍数据库的架构建模的示例:
- 在关系数据库中,书籍记录通常被拆分(或“规范化”)并存储在单独的表中,并且关系由主键和外键约束来定义。在此示例中,书籍表包含 ISBN、书名和版本号列,作者表包含作者 ID 和作者姓名列,作者-ISBN 表包含作者 ID 和 ISBN 列。关系模型旨在使数据库能够在数据库中的表之间强制实施引用完整性,规范化以减少冗余,并且通常针对存储进行优化。
- 在 NoSQL 数据库中,书籍记录通常存储为 JSON 文档。对于每本书,项目 ISBN、书名、版本号、作者姓名和作者 ID 都作为属性存储在单个文档中。在此模型中,针对直观开发和横向可伸缩性对数据进行了优化。
为什么应该使用 NoSQL 数据库?
NoSQL 数据库非常适合许多现代应用程序,例如移动、Web 和游戏等应用程序,它们需要灵活、可扩展、高性能和功能强大的数据库以提供卓越的用户体验。
- 灵活性:NoSQL 数据库通常提供灵活的架构,以实现更快速、更多的迭代开发。灵活的数据模型使 NoSQL 数据库成为半结构化和非结构化数据的理想之选。
- 可扩展性:NoSQL 数据库通常被设计为通过使用分布式硬件集群来横向扩展,而不是通过添加昂贵和强大的服务器来纵向扩展。一些云提供商在后台将这些操作处理为完全托管服务。
- 高性能:NoSQL 数据库针对特定的数据模型(如文档、键值和图形)和访问模式进行了优化,这与尝试使用关系数据库完成类似功能相比可实现更高的性能。
- 强大的功能:NoSQL 数据库提供功能强大的 API 和数据类型,专门针对其各自的数据模型而构建。
NoSQL 数据库的类型
键值:键值数据库是高度可分区的,并且允许以其他类型的数据库无法实现的规模进行水平扩展。诸如游戏、广告技术和 IoT 等使用案例本身特别适合键值数据模型。Amazon DynamoDB 旨在为任意规模的工作负载提供一致且低于 10 毫秒的延迟。这种一致的性能是为何使用 Snapchat Stories 功能的主要原因,该功能包含移至 DynamoDB 的 Snapchat 的最大存储写入工作负载。
文档:一些开发人员不根据反范式的行和列来考虑其数据模型。通常,在应用层中,数据表示为 JSON 文档,因为开发人员将其数据模型视为文档更为直观。文档数据库的受欢迎程度不断提高,因为开发人员可以使用他们在其应用程序代码中使用的相同文档模型格式来保存数据库中的数据。DynamoDB 和 MongoDB 是热门的文档数据库,为灵活且敏捷的开发提供强大且直观的 API。
图形:图形数据库旨在轻松构建和运行与高度连接的数据集一起使用的应用程序。图形数据库的典型使用案例包括社交网络、推荐引擎、欺诈检测和知识图形。Amazon Neptune 是一项完全托管的图形数据库服务。Neptune 支持属性图形模型和资源描述框架 (RDF),同时提供两种图形 API 选择:TinkerPop 和 RDF/SPARQL。热门图形数据库包括 Neo4j 和 Giraph。
内存:游戏和广告技术应用程序具有排行榜、会话存储和实时分析等使用案例,它们需要微秒响应时间并且可能随时出现大规模的流量高峰。Amazon ElastiCache 提供 Memcached 和 Redis 来处理无法使用基于磁盘的数据存储处理的低延迟、高吞吐量工作负载,如 McDonald’s。Amazon DynamoDB Accelerator (DAX) 是另一个专门构建的数据存储示例。DAX 使 DynamoDB 读取的速度提高了一个数量级。
SQL 与NoSQL 术语
下表将精选的 NoSQL 数据库使用的术语与 SQL 数据库使用的术语进行了比较。
SQL(关系)与NoSQL(非关系)数据库虽然许多类型的 NoSQL 数据库具有各种不同的功能,但下表显示了 SQL 和 NoSQL 数据库之间的一些差异。
SQL 与NoSQL 术语下表将精选的 NoSQL 数据库使用的术语与 SQL 数据库使用的术语进行了比较。
|
---|