文件名称:HM2:利用 LSM 树的 KeyValue NoSQL 数据库
文件大小:22KB
文件格式:ZIP
更新时间:2024-07-06 16:12:13
C
HM2 - 利用 LSM 树的键/值 NoSQL 数据库 为什么是另一个键/值? 我们与 Apache Cassandra 合作了很多,但我们从不需要它的分布式功能。 我们也使用 Redis,但问题是数据必须适合内存。 该项目的目标是。 键/值存储 Redis / Memcached 协议 异步网络 I/O 数据不需要适合内存 速度 持续的 高质量代码 建筑学 架构源自 Apache Cassandra。 有 memtable 和几个磁盘文件。 写入将在 Memtable 中完成。 读取将首先在 memtable 中完成,如果在那里找不到数据,系统将尝试读取每个磁盘表,直到找到关键。 这称为“LSM 树”或更简单的“差异文件”。 写入应该总是很快。 如果磁盘表不多,读取应该很快。 内存表 Memtable 存储在内存中的跳过列表中。 Skiplist 是非常快的 O(Log N
【文件预览】:
HM2-master
----hm_skiplist_internal.h(1KB)
----hm_glob.c(1KB)
----hm_skiplist.c(7KB)
----tools()
--------alignment.c(518B)
--------_complicated_rand.c(635B)
--------mp_malloc.c(971B)
--------mp_malloc.h(409B)
--------allocator_stats.txt(298B)
----hm_memtable.h(850B)
----test_hm.c(4KB)
----test_hm_glob.c(848B)
----hm_dir.h(628B)
----hm_disktable.h(1KB)
----hm_disktable_internal.h(610B)
----hm_glob.h(342B)
----.gitignore(144B)
----hm_disktable.c(5KB)
----hm_dir_internal.h(545B)
----hm_pair.h(2KB)
----test_hm_disktable.c(3KB)
----Makefile(2KB)
----hm_skiplist.h(1KB)
----hm_dir.c(4KB)
----README.md(4KB)
----test_glob()
--------data.002.txt(19B)
--------data.003.txt(39B)
--------data.004.txt(25B)
--------data.001.txt(26B)
--------readme.txt(536B)
----test_hm_memtable.c(2KB)
----hm_pair.c(5KB)
----test_hm_dir.c(2KB)