作者:邵兵
链接:https://www.zhihu.com/question/21677041/answer/22393192
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
1. RDBMS
让数据集保持在一台单一的机器上是RDBMS提供ACID特性和丰富查询模型的最好方式。但数据集变大时,垂直扩展(scaling up)带来诸多限制。企业慢慢发现,通过增加多节点的服务器进行横向扩展(scaling out)是一种更经济和更可行的方式。DBA们对RDBMS采用的横向扩展的方法主要有主从复制(Master-slave)、分片(Sharding)。
横向扩展RDBMS – Master/Slave
横向扩展RDBMS - Sharding
- 水平分区(sharding/分表) 将同一个表的记录拆分到不同的表甚至是服务器上,这往往需要一个稳定的算法来保证读取时能正确从不同的服务器上取得数据。比如,将ZIP codes小于50000的客户存储在CustomersEast,将ZIP codes大于或等于50000的客户存储在CustomersWest。CustomersEast和CustomersWest就成为两个分区表。方法有 Range-Based Partitioning, Key or Hash-Based partitioning等。
- 不透明,应用需要做到可识别分区
- 不再有跨分区的关系/joins
- 跨片参照完整性损失
其他RDBMS扩展方法
2. NoSQL
NoSQL现在被理解为 Not Only SQL 的缩写,是对非关系型的数据库管理系统的统称(正因为此,人们通常理解 NoSQL 是 anti-RDBMS)。
NoSQL 与 RDBMS 存在许多不同点,
- 最重要的是NoSQL不使用SQL作为查询语言。
- NoSQL 不需要固定的表模式(table schema),也经常会避免使用SQL的JOIN操作,一般有可水平扩展的特征。
- NoSQL产品会放宽一个或多个 ACID 属性(CAP定理)
CAP 理论
CAP理论是数据系统设计的基本理论,目前几乎所有的数据系统的设计都遵循了这个理论。CAP理论指出,分布式系统只能满足以下三项中的两项而不可能满足全部三项,
- strong consistency – ACID(Atomicity Consistency Isolation Durability):对于关系型数据库,要求更新过的数据能被后续所有的访问都看到,这是强一致性。
- weak consistency – BASE(Basically Available Soft-state Eventual consistency )
-- Basically Available - system seems to work all the time (基本可用)
-- Soft State - it doesn't have to be consistent all the time (不要求所有时间都一致)
-- Eventually Consistent - becomes consistent at some later time (最终一致性)
对于分布式数据系统(scale out),分区容忍性是基本要求,否则就失去了价值。因此只能在一致性和可用性上做取舍,如何处理这种取舍正是目前NoSQL数据库的核心焦点。几乎所有的情况都是牺牲一致性而换取高可用性。当然,牺牲一致性,只是不再要求关系数据库中的强一致性,而是只要系统能达到最终一致性即可。考虑到客户体验,这个最终一致的时间窗口,要尽可能的对用户透明,也就是需要保障“用户感知到的一致性”。通常是通过数据的多份异步复制来实现系统的高可用和数据的最终一致性的。
3. HBase
HBase is an open-source, distributed, column-oriented database built on top of HDFS (or KFS) based on BigTable!
按照CAP理论,HBase属于C+P类型的系统。HBase是强一致性的(仅支持单行事务)。每一行由单个区域服务器(region server)host,行锁(row locks)和多版本并发控制(multiversion concurrency control)的组合被用来保证行的一致性。
There are three types of lookups:
Access or manipulate
- Programmatic access via Java, REST, or Thrift APIs.
- Scripting via JRuby.
HBase benefits than RDBMS
- No real indexes
- Automatic partitioning
- Scale linearly and automatically with new nodes
- Commodity hardware
- Fault tolerance
- Batch processing
4. Hive
- Provide higher-level language (HQL, like SQL) to facilitate large-data processing
- Higher-level language “compiles down” to Hadoop Map/Reduce jobs
5. Hive + HBase
Reasons to use Hive on HBase:
References
1. Hbase, Hive and Pig: http://www.cs.kent.edu/~jin/Cloud12Spring/HbaseHivePig.pptx
2. Slashdot效应
3. RDBMS vs. NoSQL:反派为什么会得以存活并发展壮大-CSDN.NET
4. Partition (database)
5. Multi-master replication
6. 内存数据库的基本原理与应用
7. NoSQL
8. CAP定理
9. 如何“打败”CAP定理
10. Eventual consistency
11. HBase - Apache HBase Home
12. hbase介绍 - 阿里数据平台 alidata.org
13. 细数Google HBase与BigTable区别在哪里?
链接:https://www.zhihu.com/question/21677041/answer/22393192
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
1. RDBMS
让数据集保持在一台单一的机器上是RDBMS提供ACID特性和丰富查询模型的最好方式。但数据集变大时,垂直扩展(scaling up)带来诸多限制。企业慢慢发现,通过增加多节点的服务器进行横向扩展(scaling out)是一种更经济和更可行的方式。DBA们对RDBMS采用的横向扩展的方法主要有主从复制(Master-slave)、分片(Sharding)。
横向扩展RDBMS – Master/Slave
- 利用数据库的复制或镜像功能,同时在多台数据库上保存相同的数据,并且将读操作和写操作分开,写操作集中在一台主数据库上,读操作集中在多台从数据库上。复制过程的速度与系统中的从节点数量成反比。
- 关键的读取可能不正确,因为写可能没有来得及被向下传播;
- 大数据集可能会造成问题,因为主节点需要将数据复制到从节点;
横向扩展RDBMS - Sharding
- 通常来说,在满足ACID特性的数据库中进行扩展是非常难的。基于这个原因,对数据进行扩展,这个数据库本身就必须拥有简单的模型,将数据分割为N片,然后在单独的片中执行查询。数据分割的单元被称为“shard”。将N片数据分配个M个DBMS进行操作。DBMS并不会去管理数据片,这需由服务开发者自行完成。
- 不同的分片方法有:
- 水平分区(sharding/分表) 将同一个表的记录拆分到不同的表甚至是服务器上,这往往需要一个稳定的算法来保证读取时能正确从不同的服务器上取得数据。比如,将ZIP codes小于50000的客户存储在CustomersEast,将ZIP codes大于或等于50000的客户存储在CustomersWest。CustomersEast和CustomersWest就成为两个分区表。方法有 Range-Based Partitioning, Key or Hash-Based partitioning等。
- 优点与不足
- 不透明,应用需要做到可识别分区
- 不再有跨分区的关系/joins
- 跨片参照完整性损失
其他RDBMS扩展方法
- Multi-Master replication:所有成员都响应客户端数据查询。多主复制系统负责将任意成员做出的数据更新传播给组内其他成员,并解决不同成员间并发修改可能带来的冲突。
- INSERT only, not UPDATES/DELETES:数据进行版本化处理。
- No JOINs, thereby reducing query time:Join的开销很大,而且频繁访问会使开销随着时间逐渐增加。非规范化(Denormalization)可以降低数据仓库的复杂性,以提高效率和改善性能。
- In-memory databases:磁盘数据库解决的是大容量存储和数据分析问题,内存数据库解决的是实时处理和高并发问题。主流常规的RDBMS更多的是磁盘密集型,而不是内存密集型。
2. NoSQL
NoSQL现在被理解为 Not Only SQL 的缩写,是对非关系型的数据库管理系统的统称(正因为此,人们通常理解 NoSQL 是 anti-RDBMS)。
NoSQL 与 RDBMS 存在许多不同点,
- 最重要的是NoSQL不使用SQL作为查询语言。
- NoSQL 不需要固定的表模式(table schema),也经常会避免使用SQL的JOIN操作,一般有可水平扩展的特征。
- NoSQL产品会放宽一个或多个 ACID 属性(CAP定理)
CAP 理论
CAP理论是数据系统设计的基本理论,目前几乎所有的数据系统的设计都遵循了这个理论。CAP理论指出,分布式系统只能满足以下三项中的两项而不可能满足全部三项,
- 一致性(Consistency)(所有节点在同一时间具有相同的数据)
- 可用性(Availability)(保证每个请求不管成功或者失败都有响应)
- 分区容忍性(Partition tolerance)(系统中任意信息的丢失或失败不会影响系统的继续运作)
- strong consistency – ACID(Atomicity Consistency Isolation Durability):对于关系型数据库,要求更新过的数据能被后续所有的访问都看到,这是强一致性。
- weak consistency – BASE(Basically Available Soft-state Eventual consistency )
-- Basically Available - system seems to work all the time (基本可用)
-- Soft State - it doesn't have to be consistent all the time (不要求所有时间都一致)
-- Eventually Consistent - becomes consistent at some later time (最终一致性)
对于分布式数据系统(scale out),分区容忍性是基本要求,否则就失去了价值。因此只能在一致性和可用性上做取舍,如何处理这种取舍正是目前NoSQL数据库的核心焦点。几乎所有的情况都是牺牲一致性而换取高可用性。当然,牺牲一致性,只是不再要求关系数据库中的强一致性,而是只要系统能达到最终一致性即可。考虑到客户体验,这个最终一致的时间窗口,要尽可能的对用户透明,也就是需要保障“用户感知到的一致性”。通常是通过数据的多份异步复制来实现系统的高可用和数据的最终一致性的。
3. HBase
HBase is an open-source, distributed, column-oriented database built on top of HDFS (or KFS) based on BigTable!
按照CAP理论,HBase属于C+P类型的系统。HBase是强一致性的(仅支持单行事务)。每一行由单个区域服务器(region server)host,行锁(row locks)和多版本并发控制(multiversion concurrency control)的组合被用来保证行的一致性。
There are three types of lookups:
- Fast lookup using row key and optional timestamp.
- Range scan from region start to end.
- Full table scan (全表扫描)
Access or manipulate
- Programmatic access via Java, REST, or Thrift APIs.
- Scripting via JRuby.
HBase benefits than RDBMS
- No real indexes
- Automatic partitioning
- Scale linearly and automatically with new nodes
- Commodity hardware
- Fault tolerance
- Batch processing
4. Hive
- Provide higher-level language (HQL, like SQL) to facilitate large-data processing
- Higher-level language “compiles down” to Hadoop Map/Reduce jobs
5. Hive + HBase
Reasons to use Hive on HBase:
- A lot of data sitting in HBase due to its usage in a real-time environment, but never used for analysis
- Give access to data in HBase usually only queried through MapReduce to people that don’t code (business analysts)
- When needing a more flexible storage solution, so that rows can be updated live by either a Hive job or an application and can be seen immediately to the other
References
1. Hbase, Hive and Pig: http://www.cs.kent.edu/~jin/Cloud12Spring/HbaseHivePig.pptx
2. Slashdot效应
3. RDBMS vs. NoSQL:反派为什么会得以存活并发展壮大-CSDN.NET
4. Partition (database)
5. Multi-master replication
6. 内存数据库的基本原理与应用
7. NoSQL
8. CAP定理
9. 如何“打败”CAP定理
10. Eventual consistency
11. HBase - Apache HBase Home
12. hbase介绍 - 阿里数据平台 alidata.org
13. 细数Google HBase与BigTable区别在哪里?
相关推荐
本文将探讨数据中心供电系统的发展现状以及未来的演进路线,特别强调了市电直供技术和去传统UPS供电架构的趋势。 数据中心供电系统的技术演进主要围绕着如何提供更加高效、稳定和经济的电源供应。市电直供技术是指...
本文将深入剖析位置服务中的数据存储挑战,重点探讨位置表示、位置数据采集、资产管理、基于位置的查询以及系统架构等方面的问题。 ### 一、位置表示:几何与对象 所有基于位置的服务都需要一种方式来表示位置信息...
大数据应用架构和演进路线是现代信息技术领域中的关键议题,它涉及到如何有效地处理、分析和利用海量数据以驱动业务决策和创新。在这个过程中,多个关键知识点相互交织,包括产品需求理解、整体规划、演进路线、开发...
- 演进路线通常涵盖从传统数据处理到大数据处理的过渡,可能涉及技术栈的升级、数据模型的优化以及服务化的转变。 3. **开发及运营能力**: - 强调了在大数据环境中建立高效开发和运营流程的重要性,包括数据服务...
它不仅简化了数据科学家和分析师的工作,使得他们无需深入学习各种不同的数据存储系统就能进行高效的数据探索,而且还提供了一种统一的视图,将传统的数据仓库与Hadoop、NoSQL数据库和其他大数据源紧密集成。...
云存储技术路线及选型分析是一项关键任务,它涉及到企业数据存储策略的制定与实施。云存储通过将数据存储在远程服务器上,提供灵活、可扩展的存储解决方案,以适应不断变化的业务需求。 1. **云存储应用场景** - *...
分布式技术架构的演进路线是随着业务增长和技术挑战逐渐发展和完善的过程。在初期,系统往往采用简单的架构,称为LAMP架构,即Linux操作系统、Apache Web服务器、PHP编程语言和MySQL数据库。这种架构成本低,适合...
3. **大数据分析平台演进路线**: 平台的建设将分阶段进行,初期可能重点在于数据平台的基础设施建设,包括数据仓库、数据集成、数据质量管理和BI应用的搭建。 4. **大数据分析平台预期收益**: - **数据共享**:...
这一解决方案涉及到多个层面和环节,包括平台的构建、演进路线、数据质量管理以及实际应用场景等。 首先,新型智慧城市大数据分析平台的综述强调了该平台的核心功能,即整合来自不同领域的数据资源,如交通、环境、...
【云计算与数据中心架构演进趋势】的讲解涵盖了数据中心面临的挑战、云计算数据中心的网络、计算、存储、调度orchestration以及数据中心的演进路线。在现代IT环境中,数据中心正经历着从传统模式向云计算的转型,以...
而分布式缓存则能处理更大规模的数据存储,并具备更好的扩展性和容错能力,如Memcache和Redis是常用的分布式缓存方案。 #### 内容分发网络(CDN) CDN是一种通过将内容分发至靠近用户的地方来提高访问速度的技术。...
### 医院信息化的三种技术演进路线 #### 第一阶段:医院管理信息化阶段 **技术路线概述**: - 在这一阶段,医院信息化建设主要围绕HIS(Hospital Information System)系统展开,旨在实现对挂号、收费、出入院、...
该方案涉及多个关键方面,包括大数据应用融合的概述、总体架构、演进路线、实施重点、质量管理平台以及应用案例分析。 1. **大数据应用融合综述**: 这一阶段主要是对企业当前的数据应用现状进行分析,识别存在的...
数据仓库架构通常分为以下几个层次:操作数据存储(ODS)、数据仓库(DW)、数据集市(DM)和OLAP(在线分析处理)服务器。 二、数据仓库的解决方案分类 1. 集中式数据仓库:所有数据集中在一个中心位置,适用于...
数据中台技术选型最佳实践涉及了大数据技术的演进历程、数据中台的架构特点以及数据研发的具体实践。以下是对这些知识点的详细说明: 1. 大数据演进: - 第一阶段:企业级数据仓库(EDW)时代,以IBM、Oracle、...
大数据分析平台演进路线包括三个阶段:第一阶段是数据平台建设,第二阶段是数据应用建设,第三阶段是数据整合和应用。该平台的演进路线旨在逐步实现金融集团的业务协作、创新和数据共享。 【大数据分析平台一期实施...
在线学习实践中,推荐系统架构包括数据采集、数据处理、数据存储、模型训练和在线 Serving 等几个部分。在线学习算法还可以实现实时多数据流join和实时产出多数据融合的细粒度事实数据。 技术栈 技术栈是指在线...
3. 数据存储层:分为源数据区、大数据区、历史数据查询区和实时数据查询区,分别处理原始数据、大规模数据、历史查询和实时查询需求。 4. 数据处理层:包括主数据区、数据计算区、数据监控和报警区,以及数据清洗和...