BeansDB

分布式key/value存储系统
授权协议 BSD
开发语言 Python
所属分类 数据库相关、 NoSQL数据库
软件类型 开源软件
地区 国产
投 递 者 艾成益
操作系统 Linux
开源组织 豆瓣
适用人群 未知
 软件概览

BeansDB 是一个主要针对大数据量、高可用性的分布式KeyValue存储系统,采用HashTree和简化的版本号来快速同步保证最终一致性(弱),一个简化版的 Dynamo

它采用类似memcached的去中心化结构,在客户端实现数据路由。目前只提供了 Python版本的客户端,其它语言的客户端可以由memcached的客户端稍加改造得到。

主要特性包括:

  • 高可用:通过多个可读写的用于备份实现高可用;

  • 最终一致性:通过哈希树实现快速完整数据同步(短时间内数据可能不一致);

  • 容易扩展:可以在不中断服务的情况下进行容量扩展;

  • 高性能:异步IO和高性能的Key Value数据Tokyo Cabinet

  • 可配置的可用性和一致性:通过N,W,R进行配置;

  • 简单协议:Memcached兼容协议,大量可用客户端。

Python 操作示例:

from dbclient import Beansdb

# three beansdb nodes on localhost
BEANSDBCFG = {
    "localhost:7901": range(16),
    "localhost:7902": range(16),
    "localhost:7903": range(16),
}

db = Beansdb(BEANSDBCFG, 16)

db.set('hello', 'world')
db.get('hello')
db.delete('hello')

