Key-Value Database调研之Riak篇

Riak是一个NoSQL数据库,采用了key-value的存储模式,主要Erlang语言实现,可分步可扩展。它将数据组织成Buckets、Keys、Values几个层次,其中Values(或者Objects)由唯一的主键来标识,而每个key/value对都存储在一个bucket里面。在本质上,Bucket在Riak里就是一个命名空间,它允许相同的主键名称存在于多个桶中,除此之外对于每个桶都可以进行各种不同参数的设置。Buckets和Keys是Riak中组织数据的唯一方式,这些数据通过bucke/key对来存储和引用。下面就从Riak的存储系统、集群、数据备份以及API等方面进行简单的介绍。
一、Riak的存储系统。
            Riak使用API和它的存储系统进行交互,而这些API允许Riak支持多不不同的后端(backend),这些后端可以根据需要添加到系统上去。Riak现在使用的后端包括Bitcask、dets、ets,Erlang's balanced trees以及直接写到文件系统,与此同时Riak也支持为每个bucket指定一种后端。在当前的版本中,Bitcask是Riak的默认后端。
二、Riak的集群。
            任何一个Riak的集群都是一个160位整型空间,这个空间被分成相同大小的分区。物理服务器在集群中被称为节点(node),在节点上运行着一定数目的虚拟节点(vnode),每个vnode在环上都会有一个分区。在任何时候,一个集群中活跃的vnode的数目都由物理节点的数目决定。作为一条规则,集群中每个node负责环中的1/(物理节点的个数)部分。你可以通过(分区的数目)/(节点的数目)来决定每个节点上虚拟节点的数目。例如一个环有32个分区,四个物理节点,则每个节点有8个虚拟节点。
Key-Value <wbr>Database调研之Riak篇
          根据CAP理论,Riak主要关注与A和P,这使得Riak也只能最终倒向了eventually consistent阵营,但是这里最终一致的窗口以millisecond计,所以足以满足大多数应用。在Riak的集群中所有节点都是一样的,每个节点都能够为任何请求服务,通过使用一直的哈希方法数据是被均匀地分布到整个集群中的。
三、Riak的数据备份。
          Riak通过设定一个称为“N value”的参数来控制维护多少个数据备份。每个节点都有一个这样的参数值,但可以被每个桶上的N value覆盖。Riak对象会从它们的父亲桶那里继承N value,相同集群中的所有节点都必须使用相同的N value。例如,当n_val=3时,存储一个数据到桶中时,这份数据就会备份到Riak环的三个分区上去。
Key-Value <wbr>Database调研之Riak篇
四、Riak的主要操作及API。
            Riak的主要操作包括Reading Data,Writing and Updating Data,Querying and MapReduce等,涉及API就是Riak的REST API,下面介绍一下这些API中的主要操作。
1、Bucket operations
        1)Read bucket information读取桶的属性以及主键
                    GET /riak/bucket 这个操作的选项包括props = [true | false] 指定是否返回桶属性,默认为true;keys   
                    = [true | false | stream]指定是否返回桶中存储的主键。
        2)Set bucket properties 设定桶属性
                    PUT /riak/bucket 选项有n_val、allow_mult、last_write_wins、precommit、postcommit等等。
2、Object/Key operations
        1)Read Object从桶中读取一个对象
                    GET /riak/bucket/key
        2)Store a new object without a key使用Riak随机赋值的主键来存储一个新对象
                    POST /riak/bucket
        3)Store a new or existing object with a key使用一个已知或用户定义的主键存储一个对象
                    PUT /riak/bucket/key
        4)Delete object从桶中删除一个对象
                    Delete /riak/bucket/key
3、Query operations
        1)Link-walking通过对象上的链接从由桶和主键指定的第一个对象开始找到并返回所有指定范围内的对象
                    GET /riak/bucket/key/[link specs+]
        2)MapReduce这是一种更加普遍的方法,通过制定输入构建一个map集合,然后通过reduce、link最终
        生成结果数据
                    POST /mapred
4、其他操作
    1)Ping检查服务器是否可用
          GET /ping
    2)Server status报告Riak节点的性能和配置
         GET /stats
注:参考资料来自此网站http://wiki.basho.com/display/RIAK/Riak
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Key-Value数据库是一种NoSQL(非关系型数据库)模型,数据按照键值对的形式进行组织、索引和存储。它在处理大数据时有很多优势,并且被广泛应用于不同的系统和场景。以下是一些常见的Key-Value数据库: 1. RocksDB:RocksDB是一个高性能、可嵌入的Key-Value存储引擎,适用于各种应用场景。它具有快速的写入和读取速度,并且可以处理大量的数据。 2. LevelDB:LevelDB是Google开发的一个持久化键值存储库,具有高性能和可靠性。它支持快速的写入和读取操作,并且能够处理大规模的数据集。 3. Memcached:Memcached是一种分布式内存对象缓存系统,常用于缓存常用的查询结果集或其他需要频繁读取的数据。它可以提供快速的数据访问速度,并且具有高可扩展性。 4. Redis:Redis是一个高性能的内存键值数据库,支持各种数据结构和功能。它可以用作缓存、消息队列、分布式锁等,具有快速的读写操作和高可用性。 5. DynamoDB:DynamoDB是亚马逊AWS提供的一种高度可扩展的NoSQL数据库服务,适用于处理大规模数据和高并发访问。 6. Riak:Riak是一种分布式键值数据库,具有高可用性和可扩展性。它适用于存储大量的松散关联的数据,并且可以在多个节点上进行分布式存储和处理。 7. Couchbase:Couchbase是一个面向文档的NoSQL数据库,支持键值和文档数据模型。它具有高性能、可扩展性和灵活性,适用于各种应用场景。 8. MongoDB:MongoDB是一个面向文档的NoSQL数据库,支持键值和文档数据模型。它具有灵活的数据模型和丰富的查询功能,适用于复杂的数据结构和大规模的数据存储。 9. Cassandra:Cassandra是一种高度可扩展的分布式键值数据库,具有强大的数据复制和容错性能。它适用于需要高可用性和可扩展性的大规模数据存储。 这些都是一些常见的Key-Value数据库,它们在不同的场景和需求都有各自的优势和适用性。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [大数据时代常用的几类Key-Value(NoSQL)数据库](https://blog.csdn.net/gunri_tianjin/article/details/83215422)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [RebornDB:下一代分布式Key-Value数据库](https://download.csdn.net/download/weixin_38656462/14959009)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值