YCSB-mapkeer-leveldb实测】的更多相关文章

参考 https://github.com/cloudius-systems/osv/wiki/Benchmarking-Cassandra-and-other-NoSQL-databases-with-YCSB https://github.com/brianfrankcooper/YCSB/tree/master/cassandra  创建 表头 https://gist.github.com/pbailis/3978273 设置field参数 长度和个数 启动和 redis类似,只不过,参…
转自:http://www.itdadao.com/articles/c15a531189p0.html http://www.cnblogs.com/bettersky/p/6158172.html 参考 https://github.com/cloudius-systems/osv/wiki/Benchmarking-Cassandra-and-other-NoSQL-databases-with-YCSB https://github.com/brianfrankcooper/YCSB/t…
使用thrift0.8.0编译好java版的mapkeeper并安装到ycsb下,使用thrift0.9.2编译好c++版的mapkeeper并编译leveldb客户端运行. 测试成功.recordcount设置为10m,发现leveldb开始会不断往log里写,log已经达到了1GB多.然后突然有很多2MB的sst文件生成. 最终ycsb完成了,iostat还有io (持续较长时间,几十MB/s或零点几MB/s).data目录下有16GB,log文件600MB, YCSB : [OVERALL…
bin/ycsb load mapkeeper -P workloads/workloada 首先,按照上面一个帖子将mapkeeper的jar包进行mvn安装,修改ycsb主目录和mapkeeper目录下的pom.xml后,直接运行 bin/ycsb load mapkeeper -P workloads/workloada 发现一系列错误,最后展示的错误全是MapkeeperClient.java的语法不符合mvn规范,按照RedisClient.java(MydbClient.java)进…
最近有个业务写远远大于读,读也集中在最近写入,这不很适合采用leveldb存储么,leveldb业界貌似ssdb用得挺广,花了两天时间就ssdb简单做下测试,以下总结. ssdb 是leveldb的redis兼容协议封装,并且实现了主从同步,源码不多易读:主要对redis命令封装,get/set 不说,leveldb 是有序的,相比redis通过scan遍历的命令,利用有序性 list.hset也通过key+fileld/seq - val 方式存储,ttl 会单独存储一个hset 保存过期时间…
SublimeText2下的LiveReload在SublimeText3下无法正常使用,本文整理SublimeText3安装LiveReload的方法.win7下实测可用! 安装成功后,就不需要再手动去F5刷新页面了,修改完代码Ctrl+S,浏览器自动刷新,如果是双屏,效率提升还是比较明显的. 工具 Chrome Sublime Text 3 Git Chrome安装LiveReload 在Chrome插件中心搜索"reload"并安装,(https://chrome.google.…
对于compaction是leveldb中体量最大的一部分,也应该是最为复杂的部分,为了便于理解我们首先从一些基本的概念开始.下面是一些从doc/impl.html中翻译和整理的内容: Level 0 当日志文件超过一定大小的阈值是 (默认为 1MB): 建立一个新的memtable和日志文件,以后的操作都是用新的memtable和日志文件 后台进行如下操作: 将旧的 memtable写到SSTable中(过程为先转为immtable_table,然后遍历写入) 废弃旧的 memtable 删除…
在最初学习PYTHON的时候,只知道有DOM和SAX两种解析方法,但是其效率都不够理想,由于需要处理的文件数量太大,这两种方式耗时太高无法接受. 在网络搜索后发现,目前应用比较广泛,且效率相对较高的ElementTree也是一个比较多人推荐的算法,于是拿这个算法来实测对比,ElementTree也包括两种实现,一个是普通ElementTree(ET),一个是ElementTree.iterparse(ET_iter). 本文将对DOM.SAX.ET.ET_iter四种方式进行横向对比,通过处理相…
1)大概浏览了leveldb文档的介绍.本想逐步看代码,想想还是自己先实现一个看看如何改进. 2)完成了一个非常丑陋的初版,但是还是比初初版有进步. 3)key value的数据库,不允许有key重复,所以必须检测key. 1,插入检测key重复,太耗时间,不可能去检查数据文件.明显必须加入一个索引文件.形式key,offset. 2,  key,offset的索引形式,数据到达5w,简直不可忍受.插入数据时,必须对索引文件排序,之后可以二分法查找key. 3,排序,二分查找法,又必须要求可以对…
以太坊MPT树的持久化层是采用了leveldb数据库,然而在抽取MPT树代码运行过程中,进行get和write操作时却发生了错误: Caused by: org.fusesource.leveldbjni.internal.NativeDB$DBException: IO error: C:\data\trie\.sst: Could not create random access file. at org.fusesource.leveldbjni.internal.NativeDB.che…
#include <iostream> #include <string> #include <leveldb/db.h> #include <boost/lexical_cast.hpp> using namespace std; int main(int argc, char *const *argv) { try { leveldb::DB* db; leveldb::Options options; options.create_if_missing…
测试是由同事完成的,这里只做收藏. 测试说明: 1.数据量为3kw记录,每条记录11个字段,一个为主键,主键为字符类型,类似:user****,后续为数值 其他10字段为字符类型,100字符,记录长度大约为1KB 2.使用ycsb进行压力测试.具体各类型参考以前文档 3.三千万数据,对目前数据库都能缓存到DB中(后续测试缓存80%,50%,30%等情况下性能情况) 4.测试项包括:数据装载,就是insert数据                       ycsb的标准负载a.负载b.负载c.负…
在leveldb在查找比较时的key里面保存key长度用的是VarInt,何为VarInt呢,就是变长的整数,每7bit代表一个数,第8bit代表是否还有下一个字节, 1. 比如小于128(一个字节以内)的值生成方式如下: 将该值与二进制1000 0000值进行比较,如果小于,则直接将该值作为unsigned char也就是整数值写入. 2.  一个大于128也就是超过1个字节的变长整数的生成方式如下: 将该值与二进制1000 000 000 0000 (32768=2<<14)进行比较,如果…
楼主从2014年7月份开始学习<>,由于书籍比较抽象,为了加深思考,同时开始了Google leveldb的源码学习,主要是想学习leveldb的设计思想和Google的C++编程规范.目前我也只看完了部分的源码,现在把我的学习笔记整理出来,跟大家共享,欢迎大家拍砖和讨论.如果有开始学习leveldb源码的同学,可以参照着我的文章来看源码.看leveldb的源码,收获颇深,读到精彩处,击节赞赏,十分激动和喜悦,相信经历过的人应该都会有同感的. SSTable介绍(一) SSTable介绍(二)…
刚开始学习PYTHON,感觉到这个语言真的是很好用,可以快速完成功能实现. 最近试着用它完成工作中的一个任务:在Linux服务器中完成对.xml.gz文件的解析,生成.csv文件,以供SqlServer服务器导入,做进一步的数据分析. 解压后的xml文件格式如下: <?xml version="1.0" encoding="UTF-8"?> <bulkPmMrDataFile> <fileHeader fileFormatVersion…
LevelDB库简介 一.LevelDB入门 LevelDB是Google开源的持久化KV单机数据库,具有很高的随机写,顺序读/写性能,但是随机读的性能很一般,也就是说,LevelDB很适合应用在查询较少,而写很多的场景.LevelDB应用了LSM (Log Structured Merge) 策略,lsm_tree对索引变更进行延迟及批量处理,并通过一种类似于归并排序的方式高效地将更新迁移到磁盘,降低索引插入开销,关于LSM,本文在后面也会简单提及. 根据Leveldb官方网站的描述,Leve…
通过集群实现消息队列高可用. 消息队列在项目中存储订单.邮件通知.数据分发等重要信息,故对消息队列稳定可用性有高要求. 现在通过zookeeper选取activemq leader的形式实现当某个activemq节点出问题时,保证系统的可用性. zookeeper做为服务选取器来选择activemq作为master. 开发环境将zoopkeeper zoo_sample.cfg拷贝并修改文件名称为zoo.cfg. activemq 配置禁用kahadb启用LevelDB 其中 zkAddress…
ycsb本身相当于客户端,不断向服务端发送请求,同时记录下这些请求耗费的时间. 那么,必须要有一个服务端在某个端口监听. ycsb可以在workload里写入服务端的ip和端口,也可以在命令行里写上. 使用root账户运行ycsb,不然各种错.这可能是因为ycsb在运行过程中要干一些root才有权限干的事情. ycsb分为两种模式,load和run.load其实就是先装载一定量的数据,而run就是在这load的基础上按照workload的要求去发送请求. (那么,如果数据库中已经存在了一部分数据…
leveldb是一个非常高效的可嵌入式K-V数据库,在.NET下有着基于win实现的包装leveldb.net;不过leveldb.net只提供了基于byte[]和string的处理,这显然会对使用的时候带来不方便,毕竟在编写应用的时候都是希望通过对象的方式来存储,如我们常见的redis,mongodb和memcached等等都提供对象方式的读写.以下主要讲解leveldb.net基础上封装一层序列化功能方便使用. 制定对象化的访问接口 为了不修改leveldb.net的代码,所以选择在他基础过…
实测可用的免费STUN服务器!     以实际ping延迟排序: stun.voipbuster.com 287ms stun.wirlab.net 320ms s1.taraba.net          203.183.172.196:3478s2.taraba.net          203.183.172.196:3478 s1.voipstation.jp          113.32.111.126:3478s2.voipstation.jp          113.32.11…
最近小组准备启动一个 node 开源项目,从前端亲和力.大数据下的IO性能.可扩展性几点入手挑选了 NoSql 数据库,但具体使用哪一款产品还需要做一次选型. 我们最终把选项范围缩窄在 HBase.Redis.MongoDB.Couchbase.LevelDB 五款较主流的数据库产品中,本文将主要对它们进行分析对比. 鉴于缺乏项目中的实战经验沉淀,本文内容和观点主要还是从各平台资料搜罗汇总,也不会有太多深入或底层原理探讨. 本文所引用的资料来源将示于本文尾部.所汇总的内容仅供参考,若有异议望指正…
log文件在LevelDb中的主要作用是系统故障恢复时,能够保证不会丢失数据.因为在将记录写入内存的Memtable之前,会先写入Log文件,这样即使系统发生故障,Memtable中的数据没有来得及Dump到磁盘的SSTable文件,LevelDB也可以根据log文件恢复内存的Memtable数据结构内容,不会造成系统丢失数据,在这点上LevelDb和Bigtable是一致的. LevelDb对于一个log文件,会把它切割成以32K为单位的物理Block,每次读取的单位以一个Block作为基本读…
MANIFEST文件是Level DB的元信息文件,它里面的格式是leveldb的Log格式,一个menifest是一个record: void VersionEdit::EncodeTo(std::string* dst) const { if (has_comparator_) { // 记录Comparator PutVarint32(dst, kComparator); PutLengthPrefixedSlice(dst, comparator_); } if (has_log_num…
整体上,sstable文件分为数据区与索引区,尾部的footer指出了meta index block与data index block的偏移与大小,data index block指出了各data block的偏移与大小,meta index block指出了各meta block的偏移与大小. 1)DataBlock:存储Key-Value记录,分为Data.type.CRC三部分 2)MetaBlock:暂时没有使用 3)MetaBlock_index:记录filter的相关信息(本文暂时…
在并发写入的时候,leveldb巧妙地利用一个时间窗口做batch写入,这部分代码值得一读: Status DBImpl::Write(const WriteOptions& options, WriteBatch* my_batch) { // A begin Writer w(&mutex_); w.batch = my_batch; w.sync = options.sync; w.done = false; // A end // B begin MutexLock l(&…
If Protocol Buffers is the lingua franca of individual data record at Google, then the Sorted String Table (SSTable) is one of the most popular outputs for storing, processing, and exchanging datasets. As the name itself implies, an SSTable is a simp…
一.要点 有关Snappy的相关介绍可参看Hadoop压缩-SNAPPY算法,如果想安装Snappy,可以参看Hadoop HBase 配置 安装 Snappy 终极教程. 1. HBase修改Table压缩格式步骤 2. 实测结果分享 二.HBase修改Table压缩格式步骤 修改HBase压缩算法很简单,只需要如下几步: 1. hbase shell命令下,disable相关表: ? 1 disable 'test' 实际产品环境中,’test’表可能很大,例如上几十T的数据,disable…
LevelDB(v1.3) 源码阅读系列使用 LevelDB v1.3 版本的代码,可以通过如下方式下载并切换到 v1.3 版本的代码: $ git clone https://github.com/google/leveldb.git $ cd leveldb $ git checkout -b v1.3 v1.3 本文涉及的代码文件为: util/arena.h util/arena.cc 一.简介 Arena 是一个简单的内存分配器.通过一个 Arena 对象,可以进行一些内存分配操作.A…
LevelDB(v1.3) 源码阅读系列使用 LevelDB v1.3 版本的代码,可以通过如下方式下载并切换到 v1.3 版本的代码: $ git clone https://github.com/google/leveldb.git $ cd leveldb $ git checkout -b v1.3 v1.3 本文涉及的代码文件为: include/slice.h 1. Slice 简介 LevelDB Slice 对经常使用的字符串进行了简单的封装,它自己不管理内存,仅仅提供对已有字符…
1打造iMAC:DIY常规兼容机安装MAC OS回顶部 [PConline 评测]最近消息透露苹果下个月即将发布新系统MAC OS X 10.9,这是什么东西?对于苹果,留给我们印象最为深刻的是iPhone.iPad这些移动设备,Macbook.MAC这类苹果PC并不常接触,更何况使用呢. Mac系统是苹果机专用系统,是基于Unix内核的图形化操作系统:一般情况下在普通pc上无法安装的操作系统,由苹果公司自行开发.这就是为啥那么少用,苹果的PC并不便宜,而系统又难以装在其他电脑上.但自从苹果使用…