性能测试:

 $ beansdb -d 
 $ memstorm -s localhost:7900 -n 1000000 -k 10 -l 100 
   
  ---- 
  Num of Records : 1000000 
  Non-Blocking IO : 0 
  TCP No-Delay : 0 
   
  Successful [SET] : 1000000 
  Failed [SET] : 0 
  Total Time [SET] : 51.77594s 
  Average Time [SET] : 0.00005s 
   
  Successful [GET] : 1000000 
  Failed [GET] : 0 
  Total Time [GET] : 40.93667s 
  Average Time [GET] : 0.00004s
  • 目录 一、容灾问题 1、GoBeansproxy 之 sharding 问题❓ 2、集群节点变更问题(新增或移除)❓ 3、集群内固定副本(N)的平衡问题❓ 二、容灾方案 1、Python3 采集 GoBeansproxy 日志路由数据(SET/DELETE)存储到 MySQL 2、Python3 实现 GoBeansDB 集群移除节点后的数据副本平衡 3、以上实例输出结果 一、容灾问题 1、GoB

  • 目录 写在最前: 1、python3_libmc_beansdb.py 2、Python Example 3、Example Results 写在最前: 1>、libmc 由 Douban 开发和维护(豆瓣牛B) 协议: memcached。推荐 libmc 客户端(c++ 实现,目前支持 go 和 python,基于 poll 的并发 get_multi/set_multi) 索引: 内存索引全

  • 目录 1、Python3 实现 BeansDB 与 GoBeansDB 间双向数据迁移 2、以上实例输出部分结果 3、Python3 BeansDB / GoBeansDB 连接 - libmc 驱动模块 4、Python3 MySQL 数据库连接 - PyMySQL 驱动模块 5、GoBeansproxy(proxy-access.log)日志部分输出内容 6、GoBeansDB(gobeans

  • 简单说明:            1:beansdb是豆瓣的key-value分布式系统,类似memcache之类的。            2:beansdb可以部署在多个节点上。由proxy集中管理。方便简单。 beansdb结构: Hstore{     (节点)0 ~ (节点E);     每个节点默认16开,即0~F号biscask;     每个biscask有一个hash tree做

  • 目录 BeansDB是什么❓ BeansDB 的 CAP 特点表现为❓ BeansDB 功能组成❓ 服务器端程序实现的功能❓ 核心的 Python 脚本提供的功能❓ 1、proxy.py 2、sync.py BeansDB是什么❓ BeansDB 是豆瓣荣誉出品的分布式 key-value 存储系统,该系统是对经典的 Dynamo 的简化。 BeansDB 的 CAP 特点表现为❓ 1)最终一致的

  • 最近学习了一下豆瓣的分布式 Key/Value 存储系统 BeansDB(v0.5.3)。 BeansDB 的作者 Davies 写的关于 BeansDB 的介绍:《beansdb卷土重来》。 BeansDB 的项目主页:http://code.google.com/p/beansdb/。 用户手册:http://code.google.com/p/beansdb/wiki/UserGuide。

  • 最近对beansdb做了一次性能测试,结果性能一般,下面是我的测试过程。   1. 启动beansdb server /duitang/dist/sys/beansdb/bin/beansdb -d -H /duitang/data/test-beansdb   2. 往beansdb set 30000条数据 from beansdb.dbclient import Beansdb impor

  • BeansDB是豆瓣的刘洪清大哥写的一个分布式存储系统。关于它的详细介绍可以参看 http://www.douban.com/note/122507891/  同时InfoQ中还有刘洪清大哥的演讲视频及资料:http://www.infoq.com/cn/presentations/lhq-beansdb-design-implementation BeansDB是一个简化了的Dynamo系统,适

  • from dbclient import Beansdb s1 = "localhost:7100" s2 = "localhost:7101" BEANSDBCFG = { s1: range(16), s2: range(16), } key = 'txt:test' db = Beansdb(BEANSDBCFG, 16) b1 = Beansdb({s1: range(16

  • typedef struct t_item Item; struct t_item { //int bucket = item->pos & 0xff; //表示是第几个文件 //uint32_t pos = item->pos & 0xffffff00; //表示在文件中的位置 uint32_t pos; //大于0该数据有效,小于0表明无效。 //ver不会等于0,

  • //DataRecord与item的不同是,item只保存键值,而record保存键值和value值,但是内存里只存PADDING的大小 typedef struct data_record { char *value; union { bool free_value; // free value or not,改为need_free比较好 uint32_t crc;

  • beansdb -d -f 1 -n 200 -p 7700 -H /data2/mediadb/ -u admin -L /duitang/logs/usr/beansdb.log   http://xumingming.sinaapp.com/280/beansdb-source-code-analysis-sync-py/   豆瓣beansdb源码浅析:  http://www.kafka

  • 优雅的Bitcask

  •     test from dbclient import Beansdb from xml.dom import minidom import re r = re.compile("http://\w*.duitang.com") # three beansdb nodes on localhost fs = Beansdb({"192.168.172.3:7700": range(16),

  •     1. 使用算法hash, bucket, btree. 2. 独立存储节点,独立数据目录,bucket扩展 3. 可靠性保证:多机冗余(N=3),同步写(同时想多个节点写,写成功2个节点即可),依次读 4. 一致性(最终一致性) 用Hash tree的数据结构做节点数据同步 存储引擎:没有使用TokyoCabinet,BerkeleyDB,使用了Bitcask存储算法 通过对key进行重新

 相关资料
  • 一、介绍 HDFS (Hadoop Distributed File System)是 Hadoop 下的分布式文件系统,具有高容错、高吞吐量等特性,可以部署在低成本的硬件上。 二、HDFS 设计原理 2.1 HDFS 架构 HDFS 遵循主/从架构,由单个 NameNode(NN) 和多个 DataNode(DN) 组成: NameNode : 负责执行有关 文件系统命名空间 的操作,例如打开,

  • 在很多情况下,日志内容本身都是一个类似于 key-value 的格式,但是格式具体的样式却是多种多样的。logstash 提供 filters/kv 插件,帮助处理不同样式的 key-value 日志,变成实际的 LogStash::Event 数据。 配置示例 filter { ruby { init => "@kname = ['method','uri','verb'

  • 本文向大家介绍Hadoop 分布式存储系统 HDFS的实例详解,包括了Hadoop 分布式存储系统 HDFS的实例详解的使用技巧和注意事项,需要的朋友参考一下 HDFS是Hadoop Distribute File System 的简称,也就是Hadoop的一个分布式文件系统。 一、HDFS的优缺点 1.HDFS优点:   a.高容错性     .数据保存多个副本     .数据丢的失后自动恢复

  • 一面 11.1 分布式存储 阿里天池比赛,问了一些模块的优化 问存储项目 问TinyKV 项目 操作系统:cpu cache,false sharing,gdb C++:移动语义,std::map,rbtree和b+tree区别。 perf 观察程序性能 算法题:二叉树的路径和 二面 11.2 leader 面 开局先选方向:DB,分布式,操作系统,体系结构,计算机网络。选了分布式,狂问raft

  • 之前的秋招面经:深信服 Go 开发面经(已 offer) bg:专升本+ACM银牌+三个项目(一个毕设的KV分离LSM-Tree,一个6824的分布式KV,一个OJ) 某小厂,存储方向技术积累还不错,避免定位就不写具体名字了。自己也一直比较憧憬做 infra 吧,不想写 CRUD 业务,所以就投了。面试内容都是事后回忆,可能有遗漏或记错的 一面 50min 自我介绍 项目实现细节、设计考量、优化(

  • Adds or retrieves given value associated with given key. (Don’t confuse with data- attributes) See also Element.removeData Parameters keystringkey to store data valueanyvalue to store Returns: objectE