rocksdb

TiKV 源码解析系列文章(一)序

↘锁芯ラ 提交于 2019-12-01 18:49:06
作者:唐刘 TiKV 是一个支持事务的分布式 Key-Value 数据库,有很多社区开发者基于 TiKV 来开发自己的应用,譬如 titan 、 tidis 。尤其是在 TiKV 成为 CNCF 的 Sandbox 项目之后,吸引了越来越多开发者的目光,很多同学都想参与到 TiKV 的研发中来。这时候,就会遇到两个比较大的拦路虎: Rust 语言:众所周知,TiKV 是使用 Rust 语言来进行开发的,而 Rust 语言的学习难度相对较高,有些人认为其学习曲线大于 C++,所以很多同学在这一步就直接放弃了。 文档:最开始 TiKV 是作为 HTAP 数据库 TiDB 的一个底层存储引擎设计并开发出来的,属于内部系统,缺乏详细的文档,以至于同学们不知道 TiKV 是怎么设计的,以及代码为什么要这么写。 对于第一个问题,我们内部正在制作一系列的 Rust 培训课程,由 Rust 作者以及 Rust 社区知名的开发者亲自操刀,预计会在今年第一季度对外发布。希望通过该课程的学习,大家能快速入门 Rust,使用 Rust 开发自己的应用。 而对于第二个问题,我们会启动 《TiKV 源码解析系列文章》以及 《Deep Dive TiKV 系列文章》计划,在《Deep Dive TiKV 系列文章》中,我们会详细介绍与解释 TiKV 所使用技术的基本原理,譬如 Raft 协议的说明

Error “incomplete type MD5_CONTEXT” with MariaDB 10.2 and Openssl 1.1.0e

↘锁芯ラ 提交于 2019-12-01 11:42:10
I can't build MariaDB 10.2 with RocksDB enabled, in CentOS 7. It has the following compile error: /root/mariadb-10.2/mysys_ssl/my_md5.cc: In function ‘void md5_result(MD5_CONTEXT*, uchar*)’: /root/mariadb-10.2/mysys_ssl/my_md5.cc:86:29: error: ‘EVP_MD_CTX_cleanup’ was not declared in this scope EVP_MD_CTX_cleanup(context); ^ /root/mariadb-10.2/mysys_ssl/my_md5.cc: In function ‘void my_md5(uchar*, const char*, size_t)’: /root/mariadb-10.2/mysys_ssl/my_md5.cc:102:15: error: aggregate ‘MD5_CONTEXT md5_context’ has incomplete type and cannot be defined MD5_CONTEXT md5_context; ^ /root/mariadb-10.2

Kafka Streams: How to use persistentKeyValueStore to reload existing messages from disk?

风流意气都作罢 提交于 2019-12-01 10:52:44
问题 My code is currently using an InMemoryKeyValueStore, which avoids any persistence to disk or to kafka. I want to use rocksdb (Stores.persistentKeyValueStore) so that the app will reload state from disk. I'm trying to implement this, and I'm very new to Kafka and the streams API. Would appreciate help on how I might make changes, while I still try to understand stuff as I go. I tried to create the state store here: StoreBuilder<KeyValueStore<String, LinkedList<StoreItem>>> store = Stores.

TiKV Engine SIG 成立,硬核玩家们看过来!

