学习NoSQL
来源:互联网 发布:mac电脑忘记管理员密码 编辑:程序博客网 时间:2024/06/05 15:22
NoSQL的全称是Not Only SQL,不仅仅是SQL,它是跟数据库存储有关的思想。google的bigtable和amazon的dynamo是对该思想的两个优秀实现。
数据非关系化
上一代的数据库都是关系型数据库,突出表的结构。NoSQL数据库不采用关系型,而是用key-value来存储数据,数据之间的依赖变得更加稀疏。
分布式存储
在海量数据的数据库存储上,一般是人为的进行数据库的分布存储,依据数据的某一项属性来存储到不同的结点上。这样的划分是人为实现的,单个数据库并不知道整个数据存储分布情况。NoSQL希望把这个过程承包下来自己解决的,于是Map/Reduce,一致性Hash都应用到这里来。扩展性是分布式系统的一个重要要求,非关系型的数据库是方便扩容的。另外为了保证数据的可靠性,数据至少要有2份副本。
以MySQL为代表的关系型数据库所遵守的规则是ACID,即原子性、一致性、独立性、持久性。而NoSQL所遵守的规则是BASE,即基本可用、软状态、最终一致性。NoSQL认为,对于分布式系统来说,系统一致性、可用性、容错性这三点的同时满足是不显示的,更不会满足高可用性。可以针对不同的场景需要,满足其中的两点,放宽对第三点的要求。
分布式哈希表DHT,一致性哈希
哈希空间是0~2^64的数值空间,一致性哈希的思想是把要存储的数据和存储用的机器结点都映射到哈希空间,然后再做选择。把数据value映射到哈希空间,得到value的key值;把所有服务器结点映射到哈希空间,得到各node值;然后要做的就是在这个哈希空间里做key值到node值的映射。0~2^64的空间可以看作是环形的,并且再约定一个正方向,那么映射关系就可以是key值在正方向上最近的node值。
这样一来,服务器结点的增和减(即node值的添加和移除)只会影响其最近的key值数据的存储。
如果各服务器结点的负载不够均衡,可以添加“虚拟结点”,即添加node值使得node值在环形空间分布的更加均匀,而新添加的node值其实是已有的服务器结点。这就需要在服务器结点到node值空间的映射之间再加一层映射,让同一个服务器结点能映射到多个node值上去。
- NoSQL学习
- NOSQL学习
- 学习NoSQL
- Nosql学习
- nosql 学习
- NoSQL学习系列之一, NoSQL简介
- NoSQL 学习NoSQL数据库的必读资料
- NoSQL数据库学习笔记之 Why NoSQL
- NoSQL数据库学习笔记之 NoSQL百家争鸣
- NoSQL学习资料
- nosql学习笔记
- Nosql Redis学习
- NOSQL资料学习
- NOSQL资料学习
- NoSQL之【memcached】学习
- NoSQL入门学习
- 关于NoSql的学习
- NoSQL数据库学习笔记
- CentOS上编译安装OpenCV-2.3.1与ffmpeg-2.1.2
- OpenCV基础篇之读取显示图片
- malloc,free在二级指针(指针的指针)的应用
- Android蓝牙Settings之界面
- OpenCV基础篇之像素操作对比度调节
- 学习NoSQL
- DSP/BIOS使用之初窥门径——滴答时钟及烧写Flash
- 探cocos2dx特效实现(effects),源码版本(2.2.3)
- 【OC学习-4】OC里面的类怎么声明的?也就是整一个类出来
- SWOT 分析方法
- IOS中AdMob广告点击后方向旋转
- PCB设计资料:看到最后才知道是福利
- 据说有99%的人都会做错的面试题
- LabVIEW上位机与串口通信