`
wbj0110
  • 浏览: 1610869 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

简单介绍一下HBase、Cassandra、Voldemort、Redis、VoltDB、MySQL(转)

阅读更多

hbase

1.简介:

HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群

2.HBase和RDBMS的关系


RDBMS(Relation DabaBase Management System-关系数据库):由关系模型构成的数据库就是关系数据库。关系数  据库由包含数据记录的多个数据表组成,用户可在有相关数据的多个表之间建立相互联系。在关系数据库中,数据被分散到不同的数据表中,以便使每一个表中的数 据只记录一次,从而避免数据的重复输入,减少冗余。


   1)关系数据库的主要特点:

       a.关系系中的每个属性必须是不可分割的数据单元(即表中不能再包含表)。

       b.关系中的每一列元素必须是类型相同的数据。

       c.同一个关系中不能有相同的字段(属性),也不能有相同的记录。

       d.关系的行、列次序可以任意交换,不影响其信息内容。

    2)Hbase里面有以下2个主要概念:

         Rowkey: Hbase 中的记录是按照rowkey来排序的;因此想用hbase存储数据设计好row-key很重要

         Column family:(列族)是在系统启动之前预先定义好的;可有多个列簇,可动态增加,一个列簇可包含多个列

         Hbase优缺点:      

          1.不支持条件查询以及orderby等查询;

          2.列可以动态增加,列为空则不存储数据,节省存储空间;

          3.会自动切分数据;

          4.可以提供高并发读写操作的支持;

3.表解析

    row-key:hbase是基于列的存储模式,所谓的基于列(HBase)就是基于row-key的存储模式,row-key 相当于关系数据库表的主键
    查询的时候根据row-key去查询

    列簇:hbase表中的每一列都归属为一个列簇,列簇是表的schema的一部分(列不是),必须在使用表之前定义,列名都是以列簇为前缀

          如:Column family:test1(test1为列)

              Column family:test2

          如上:test1,test2 都是列簇 Column family 的列

          *访问控制、磁盘和内存的使用统计都是在列族层面进行的。     

    时间戳:HBase中通过row和columns确定的为一个存贮单元称为cell。

            每个 cell都保存着同一份数据的多个版本。版本通过时间戳来索引。

            时间戳的类型是 64位整型。时间戳可以由hbase(在数据写入时自动 )赋值,
            此时时间戳是精确到毫秒的当前系统时间。时间戳也可以由客户显式赋值。

            如果应用程序要避免数据版本冲突,就必须自己生成具有唯一性的时间戳。

            每个 cell中,不同版本的数据按照时间倒序排序,即最新的数据排在最前面。

            当你插入一个数值的时候,如果不手工写时间戳,系统会自动生成一个。当你在hbase shell下scan某个具体表的时候,可以看到一大堆的时间戳    
          

4.优缺点

   a.列的可以动态增加,并且列为空就不存储数据,节省存储空间.

   b.Hbase自动切分数据,使得数据存储自动具有水平scalability.

   c.Hbase可以提供高并发读写操作的支持

   d.不能支持条件查询,只支持按照Row key来查询

   e.暂时不能支持Master server的故障切换,当Master宕机后,整个存储系统就会挂掉.

cassandra

Apache Cassandra是一套开源分布式NoSQL数据库系统。它最初由Facebook开发,用于储存收件箱等简单格式数据,集Google BigTable的数据模型与Amazon Dynamo的完全分布式的架构于一身。Cassandra使用了Google BigTable的数据模型,与面向行的传统的关系型数据库不同,这是一种面向列的数据库,列被组织成为列族(Column Family),在数据库中增加一列非常方便。对于搜索和一般的结构化数据存储,这个结构足够丰富和有效。
Cassandra的系统架构与Dynamo一脉相承,是基于O(1)DHT的完全P2P架构,与传统的基于分片的数据库集群相比,Cassandra可以几乎无缝地加入或删除节点,非常适于对于节点规模变化比较快的应用场景。
和其他数据库比较,Cassandra有三个突出特点:
模式灵活 :使用Cassandra,像文档存储,你不必提前解决记录中的字段。你可以在系统运行时随意的添加或移除字段。这是一个惊人的效率提升,特别是在大型部署上。
真正的可扩展性 :Cassandra是纯粹意义上的水平扩展。为给集群添加更多容量,可以指向另一台电脑。你不必重启任何进程,改变应用查询,或手动迁移任何数据。
多数据中心识别 :你可以调整你的节点布局来避免某一个数据中心起火,一个备用的数据中心将至少有每条记录的完全复制。
一些使Cassandra提高竞争力的其他功能:
范围查询 :如果你不喜欢全部的键值查询,则可以设置键的范围来查询。
列表数据结构 :在混合模式可以将超级列添加到5维[来源请求]。对于每个用户的索引,这是非常方便的。
分布式写操作 :有可以在任何地方任何时间集中读或写任何数据。并且不会有任何单点失败。
与类似系统的比较

Hadoop HBase
Hadoop HBase是Apache Hadoop项目的一个子项目,是Google BigTable的一个克隆,与Cassandra一样,它们都使用了BigTable的列族式的数据模型,两者的主要不同在于:
Cassandra只有一种节点,而HBase有多种不同角色,又架构在Hadoop底层平台之上,部署上Cassandra更简单;
Cassandra的数据一致性策略是可配置的;
HBase提供了Cassandra没有的行锁机制,Cassandra要想使用锁需要配合其他系统,如Hadoop Zookeeper;
HBase提供更好的MapReduce并行计算支持,Cassandra在0.6版本也提供了这个功能;
Cassandra的读写性能和可扩展性更好,但不擅长区间扫描。

Voldemort

Voldemort is a distributed key-value storage system。
Voldemort is not a relational database, it does not attempt to satisfy arbitrary relations while satisfying ACID properties. Nor is it an object database that attempts to transparently map object reference graphs. Nor does it introduce a new abstraction such as document-orientation. It is basically just a big, distributed, persistent, fault-tolerant hash table. For applications that can use an O/R mapper like active-record or hibernate this will provide horizontal scalability and much higher availability but at great loss of convenience. For large applications under internet-type scalability pressure, a system may likely consists of a number of functionally partitioned services or apis, which may manage storage resources across multiple data centers using storage systems which may themselves be horizontally partitioned. For applications in this space, arbitrary in-database joins are already impossible since all the data is not available in any single database. A typical pattern is to introduce a caching layer which will require hashtable semantics anyway. For these applications Voldemort offers a number of advantages:

Voldemort combines in memory caching with the storage system so that a separate caching tier is not required (instead the storage system itself is just fast)
Unlike MySQL replication, both reads and writes scale horizontally
Data portioning is transparent, and allows for cluster expansion without rebalancing all data
Data replication and placement is decided by a simple API to be able to accommodate a wide range of application specific strategies
The storage layer is completely mockable so development and unit testing can be done against a throw-away in-memory storage system without needing a real cluster (or even a real storage system) for simple testing


redis

redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、 list(链表)、set(集合)和zset(有序集合)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操 作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的 是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步Redis一 个分布式缓存

voltdb


VoltDB数据库是一个分布式,可扩展,shared-nothing的内存数据库。是关系型数据库,它使用JAVA 写的存储过程来定义事务。使用标准SQL访问数据,使用并行的单线程处理方式确保数据一致性,同时避免了传统数据库的锁,插销,资源管理开销。它的数据主 要存储在内存中,Shared Nothing的集群结构,单机是单线程处理事务,不是用锁而是基于Optimistic的方法处理事务并发,所有的事务必须以存储过程形式先提交到 VoltDB系统。

MySQL

MySQL Cluster 是一种技术,该技术允许在无共享的系统中部署“内存中”数据库的 Cluster 。通过无共享体系结构,系统能够使用廉价的硬件,而且对软硬件无特殊要求。此外,由于每个组件有自己的内存和磁盘,不存在单点故障。
MySQL Cluster 由一组计算机构成,每台计算机上均运行着多种进程,包括MySQL服务器,NDB Cluster 的数据节点,管理服务器,以及(可能)专门的数据访问程序。关于 Cluster 中这些组件的关系,请参见下图:
所有的这些节点构成一个完成的MySQL集群体系。数据保存在“NDB存储服务器”的存储引擎中,表(结构)则保存在“MySQL服务器”中。应用程序通过“MySQL服务器”访问这些数据表,集群管理服务器通过管理工具(ndb_mgmd)来管理“NDB存储服务器”。
通过将MySQL Cluster 引入开放源码世界,MySQL为所有需要它的人员提供了具有高可用性、高性能和可缩放性的 Cluster 数据管理。

分享到:
评论

相关推荐

    java代码将mysql表数据导入HBase表

    本文将详细介绍如何使用Java代码实现这一过程,包括样例MySQL表和数据,以及HBase表的创建。 首先,我们需要了解MySQL和HBase的基本概念。MySQL是一种关系型数据库管理系统,它基于ACID(原子性、一致性、隔离性和...

    基于Mysql的表转HBase小Demo

    本示例“基于Mysql的表转HBase小Demo”提供了一个简单的解决方案,将Mysql中的数据转换并存储到HBase这种分布式列式数据库中。这个过程对于那些希望从传统的关系型数据库迁移到NoSQL数据库,尤其是对大规模数据进行...

    spark读取hbase数据,并使用spark sql保存到mysql

    本示例将详细介绍如何使用 Spark 从 HBase 中读取数据,并通过 Spark SQL 将其存储到 MySQL 数据库中。 首先,让我们了解 Spark 与 HBase 的交互。Spark 提供了 `spark-hbase-connector` 库,允许我们方便地连接到 ...

    Cassandra与HBase系统架构比对.pdf

    Cassandra与HBase系统架构比对 Cassandra与HBase是两种常用的NoSQL数据库管理系统,它们之间有着许多相似之处,但同时也存在着一些关键的差异。以下是对Cassandra与HBase系统架构的比对。 数据模型 Cassandra的...

    benchmark_hbase_cassandra:使用 YCSB 对 HBase 和 Cassandra 进行基准测试的脚本

    benchmark_hbase_cassandra 使用 YCSB 对 HBase 和 Cassandra 进行基准测试的脚本。 数据库 - HBase 和 Cassandra benchmark_report.pdf 该文件包含使用 YCSB 的 HBase 和 Cassandra 基准测试结果的报告和观察结果。...

    四种数据库(MySQL,HBase,Redis,MongoDB)的Java客户端所需jar包.zip

    hbase的JAVA客户端所需jar包 jedis的JAVA客户端所需jar包 mongo的JAVA客户端所需...大数据——四种数据库(MySQL,HBase,MongoDB,Redis)操作实例总结:https://blog.csdn.net/weixin_43042683/article/details/106230370

    hbase、redis、active.rar

    标题中的“hbase、redis、active.rar”表明这是一个包含了HBase、Redis和ActiveMQ三个开源技术的压缩包,主要用于在Linux环境下操作和管理这三种工具。让我们分别详细探讨这三个技术。 **HBase** 是一个分布式、列...

    HBase、Redis、MongoDB、Couchbase、LevelDB对比.pdf

    HBase、Redis、MongoDB、Couchbase、LevelDB对比

    kettle集群搭建以及使用kettle将mysql数据转换为Hbase数据

    通过本文的介绍,我们了解了Kettle集群的基本概念、搭建步骤以及如何使用Kettle将MySQL数据转换为HBase数据的过程。Kettle作为一款强大的数据集成工具,在企业级数据处理中扮演着重要的角色,尤其是在大数据时代背景...

    Redis是什么_Redis是一个NOSQL,NOSQL有许多种,它们分为:_列存储,如:Hbase_Redis-.zip

    Redis是什么_Redis是一个NOSQL,NOSQL有许多种,它们分为:_列存储,如:Hbase_Redis-

    mysql2hbase.7z

    MySQL到HBase的数据迁移是大数据领域常见的操作,尤其是在传统关系型数据库向分布式NoSQL数据库转换的过程中。本资源“mysql2hbase.7z”提供了一种解决方案,由于Sqoop已经停止更新,不再支持较新的HBase版本,因此...

    MySQL数据库同redis以及hbase高速全量,增量同步工具.zip

    MySQL数据库同redis以及hbase高速全量,增量同步工具我的巴士实现MySQL数据库到Redis,以及HBASE的全量,以及增量同步支持通过正则表达式指定需要导出的db以及表总线程序无状态,每一行都有自己的位置点,位置点信息...

    mysql导入hbase所需要的jar

    在IT行业中,数据库之间的数据迁移是一项常见的任务,MySQL和HBase作为两种广泛应用的数据库系统,它们各有特色。MySQL是关系型数据库,适合处理结构化数据,而HBase是基于Hadoop的大数据存储系统,适用于非结构化或...

    基于flink+hbase+kafka+mysql+redis的电商实时推荐系统项目源码+数据集.rar

    - 从 redis 中查询用户最近评分商品列表 , redis key 为 `“ONLINE_PREFIX_” + userId` - 从 hbase 表 `userProduct` 中查询用户历史评分商品列表。 - 根据用户刚评分的 `productId` 从 hbase 表 `itemCFRecommend...

Global site tag (gtag.js) - Google Analytics