隐身守侯 提交于 2019-11-30 14:23:18
作者:Yi Wu TiKV 是一个开源项目,我们一直都欢迎和感激开源社区对 TiKV 所作出的贡献。但我们之前对开源社区的合作主要是在代码审阅和散落在各种社交媒体的线下讨论,开发者并没有合适的途径去了解和影响 TiKV 的开发计划。怎么才能更好的帮助大家找到组织,更好地参与到 TiKV 的开发中来呢?我们的设想是搭建公开的平台,邀请对 TiKV 中特定领域感兴趣的开发者加入其中,与我们一起探讨和推进相应工作。Special Interest Group(SIG)就是这样的平台。 TiKV Engine SIG 是继 Coprocessor SIG 之后成立的第二个 TiKV SIG 社区组织,主要职责是对 TiKV 的存储引擎的未来发展进行讨论和规划,并进行相关开发和维护。 目前 TiKV 仅支持默认存储引擎 RocksDB,但是通过扩展接口,希望未来 TiKV 可以支持更多的存储引擎,我们也期待这部分工作可以得到社区的支持,在社区的讨论和贡献中得到更好的完善。此外,Engine SIG 也会对已有的存储引擎进行相关的开发和完善工作。 Engine SIG 的工作主要涉及的模块包括: Engine Trait: TiKV 中存储引擎的抽象层。 RocksDB:包括维护 TiKV 所使用的 RocksDB 分支,以及 rust-rocksdb 封装。 Titan:提供 KV

LSM-tree 基本原理及应用

安稳与你 提交于 2019-11-30 10:35:30
LSM-tree 在 NoSQL 系统里非常常见,基本已经成为必选方案了。今天介绍一下 LSM-tree 的主要思想,再举一个 LevelDB 的例子。 正文 3056 字,预计阅读时间 8 分钟。 LSM-tree 起源于 1996 年的一篇论文《The Log-Structured Merge-Tree (LSM-Tree)》,这篇论文 32 页,我一直没读,对 LSM 的学习基本都来自顶会论文的背景知识以及开源系统文档。今天的内容和图片主要来源于 FAST'16 的《WiscKey: Separating Keys from Values in SSD-conscious Storage》。 先看名字,log-structured,日志结构的,日志是软件系统打出来的,就跟人写日记一样,一页一页往下写,而且系统写日志不会写错,所以不需要更改,只需要在后边追加就好了。各种数据库的写前日志也是追加型的,因此日志结构的基本就指代追加。注意他还是个 “Merge-tree”,也就是“合并-树”,合并就是把多个合成一个。 好,不扯淡了,说正文了。 LSM-tree 是专门为 key-value 存储系统设计的,key-value 类型的存储系统最主要的就两个个功能,put(k,v):写入一个(k,v),get(k):给定一个 k 查找 v。 LSM-tree 最大的特点就是写入速度快

pika常见问题解答(FAQ)

坚强是说给别人听的谎言 提交于 2019-11-29 19:38:54
1 编译安装 Q1: 支持的系统? A1: 目前只支持Linux环境,包括Centos,Ubuntu; 不支持Windowns, Mac Q2: 怎么编译安装? A2: 参考 编译安装wiki Q3: Ubuntu编译偶尔报错isnan isinf was not declared? A3: 一些旧版本的pika对Ubuntu环境兼容不好,某些情况下会出现;可以先修改代码,用std::isnan和std::isinf替代isnan,isinf, 并包含头文件cmath。 我们会在新版兼容这个。 #include <cmath> 2 设计与实现 Q1: 为什么要开那么多线程?比如purge,搞个定时任务不就好了。难道编程框架不支持定时器? A1: pika有一些比较耗时的任务,如删binlog,扫描key,备份,同步数据文件等等,为了不影响正常的用户请求,这些任务都是放到后台执行的,并且将能并行的都放到不同线程里来最大程度上提升后台任务的执行速度;你说的变成框架是pink吗?pink是支持定时器的,每一个workerthread只要用户定义了cronhandle和频率,就会定时执行要执行的内容,不过这时候worker是被独占的,响应不了用户请求,所以占时的任务最好还是单独开线程去做,redis的bio也是这个原因 Q2: heartbeat让sender做不就好了

大容量类Redis存储--Pika介绍

