本文介绍一下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)是一种安排数据处理流程的手段,可以利用集群中的多台计算机,同时又能将某台计算机所需的数据及处理工作尽量放在本机执行。
分享到:
相关推荐
NoSQL(Not Only SQL)的概念在21世纪初随着大数据时代的到来而兴起,它打破了传统的关系型数据库模型,为处理海量数据提供了新的解决方案。 一、NoSQL的崛起与背景 在互联网时代,特别是社交网络、电子商务和大...
本书首先会介绍NoSQL数据库的基本概念,包括与关系型数据库的区别,以及NoSQL的四大类型:键值存储、列族、文档数据库和图形数据库。这些类型的数据库各有优势,适应不同的应用场景,例如键值存储适合高速缓存,文档...
【文件名称列表】:“常见的NoSQL数据库.mmap”和“基础知识.mmap”分别代表了NoSQL数据库的种类和基础理论的学习内容。 **NoSQL数据库入门知识详解** NoSQL(Not Only SQL)数据库是一种非关系型数据库,它的设计...
### NoSQL相关技术、算法与思想 #### 一、引言 随着互联网技术的迅猛发展,数据量呈爆炸式增长,传统的关系型数据库在面对海量数据处理时逐渐显露出其局限性。为解决这一问题,NoSQL(Not Only SQL)数据库应运而生...
这本书深入浅出地探讨了NoSQL(Not Only SQL)数据库的概念、设计原则以及在实际应用中的最佳实践。以下是基于书中的内容,对NoSQL数据库的一些关键知识点进行的详细解释。 1. **NoSQL的兴起**:随着互联网技术的...
五分钟法则是内存数据存储的理论依据,它强调了 RAM 是硬盘,硬盘是磁带,I/O 的五分钟法则是指内存数据存储的访问速度远远高于磁盘存储的访问速度。 Amdahl定律和Gustafson定律是计算机科学中两个重要的定律。...
本文总结了 NoSQL 数据库的核心思想、数据一致性、CAP 定理、BASE 理论、eBay 模式、NWR、两阶段提交协议、时间戳、向量时钟、Paxos 协议、HBase 等相关概念和技术。 数据一致性是分布式系统中的一致性问题的解决...
【描述】:该文档是关于Nosql分布式数据库的一份期末考试试题,涵盖了多种NoSQL数据库的相关知识,包括选择题和填空题,涉及MySQL、MongoDB、Redis、HBase等数据库的特点、优缺点、操作语句以及相关概念。...
本书详细介绍了多语言持久化(polyglot persistence)这一新兴概念,并对NoSQL数据库技术进行了深入的探讨。接下来,我们将基于书名、描述、标签和部分内容,深入挖掘这本关于NoSQL技术的书籍所涉及的知识点。 首先...
此外,书中的书签目录使得读者可以快速定位到感兴趣的主题,比如CAP定理、ACID与BASE理论、数据分区与复制策略、数据一致性模型等关键概念。超清文字版则保证了内容的清晰可读,对于深入理解和学习NoSQL至关重要。 ...
本章节主要探讨了NoSQL数据库中的三种重要类型:图数据库、文档数据库和列族数据库,并结合北京邮电大学(BUPT)的相关课程作业进行深入学习。 首先,让我们详细了解一下图数据库。图数据库以节点、边和属性三元组...
### 《大数据挑战-NoSQL数据库技术》读书笔记 #### 一、概论 NoSQL数据库是一种新型数据库管理系统,它区别于传统的关系型数据库,具备...了解NoSQL的基本概念和技术细节对于现代软件开发人员和架构师来说至关重要。
CAP理论是NoSQL数据库设计的核心概念,它指出了在分布式系统中,无法同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition Tolerance)。不同的NoSQL数据库根据业务需求,会选择偏向于某...
1. **第2章**:通常会介绍NoSQL的基本概念,如CAP理论、ACID与BASE原则,以及NoSQL的主要类型(键值存储、列族、文档数据库和图形数据库)。源码可能包含简单的数据存取示例,展示不同NoSQL数据库API的用法。 2. **...
本书《专业NoSQL》旨在通过实际操作的方式,帮助读者深入了解NoSQL数据库的核心概念和技术实践。 #### 二、NoSQL数据库概述 ##### 2.1 什么是NoSQL? NoSQL数据库是指“非关系型数据库”,它不遵循传统的表格结构...
本文主要围绕思想篇、手段篇、软件篇和应用篇四个部分展开,揭示了NoSQL数据库的核心概念、实现方式、常用软件及其实际应用。 在思想篇中,作者提到了CAP理论,这是分布式系统设计的基础。CAP理论指出,任何分布式...