本文介绍一下NoSQL相关的知识。
书籍推荐 <<NoSQL精粹>> 英文名 <<NoSQL Distilled>> 作者 Martin Fowler。
第一眼看到NoSQL时把它理解为No SQL,这让我着实高兴了一阵子。因为我对SQL没啥兴趣,尤其遇到写Function、Procedure、Trigger时更是烦恼。这下子出了个不要SQL的数据库理论加有实际开源产品的东东,我很高兴。
但是找了相关资料看了之后稍微有点失望:NoSQL的意思为 Not Only SQL。也就是说数据存储技术不仅仅是SQL的意思。
关系数据库制霸数据存储领域几十年了,这期间也出现过挑战其地位的理论,如对象数据库、文件存储数据、XML数据库等等。但是关系数据库的地位一直稳如磐石。
如今看来NoSQL的出现也挑战不了关系数据库的地位。NoSQL的目标就是协助构建高性能、易扩展、易编程的系统。
NoSQL看起来更像是要和关系数据库和平共处,互助互补。NoSQL带来的是数据持久化的另一种选择。NoSQL可能要开启数据库领域混合持久化时代。
大师说应用程序
选择NoSQL有两个理由:
提高应用程序开发效率:选择了NoSQL就可以抛弃ORM映射,改为直接存储程序数据结构元素;这是更符合应用程序需求的一种数据模型及开发过程。
NoSQL可以更高效地处理大规模数据: NoSQL分布式集群部署简单,NoSQL存储的数据模型更符合应用程序需要;关系数据库是为独立运行的计算机设计的,其数据模型与现今流行的面向对象编程阻抗失衡,需要做一个关系映射。
下面重点介绍一下NoSQL的四种模型、分布式模型、Map-Reduce(映射-化减)等概念。
四种NoSQL数据库:
1.
键值数据库(Key-Value Store): 它可以理解为一张简单的哈希表(hash table),主要应用在所有数据库访问均通过主键访问的情况下。
键值数据库API简单,能够存储程序聚合单元(通俗理解为可以存储对象)。
流行的键值数据库有:Riak,Redis(数据结构服务器,Data Structure Server),Memcached DB,Memcaced,HamsterDB。
我自己闲暇时把弄过Memcached,其通过字符串键值来操作数据;确实可以存储序列化后的Java对象;可以做一个集群部署;应用程序接口确实很简单。
2.
文档数据库(Document DataBase): 文档数据库可以存放并获取文档,其格式可以为XML、JSON、BSON等;这些文档具有自描述性(self-decribing),呈分层的树状数据结构(Hierarchical tree data structure),可以包含映射表、集合和纯量值;数据库中文档彼此相似,但不必完全相同;其存放的文档就相当于键值数据库所存放的值。
流行的文档数据库有: MongoDB、CouchDB、OrientDB、RavenDB等。
我写过MongoDB的Hello World程序,以后再继续关注。
3.
列族数据库: 其可以存储关键字及其映射值,并且可以把值分成多个列族,让每个列族代表一张数据映射表。
流行的列族数据库: Cassandra,HBase,Hypertable等。
个人暂时还没有应用过列族数据库。
4.
图数据库: 可以存放实体及实体间关系;实体又叫节点(Node),他们具有属性(Property);可以将节点视为应用程序中某个对象实例;关系又叫边(edge),他们也有属性 ;边具备方向性(directional significance),而节点则按关系组织起来,以便在其中查找所需模式;用图将数据一次性组织好,便可以根据关系以不同的方式解读它。
图数据库有:Neo4J、Infinite Graph、OrientDB等。
暂时还没有接触过图数据库。
分布式部署可能是非常熟悉的名词了,那数据库的分布式模型又有哪些呢?下面来介绍一下:
数据分布有两条路径:复制(replication),分片(sharding)。
分片则是将不同数据存放的不同节点,每一个数据子集都有专门一台服务器负责。
复制就是将同一份数据拷贝至多个节点。
复制又可以分为两种形式:主从复制,对等复制。
主从复制:将其中一个节点作为权威数据源,并负责写入操作;其他从节点都要和主节点保持同步,他们可以负责读取操作。
对等复制:任何节点都可以写入,节点间相互协调以同步其数据。
以上介绍了数据库的3种分布式模型,其优缺点都非常明显:
分片部署模型:优点是对应用性能提升作用明显(同时提升了读写性能);缺点是故障恢复能力没有;但是某个节点故障只会影响部分用户又是其优点了。
主从复制模型:优点是提升了数据库读的能力,避免了写入冲突;缺点是数据库写可能成为应用的瓶颈,并且主库一旦故障了没有恢复能力。
对等复制模型:优点是解决了主从复制写的毛病;缺点是引入了数据一致性的问题。
大师的思考:
面向聚合的数据库能够兴起,很大程度上是由于集群的增长。运行在集群环境中的数据库对数据存储问题的权衡方式与单机环境有所不同。集群不仅改变了数据存储规则,而且改变了数据计算规则。如果把大量数据放在集群里,那么为了有效处理数据,你必须以另外一种思路来考虑如何安排数据处理流程。
当把数据库放到集群后,立刻带来一个好处:把运算工作分布到多台计算机中去。然而此时仍要试着减少通过网络传输的数据量,把某个节点所需的数据尽可能多的放在节点执行。
映射-化减 模式(map-reduce pattern)是一种安排数据处理流程的手段,可以利用集群中的多台计算机,同时又能将某台计算机所需的数据及处理工作尽量放在本机执行。
分享到:
相关推荐
Hadoop部分重点考查了Hadoop的核心组成、特性、生态系统组件以及HDFS相关的理论和操作。 HBase部分着重考查了HBase作为分布式NoSQL数据库的数据模型、架构设计、基本概念和shell命令操作。 MapReduce部分主要考查了...
2. Hadoop部分重点考查了Hadoop的核心组成、特性、生态系统组件以及HDFS相关的理论和操作。 3. HBase部分着重考查了HBase作为分布式NoSQL数据库的数据模型、架构设计、基本概念和shell命令操作。 4. MapReduce部分...
基本概念: 考核测试对象对于数据库的基本概念的理解,如数据库管理系统(DBMS)、数据库模型(关系型、NoSQL 等)、数据表、字段、主键、外键等。 SQL 查询语言: 考查测试对象是否能够编写基本的 SQL 查询语句,...
这是一个展示理论和应用计算机科学概念的项目。 该项目主要用于我的学习,但可以用作其他资源。 我所有的主题都将包含README.md,其中详细说明了该概念在理论上的工作原理,然后是两个python文件。 一个文件将是...
在熟练运用Python语言的基础上,更加深入的掌握开源的爬虫框架Scrapy,为后续其他与爬虫相关的业务奠定理论基础和数据基础;进一步理解分布式的概念,为大数据的相关研究和硬件条件奠定基础;熟练掌握Python搭建网站...
《大数据日知录:架构与算法》对众多纷繁芜杂的相关技术文献和系统进行了择优汰劣并系统性地对相关知识分门别类地进行整理和介绍,将大数据相关技术分为大数据基础理论、大数据系统体系结构、大数据存储,以及包含...
《大数据日知录:架构与算法》的读者对象包括对NoSQL 系统及大数据处理感兴趣的所有技术人员,以及有志于投身到大数据处理方向从事架构师、算法工程师、数据科学家等相关职业的在校本科生及研究生。
《大数据日知录:架构与算法》的读者对象包括对NoSQL 系统及大数据处理感兴趣的所有技术人员,以及有志于投身到大数据处理方向从事架构师、算法工程师、数据科学家等相关职业的在校本科生及研究生。
《大数据日知录:架构与算法》的读者对象包括对NoSQL 系统及大数据处理感兴趣的所有技术人员,以及有志于投身到大数据处理方向从事架构师、算法工程师、数据科学家等相关职业的在校本科生及研究生。
《大数据日知录:架构与算法》的读者对象包括对NoSQL 系统及大数据处理感兴趣的所有技术人员,以及有志于投身到大数据处理方向从事架构师、算法工程师、数据科学家等相关职业的在校本科生及研究生。
, 《大数据日知录:架构与算法》的读者对象包括对NoSQL 系统及大数据处理感兴趣的所有技术人员,以及有志于投身到大数据处理方向从事架构师、算法工程师、数据科学家等相关职业的在校本科生及研究生。
数据库笔记.docx2017上半年 在设计软件的模块结构时,(26)不能改进设计质量。...CAP理论是NoSql理论的基础,下列性质不属于CAP的是(61)。 (61)A.分区容错性 B.原子性 C.可用性 D.一致性 【答案】B 【解析】 CAP理论
架构基础:将介绍架构设计的历史背景,阐述架构相关的概念以及架构设计的本质;提炼三个核心架构设计原则;详细描述架构设计的标准流程和步骤。 高性能架构模式:将介绍高性能数据库集群读写分离、分库分表两种方案...
《数据库系统:数据库与数据仓库导论》内容全面,理论...详细解析操作型数据库和分析型数据库的基本概念、设计方法和使用技巧,简要介绍数据挖掘、NoSQL数据库等高级主题,结合丰富的习题和案例帮助学生掌握基础知识。
《大数据概论》主要介绍大数据概论,内容包括大数据概述、科学研究第四范式、分布系统设计的CAP 理论、NoSQL 数据库、复杂网络、MapReduce 分布编程模型、大数据存储、大数据分析、大数据挖掘、大数据可视化、大数据...
本书教导了如何以理论和实践的方式学习Python,并提供了实际示例和该代码存储库,可帮助对本书进行补充和探索每个概念。 可以找到的许多主要概念中的一些是: 版本之间的差异(次要版本和主要版本)。 语言的演变和...
关于范式的详细说明和定义,以及其他⼀些关系数据库的理论是⼤数据领域建模的基础,有兴趣的读者可以参考相关的经典数据库理论书籍,如《数据库系 统概念》。 从OLTP和OLAP系统的区别看模型⽅法论的选择 OLTP系统...
关系数据库的理论基础是关系模型,是借助于集合代数等数学概念和⽅法来处理数据库中的数据,现实世界中的实体以及实体之间 的联系⾮常容易⽤关系模型来表⽰。容易理解的模型、容易掌握的查询语⾔、⾼效的优化器、...
⼆、⼤数据概念 4V特性: § 数据量⼤(Volume) § 处理速度快(Velocity) § 数据类型繁多(Variety) § 价值密度低(value) 三、⼤数据的影响 1、图灵获奖者、著名数据库专家Jim Gray博⼠观察并总结⼈类⾃古...