依然范特西╮ 提交于 2019-11-29 19:21:03
嘉宾介绍 大家好,首先自我介绍一下,我是360 web平台-基础架构组的宋昭,负责大容量类redis存储pika的和分布式存储Bada的开发工作,这是我的github和博客地址,平时欢迎指正交流^^ 我的github: https://github.com/KernelMaker 我的博客: http://kernelmaker.github.io 下面是pika的github,欢迎关注 https://github.com/Qihoo360/pika Pika介绍 pika是360 DBA和基础架构组联合开发的类redis存储系统, 使用Redis协议,兼容redis绝大多数命令(String,Hash,List,ZSet,Set),用户不需要修改任何代码, 就可以将服务迁移至pika. pika主要是使用持久化存储来解决redis在内存占用超过50G,80G时遇到的如启动恢复时间长,主从同步代价大,硬件成本贵等问题,并且在对外用法上尽可能做到与redis一致,用户基本上对后端是redis或pika无感知 既然pika要做到兼容redis并解决redis在大容量时的各种问题,那么首先要面对的问题便是如何从redis迁移到pika,毕竟现在redis的使用非常广泛,如果从redis迁移到pika很麻烦,那应该也不会有多少人用了 从redis迁移到pika需要经过几个步骤?

clang8.0及以上编译rocks问题

回眸只為那壹抹淺笑 提交于 2019-11-29 13:30:03
升级了MacOS 10.15 Beta版,结果编译 CockroachDB 遇到了问题。 [ 0%] Building CXX object CMakeFiles/rocksdb.dir/db/builder.cc.o [ 3%] Building CXX object CMakeFiles/rocksdb.dir/db/column_family.cc.o [ 3%] Building CXX object CMakeFiles/rocksdb.dir/db/compacted_db_impl.cc.o [ 3%] Building CXX object CMakeFiles/rocksdb.dir/db/compaction.cc.o In file included from /usr/ports/databases/cockroach/work/cockroach-v19.1.1/src/github.com/cockroachdb/cockroach/c-deps/rocksdb/db/column_family.cc:24: In file included from /usr/ports/databases/cockroach/work/cockroach-v19.1.1/src/github.com/cockroachdb/cockroach/c-deps

阿里云数据库再获学术顶会认可,一文全览VLDB最新亮点

家住魔仙堡 提交于 2019-11-29 08:12:20
一年一度的数据库领域顶级会议 VLDB 2019 于当地时间8月26日-8月30日在洛杉矶圆满落幕。在本届大会上,阿里云数据库产品团队浓墨登场,不仅有 多篇论文入选Research Track和Industrial Track ,为了进一步加深产学研学术交流,阿里云还在大会期间举办了“阿里之夜”交流晚宴。 8月29日晚,超200名论文作者、行业专家、来自MIT、CMU等高校的学术界资深教授、学者和产业界人士共赴 “阿里之夜——Alibaba Night Networking Event“ ,活动空前爆满。在轻松氛围中,参会者共同探讨全球数据库生态,并就阿里云目前在数据库和大数据方面的最新技术进展进行交流与研讨,开启了一场智慧碰撞的盛宴。 在VLDB大会上, 阿里巴巴集团副总裁、阿里云数据库事业部总裁、达摩院数据库首席科学家李飞飞 进行题为《Cloud Native Database System at Alibaba: Opportunities and Challenges》的主题演讲。李飞飞分享了云原生数据库在阿里发展的心路历程,并表示:“云原生数据库天然拥有云计算的弹性能力,不仅具备开源数据库的易用、开放特点,而且拥有传统数据库的管理和处理性能等优势“。 他还详细介绍了阿里云自研数据库的两款明星产品: OLTP数据库——POLARDB 基于共享存储的Scale-up

UnsatisfiedLinkError on Lib rocks DB dll when developing with Kafka Streams

最后都变了- 提交于 2019-11-29 07:20:41
I'm writing a Kafka Streams application on my development Windows machine. If I try to use the leftJoin and branch features of Kafka Streams I get the error below when executing the jar application: Exception in thread "StreamThread-1" java.lang.UnsatisfiedLinkError: C:\Users\user\AppData\Local\Temp\librocksdbjni325337723194862275.dll: Can't find dependent libraries at java.lang.ClassLoader$NativeLibrary.load(Native Method) at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1941) at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1824) at java.lang.Runtime.load0(Runtime.java:809) at