NoSQL的分类

本文探讨了关系数据库的局限性,包括schema扩展困难、大数据场景下I/O高及全文搜索性能不足等问题,并介绍了NoSQL数据库如何针对性解决这些问题,如K-V存储、文档数据库、列式数据库和全文搜索引擎。同时,给出了不同应用场景下数据库选型的建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关系数据库 的缺点

1 关系数据库的 schema扩展很不方便关系数据库的表结构 schema是强约東,操作不存在的列会报错,业务变化时扩充列也比较麻烦需要执行DDL( data definition language,如 CREATE、 ALTER、DROP等)语句修改,而且修改时可能会长时间锁表(例妙如, MYSQL可能将表锁住1个小时)

2 关系数据库在大数据场景下/O较如果对一些大量数据的表进行统计之类的运算,关系数据库的/O会很高,因为即使只针对其中某列进行运算,关系数据库也会将整行数据从存储设备读入内存`

3 关系数据库的全文搜索功能比较弱关系数据库的全文搜索只能使用ike进行整表扫描匹配,性能非常低,在互联网这种搜索复杂的场下无法满足业务要求

NoSQL解决方案

针对上述问题,分别诞生了不同的 NOSQL解決方案,这些方案与关系数据库相比,在某些应用场下表现更好。
但世上没有免费的午餐, NOSQL方案带来的优势,本质上是牺牲ACID中的某或者某几个特性,因此我们不能
言目地迷信 NOSQL是银弹,而应该将 NOSQL作为力补充, NOSQL!= No SQL,而是 NOSQL= Not Only SQL
常见的 NOSQL方案分为4类:
K-V存储:解決关系数据库无法存储数据结构的可题,以 Redis为代表
文档数据库:解决关系数据库强 schema约束的可题ONGODB为代表
列式数据库:解决关系数据库大数据场景下的 I/O 问题,以 Hbase为代表
全文搜索引擎:解决关系数据库的全文搜索性能问题,以 Elasticsearch为代表

关系型和NoSQL数据库的选型。

考虑几个指标,数据量、并发量、实时性、一致性要求、读写分布和类型、安全性、运维性等。根据这些指标,软件系统可分成几类。
1.管理型系统,如运营类系统,首选关系型。
2.大流量系统,如电商单品页的某个服务,后台选关系型,前台选内存型。
3.日志型系统,原始数据选列式,日志搜索选倒排索引。
4.搜索型系统,指站内搜索,非通用搜索,如商品搜索,后台选关系型,前台选倒排索引。
5.事务型系统,如库存、交易、记账,选关系型+缓存+一致性协议,或新型关系数据库。
6.离线计算,如大量数据分析,首选列式,关系型也可以。
7.实时计算,如实时监控,可以选时序数据库,或列式数据库。

### NoSQL 数据库类型与分类 #### 1. 键值存储 (Key-Value Store) 键值存储是最简单的NoSQL数据库形式之一。这种类型的数据库通过唯一的键来索引数据,而对应的值可以是任何类型的数据对象。键值存储非常适合于缓存层以及需要快速读取和写入简单数据结构的应用程序。 ```python # Python示例:使用字典模拟键值存储 key_value_store = {"user_001": "Alice", "user_002": "Bob"} print(key_value_store["user_001"]) # 输出 Alice ``` [^1] #### 2. 列族存储 (Column-Family Store) 列族存储设计用来处理非常大量的稀疏表格数据。它允许按行或列的方式高效访问大量记录,并支持动态增加新列而不影响现有查询效率。这类数据库通常被搜索引擎公司所采用,因为它们能够很好地应对频繁更新的需求并提供高效的扫描功能。 [^4] #### 3. 文档型数据库 (Document-Oriented Database) 文档型数据库以JSON或其他类似的格式保存半结构化数据作为单个文档单位。每个文档都可以有不同的字段集,这使得应用程序更容易适应变化中的业务逻辑。MongoDB就是一个流行的文档型数据库解决方案,在Web应用开发领域广泛应用。 ```json { "_id": ObjectId("..."), "name": "John Doe", "address": { "street": "Main St.", "city": "Anytown" } } ``` [^3] #### 4. 图形数据库 (Graph Database) 图形数据库专门针对高度关联的数据进行了优化,比如社交网络分析、推荐系统等场景下的复杂关系建模。Neo4j是一个著名的开源图形数据库平台,提供了强大的图算法实现能力,可以帮助挖掘隐藏在网络背后的价值信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值