标签搜索

nosql知识点

wehg489
2026-01-04 / 0 评论 / 6 阅读 / 正在检测是否收录...

它到底是个啥?

为什么需要它?(和传统数据库比有什么不一样?)

想象一下传统数据库是个严谨的图书馆管理员,而 NoSQL 是应对双十一抢购的超级仓库管理员。
mkw14tp8.png

NoSQL 的四大门派
它们存储数据的方式不同,就像不同的收纳工具。

mkw8bhhi.png

两个必须懂的核心理论

优点和缺点(大实话)
优点:
能“长大”:数据多了,加便宜机器就行,扩展简单。
速度快:为简单查询而生,没有复杂关联,所以贼快。
很随和:数据结构说变就变,适合需求经常改的互联网项目。

缺点:
不“严谨”:很难做到像银行转账那样精确的复杂事务。
查询弱:不适合做多表关联、复杂报表分析。
得学新招:每种NoSQL都有自己的操作方式,得重新学习。

什么时候该用NoSQL?
你的数据量非常大,而且增长飞快。
你需要极高的读写速度(比如秒杀、点赞)。
你的数据结构经常变化,或者本来就是半结构化/无结构的(比如JSON日志、用户生成内容)。
你的应用需要轻松地在多台机器上水平扩展。

总结
可以把数据库工具想象成交通工具:
SQL数据库 像一辆精密的轿车,适合在规则明确的高速公路(稳定业务)上,安全、准确地把你和家人(关联数据)送到目的地。跑长途(复杂分析)很稳。
NoSQL数据库 像一队灵活的皮卡或集装箱卡车,适合在工地(快速迭代的业务)上,运送大量、各式各样的货物(海量多样数据)。拉货能力强,但坐起来没那么舒服(事务弱)。

没有谁最好,只有谁更合适。 现在很多大公司都是“混搭风”,核心交易用SQL保证正确,海量日志和缓存用NoSQL追求速度。

在分布式数据库中,垂直分片是指把一个数据表“竖着”切成多个部分,每个部分包含原表的一部分列。比如一个学生表有学号、姓名、年龄、成绩等列,可以切成两个分片:一个包含学号、姓名,另一个包含学号、年龄、成绩。

为了保证把这些分片重新拼凑起来能得到完整的原始表(可靠重构),并且尽量不重复存储数据(最小冗余),分片设计必须满足一个关键条件:每个分片都必须包含原表的主键(比如学号)。

为什么?
主键是拼接的依据:就像拼图时每个碎片都要有对应的位置标记,主键就是行的唯一标记。每个分片都有主键,才能通过主键把属于同一行的不同列正确连接起来,恢复原表。

避免冗余:除了主键,其他列只在其中一个分片中出现,这样就不会重复存储,节省空间。

BASE 是三个短语的首字母缩写,描述了分布式系统的三个特性:
B - Basically Available(基本可用)

大白话:系统始终能响应用户请求,不会彻底挂掉。

怎么做到:在出现故障(比如一台机器宕机、网络分区)时,系统可能会牺牲一部分功能或降低一点服务质量(比如返回一个不那么精确的旧数据,或者让查询慢一点),但核心服务仍然可用。

例子:双十一期间,淘宝商品详情页的“累计评论数”可能不是实时精确数字(有几分钟延迟),但“加入购物车”和“下单”这个核心功能必须能用。这就是“基本可用”——用部分非核心数据的不精确,换取核心交易流程的不中断。

S - Soft State(软状态)

大白话:系统中的数据,在某一时刻,不需要所有副本都保持完全一致。

怎么理解:与“硬状态”(任何时刻数据都一致且确定)相对。“软状态”允许数据在不同副本之间存在一个中间状态,这个状态可能因同步延迟而暂时不同,并且可能在没有外部输入的情况下,随着时间自我演变(最终达到一致)。

例子:你微博点赞后,你的手机立刻显示“已赞”(你的本地副本状态),但这个“赞”的数量可能还没同步到所有服务器,所以你朋友那边看到的点赞数可能还没更新。这个“你已赞但总数未变”的中间过程,就是软状态。

E - Eventual Consistency(最终一致性)

大白话:只要系统不再接收新的更新,经过一段“同步时间”后,所有副本的数据最终会变成完全一致的状态。

这是BASE的最终目标。它不强求“瞬间一致”,但保证“最终一致”。

例子:还是微信群消息。只要没人再发新消息,经过几秒或几分钟的同步,所有在线成员的手机都会显示完全相同的聊天记录。

NewSQL 的核心特性(三大承诺)

弹性云计算 EC2
是什么:亚马逊 AWS 提供的弹性计算服务(虚拟机实例)。它是基础设施即服务(IaaS) 的典范。
与NoSQL关系:它不属于Google,属于亚马逊。虽然很多NoSQL数据库可以部署在EC2上,但它本身不是数据库技术,而是云计算基础设施。因此,它不属于Google云计算平台技术架构。

mkxdmgw2.png

0

评论

博主关闭了当前页面的评论
歌曲封面
0:00