存储系统的分类

之前收集了一些存储产品,最近又重新整理了一下,对他们进行了简单的分类。每个对存储的分类可能不仅相同,我的分类完全按照自己的喜好来分,如和您的分类不同,仅供参考。只是做了搜集和分类,少量产品加了写介绍,希望以后有时间,加更多更详细的介绍。

[TOC]

1.存储引擎

1.1 Hash Table

1.1.1 dbm (database manager)

https://en.wikipedia.org/wiki/Dbm

The dbm library stores arbitrary data by use of a single key (a primary key) in fixed-size buckets and uses hashing techniques to enable fast retrieval of the data by key.

1.2 btree

1.2.1 berkerlydb

https://en.wikipedia.org/wiki/Berkeley_DB

http://baike.baidu.com/view/1281930.htm

Key/value数据模型

Berkeley DB最初开发的目的是以新的HASH访问算法来代替旧的hsearch函数和大量的dbm实现(如AT&T的dbm,Berkeley的 ndbm,GNU项目的gdbm)

oracle

Written in C, java

BTREE, HASH, QUEUE, RECNO storage

https://www.oracle.com/database/berkeley-db/db.html

http://www.oracle.com/technetwork/database/database-technologies/berkeleydb/overview/index.html

1.2.2 LMDB (Lightning Memory-Mapped Database)

LMDB is a Btree-based database management library modeled loosely on the BerkeleyDB API, but much simplified. The entire database is exposed in a memory map, and all data fetches return data directly from the mapped memory, so no malloc's or memcpy's occur during data fetches.

https://symas.com/products/lightning-memory-mapped-database/

https://github.com/LMDB/lmdb

http://www.lmdb.tech/doc/

1.2.3 BoltDB

Bolt is a pure Go key/value store inspired by Howard Chu's LMDB project.

https://github.com/boltdb

https://github.com/boltdb/bolt

1.3 LSM

1.3.1 LevelDB

https://github.com/google/leveldb

C++, google

1.3.2 RocksDB

http://rocksdb.org/

https://github.com/facebook/rocksdb/

C++/java

1.3.3GoLevelDB

https://github.com/syndtr/goleveldb

1.3.4gorocksdb

https://github.com/tecbot/gorocksdb

Go wrapper for RocksDB

1.3.5 levigo

Go wrapper for LevelDB

https://github.com/jmhodges/levigo

1.3.6 mongo-rocks

RocksDB Storage Engine Module for MongoDB

https://github.com/mongodb-partners/mongo-rocks

C++

1.4 LSH

1.4.1 bitcask

https://github.com/basho/bitcask

采用bitcask模型的有:beandb, Riak

erlang

日志结构的key/value存储系统Bitcas

http://blog.chinaunix.net/uid-20196318-id-154750.html

Bitcask存储模型

http://blog.csdn.net/qq910894904/article/details/37756377

1.5 FractalTree

1.5.1 PerconaFT

https://github.com/percona/PerconaFT

https://www.percona.com/doc/percona-server-for-mongodb/perconaft.html

https://github.com/percona/PerconaFT/wiki

Mysql存储引擎之TokuDB以及它的数据结构Fractal tree(分形树)

http://www.fxysw.com/thread-5061-1-1.html

https://en.wikipedia.org/wiki/Fractal_tree_index

TokuDB的索引结构–分形树的实现

http://www.cnblogs.com/chaosheng/p/5250037.html

1.6 dbm系列

1.6.1 QDBM (Quick DataBase Manager)

http://sourceforge.net/projects/qdbm/

http://qdbm.sourceforge.net/

http://qdbm.sourceforge.net/benchmark.pdf

used by nmdb

1.6.2 ndbm (New Database Manager)

https://en.wikipedia.org/wiki/Ndbm

http://infolab.stanford.edu/~ullman/dbsi/win98/ndbm.html

ndbm (standing for New Database Manager) is a Berkeley produced version from 1986 of the AT&T dbm database.

ndbm stores arbitrary data by use of a single key in fixed-size buckets.

1.6.3 SDBM (Substitute Database Manager)

Substitute Database Manager

https://github.com/davidar/sdbm

http://www.cse.yorku.ca/~oz/sdbm.bun

1.6.4 GDBM (GNU Database Manager)

GNU Database Manager

http://www.gnu.org.ua/software/gdbm/

1.6.5 tdb (Trivial Database)

Trivial Database

http://sourceforge.net/projects/tdb/

http://tdb.sourceforge.net/

1.6.6 CDB

http://cr.yp.to/cdb.html

1.6.7 TinyCDB

Tiny Constant Database

http://www.corpit.ru/mjt/tinycdb.html

1.7 双类型

1.7.1 Wiredtiger (btree, LSM)

C语言的

WiredTiger 本身也支持 LSM option (默认是 btree )

mangodb

https://github.com/wiredtiger/wiredtiger

http://www.wiredtiger.com/

http://source.wiredtiger.com/2.8.0/architecture.html#cache

1.7.2 Tokyo Cabinet and Kyoto Cabinet (B+tree,hash table)

http://baike.baidu.com/view/2640411.htm

http://fallabs.com/tokyocabinet/

https://en.wikipedia.org/wiki/Tokyo_Cabinet_and_Kyoto_Cabinet

Tokyo Cabinet and Kyoto Cabinet are two libraries of routines for managing key-value databases.

Kyoto Cabinet is the designated successor of Tokyo Cabinet

Tokyo Cabinet 是一个DBM的实现

Tokyo Cabinet features on-disk B+ trees and hash tables for key-value storage

Used by nmdb,Kyoto TreeDB

1.7.3 RaptorDB key value store (B+ 树 或者 MurMur 哈希索引)

一个很小的、快速的嵌入式 NoSQL 存储模块,使用 B+ 树 或者 MurMur 哈希索引

Implemented in .NET

http://raptordbkv.codeplex.com/

http://www.codeproject.com/Articles/190504/RaptorDB

http://www.codeproject.com/Articles/316816/RaptorDB-The-Key-Value-Store-V

1.8 SQL引擎类

1.8.1 InnoDB

http://www.oschina.net/p/innodb/

http://baike.baidu.com/view/1238935.htm

https://en.wikipedia.org/wiki/InnoDB

1.9 document类

1.9.1 RaptorDB document store

http://raptordb.codeplex.com/

http://www.codeproject.com/Articles/375413/RaptorDB-the-Document-Store

2 嵌入式

https://en.wikipedia.org/wiki/Embedded_database

2.1 SQLite

https://en.wikipedia.org/wiki/SQLite

2.2 UnQLite

盘点移动开发中最流行的5个数据库

http://www.evget.com/article/2014/11/21/21843.html

3 单机存储

3.1 单值KV存储

3.1.1 Memcache

3.1.2 nmdb

https://blitiri.com.ar/p/nmdb/

use qdbm, berkeley db, tokyo cabinet or tdb as database backends

C语言

3.1.3 Memcachedb

C语言,新浪

http://memcachedb.org/

a distributed key-value storage system designed for persistent
It conforms to memcache protocol
uses Berkeley DB as a storing backend

write 18868 w/s
read 44444 r/s

using replication for master/slave
6 policy for replication:

http://memcachedb.org/memcachedb-guide-1.0.pdf

3.1.4 Kyoto Tycoon

http://fallabs.com/kyototycoon/

C/C++,FAL Labs

Kyoto Tycoon is a lightweight database server with auto expiration mechanism, which is useful to handle cache data and persistent data of various applications. Kyoto Tycoon is also a package of network interface to the DBM called Kyoto Cabinet.

3.1.5 ThruDB

建立在Apache Thrift framework下的简单服务

支持多个数据存储后端,包括BerkeleyDB、Disk、MySQL,还拥有Memcache和Spread集成

http://code.google.com/p/thrudb/

Thrudb is a set of simple services built on top of the Apache Thrift framework that provides indexing and document storage services

3.2 结构化KV存储

3.2.1 Redis

3.2.2 ssdb

https://github.com/ideawu/ssdb

http://ssdb.io/zh_cn/

http://ssdb.io/docs/replication.html

http://ssdb.io/docs/config.html

https://github.com/ideawu/ssdb/blob/master/ssdb.conf

采用ssd,使用leveldb作为存储引擎,兼容redis接口

C/C++

3.2.3 ssdb-rocks

https://github.com/ideawu/ssdb-rocks

ssdb的另一个版本,采用ssd,使用rocksdb作为存储引擎,兼容redis接口

3.3.4 ardb

https://github.com/yinqiwen/ardb

redis-protocol compatible persistent nosql, it support multiple storage engines as backend like Google's LevelDB, Facebook's RocksDB, OpenLDAP's LMDB, WiredTiger, the default backend is Facebook's RocksDB.

C++

http://yinqiwen.github.io/ardb/2014/08/23/ardbintroduction/

3.2.5 (reborndb)QDB

兼容redis协议

Rocksdb and LevelDB

https://github.com/reborndb/qdb

3.2.6 Pika

Pika 的存储引擎, 基于Rocksdb 修改. 封装Hash, List, Set, Zset等数据结构

https://github.com/Qihoo360/pika

http://git.oschina.net/baotiao/pika

http://www.jianshu.com/p/d4f23120cbe4

首发丨360开源的类Redis存储系统:Pika

https://mp.weixin.qq.com/s?__biz=MzAwMDU1MTE1OQ==&mid=2653547160&idx=1&sn=befd195e2aa788775aaf1cc3b6f6fab3&scene=1&srcid=0512FqLKcLjVNH0zbKVlVBSO&key=b28b03434249256b1da1489d74564ea1a9d5b15207160026adc2a6ce0622b47c084d23b75e909dfe14f6173662cbdf5b&ascene=0&uin=MjMxMzM3NjIyMw%3D%3D&devicetype=iMac+MacBookPro12%2C1+OSX+OSX+10.11.4+build(15E65)&version=11020201&pass_ticket=WU1aAnx4aVkuID0Quq0HGuKNQB68CvjQzaTnnIhjJFZwLcPqGk1zilYX4uRvF9sd

首发丨360开源的类Redis存储系统:Pika

https://media.weibo.cn/article?id=2309403974295628970629

3.2.7 LedisDB

A high performance NoSQL like Redis powered by Go

LevelDB, goleveldb, LMDB, RocksDB, BoltDB or Memory

http://ledisdb.com/

https://github.com/siddontang/ledisdb

3.3 文档型

3.3.1 SisoDB

C#编写的,专门提供给SQL Server面向文档的db-provider

http://www.sisodb.com

3.4 SQL

3.4.1 MySQL

3.4.2 innostore

https://github.com/basho/innostore

Innostore is a simple Erlang API to Embedded InnoDB

4 单机存储的proxy集群方案

4.1 KV/Redis类

4.1.1 Twenproxy

http://www.oschina.net/p/twemproxy

https://github.com/twitter/twemproxy

静态的分布式Redis方案

4.1.2 Reborndb

https://github.com/reborndb

https://github.com/reborndb/reborn/blob/master/doc/tutorial_zh.md

4.1.3 Codis

http://www.oschina.net/p/codis

https://github.com/wandoulabs/codis

https://github.com/CodisLabs/codis

4.1.4 Netflix Dynomite

https://github.com/Netflix/dynomite

基于dynamo的思想

Dynomite: NetFlix对dynamo的开源通用实现

http://www.infoq.com/cn/news/2014/11/dynomite-netflix-dynamo

Netflix open sources Dynomite to make any datastore distributed

https://gigaom.com/2014/11/03/netflix-open-sources-dynomite-to-make-any-datastore-distributed/

A generic dynamo implementation for different k-v storage engines
inspired by Dynamo whitepaper

4.1.5 dbcached

http://code.google.com/p/dbcached/

a distributed key-value memory caching system for QDBM or Berkeley DB base on Memcached and NMDB

4.2 SQL类

4.2.1 Mycat

http://www.mycat.org.cn/

MyCat:开源分布式数据库中间件
http://mp.weixin.qq.com/s?__biz=MzAwNjMxNjQzNA==&mid=208187004&idx=1&sn=60aba39c148711e95f00ec7ca2e13bb1&scene=0#rd

4.2.2 MySQL Fabric

4.2.3 TDDL

4.2.4 Cobar

4.2.5 Atlas

4.2.6 Heisenberg

4.2.7 Vitess

5 KV存储

5.1 riak

http://www.oschina.net/p/riak/

https://github.com/basho/riak

采用bitcask模型

Riak的实现是基于Amazon的Dynamo论文

erlang

Riak是以 Erlang 编写的一个高度可扩展的分布式数据存储,Riak的实现是基于Amazon的Dynamo论文,Riak的设计目标之一就是高可用。

http://docs.basho.com/riak/kv/2.2.3/

5.2 beandb

https://github.com/douban/beansdb

https://github.com/douban/beanseye

采用bitcask模型

distributed key-value storage system

took the ideas from Amazon's Dynamo

5.3 Project Voldemort

http://www.project-voldemort.com/voldemort/

Voldemort is a distributed key-value storage system

http://www.project-voldemort.com/voldemort/design.html

https://github.com/voldemort/voldemort

BDB-JE, MySQL, Read-Only

LinkedIn

5.4 Scalaris

http://scalaris.zib.de/

分布式key value

erlang

supported the ACID properties for multi-key transactions

http://code.google.com/p/scalaris/

5.5 Aeospike

www.aerospike.com

http://www.aerospike.com/technologies/

http://www.aerospike.com/docs/

http://www.aerospike.com/docs/architecture/index.html

5.6 Tair

http://code.taobao.org/p/tair/

http://www.oschina.net/p/tair/

https://github.com/alibaba/tair

c/c++, 自研的mdb,fdb

5.7 dynomite

https://github.com/moonpolysoft/dynomite/wiki

http://www.oschina.net/p/dynomite/

6 文档型存储

6.1 MongoDB

6.2 CouchDB

CouchDB是文档型存储

http://couchdb.apache.org/

6.3 Membase / Couchbase

http://www.couchbase.com/

http://www.oschina.net/p/membase

http://www.oschina.net/p/couchbase-server

https://en.wikipedia.org/wiki/Couchbase_Server

http://www.couchbase.com/wiki/display/couchbase/Home

面向文档的 NoSQL 数据库管理系统

6.4 SequoiaDB

一个类mongodb的文档型存储
http://www.sequoiadb.com/cn/

6.5 RavenDB

http://ravendb.net/
a .net document database built on the Windows ESENT storage system

支持Linq,可以使用C#的Linq语法查询数据

6.6 OrientDB

虽然是文档型数据库,但是它的关系管理方式却和图形数据库相类似

http://www.orientechnologies.com/

http://orientdb.com/orientdb/

Distributed Graph Database with the flexibility of Documents

是兼具文挡数据库的灵活性和图形数据库管理链接 能力的可深层次扩展的文档-图形数据库管理系统。可选无模式、全模式或混合模式下。支持许 多高级特性,诸如ACID事务、快速索引,原生和SQL查询功能。可以JSON格式导入、导出文档。若不执行昂贵的JOIN操作的话,如同关系数据库可在 几毫秒内可检索数以百记的链接文档图

Even if it is a document-based database, the relationships are managed as in graph databases with direct connections between records.

It supports schema-less, schema-full and schema-mixed modes.

6.7 RethinkDB

http://www.rethinkdb.com/

https://en.wikipedia.org/wiki/RethinkDB

http://baike.baidu.com/link?url=IaJEn3OOWg3i_q4HSIyqBfxRUATc2bpsoNfzcHdyAVa7vbs02R6PsIIyR4F2V4zZy9Wq3FJYW550B-d6IF6MV_

RethinkDB 1.14 (Brazil) 发布,分布式数据库
http://www.oschina.net/news/54771/rethinkdb-1-14-brazil

7 列式存储

7.1 HBase

7.2 Cassandra

7.3 Accumulo

https://accumulo.apache.org/
Apache Accumulo is based on Google's BigTable design and is built on top of Apache Hadoop, Zookeeper, and Thrift.

7.4 Hypertable

http://hypertable.org/
an open source database system inspired by publications on the design of Google's BigTable.
Hypertable runs on top of a distributed file system such as the Apache HDFS, GlusterFS or the Kosmos File System (KFS).

7.5 Scylla

http://www.scylladb.com/
https://github.com/scylladb/scylla

8 NewSQL

8.1 Actordb

http://m.oschina.net/p/actordb

http://www.actordb.com/

https://github.com/biokoda/actordb

8.2 Cockroachdb

Go语言

https://www.cockroachlabs.com/

https://github.com/cockroachdb/cockroach

https://groups.google.com/forum/#!forum/cockroachdb-users

https://groups.google.com/forum/#!forum/cockroach-db

https://www.cockroachlabs.com/docs/

Design Documents
https://github.com/cockroachdb/cockroach/blob/master/docs/design.md

8.3 FoundationDB

https://github.com/FoundationDB

https://foundationdb.com/

8.4 Oceanbase

https://github.com/alibaba/oceanbase

OceanBase架构介绍
http://wenku.baidu.com/link?url=cknPHaARI1_Z6tHGeFfF4Vn_hDjAsfHElNu8yOX_jX2qX4eIKaf4UrY2e02TcCf5ib7GOUf437IulU5lUPrixrrgMFOnEJUMUIkBDP__jA7

8.5 SnappyData

8.6 TiDB

https://github.com/pingcap/tidb
Go 语言

https://github.com/pingcap/tikv
Rust语言

https://github.com/pingcap/tidb/blob/master/docs/QUICKSTART.md

从零开始写分布式数据库

https://github.com/ngaut/builddatabase

9 图数据库

9.1 Neo4j

9.2 Infinite Graph

http://www.objectivity.com/products/infinitegraph/

an enterprise distributed graph database

10 File存储

10.1 Ceph

http://ceph.com/

https://github.com/ceph

Ceph:一个 Linux PB 级分布式文件系统

http://www.ibm.com/developerworks/cn/linux/l-ceph/

10.2 FastDFS

http://code.google.com/p/fastdfs/

10.3 HDFS

10.4 MogileFs

https://github.com/mogilefs/

10.5 MooseFS

http://www.moosefs.org/

a fault tolerant, network distributed file system

10.6 TFS

http://tfs.taobao.org/

10.7 GlusterFS

http://www.gluster.org/

GlusterFS:异地备份(Geo-replication)源码分析

http://blog.chinaunix.net/uid-22166872-id-4392777.html

Gluster Geo-replication工作原理[转载]

http://blog.163.com/szy8706@yeah/blog/static/62713185201363163131800/

http://disclu.blogspot.com/2012/11/gluster-geo-replication.html

10.8 kosmosfs

http://code.google.com/p/kosmosfs/

11 In-Memory 存储

11.1 Redis cluster

11.2 Mysql cluster

11.3 Gemfire/Gemde

11.4 VoltDB

http://voltdb.com/

内存数据库

12 私有存储

12.1 Amazon

12.1.1 Amazon Dynamo

Key-value

http://www.allthingsdistributed.com/files/amazon-dynamo-sosp2007.pdf

Amazon’s Dynamo paper

Merkle trees

Gossiping of membership

Gossiped synchronization of partitions

12.2 Google

12.2.1 BigTable

Bigtable: A Distributed Storage System for Structured Data

http://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf

12.2.2 F1

F1: A Distributed SQL Database That Scales

http://research.google.com/pubs/pub41344.html

http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/41344.pdf

12.2.3 Spanner

http://research.google.com/archive/spanner.html

Spanner: Google’s Globally-Distributed Database

http://static.googleusercontent.com/external_content/untrusted_dlcp/research.google.com/zh-CN//archive/spanner-osdi2012.pdf

Exclusive: Inside Google Spanner, the Largest Single Database on Earth

http://www.wired.com/2012/11/google-spanner-time/all/

解析全球级分布式数据库Google Spanner

http://www.csdn.net/article/2012-09-19/2810132-google-spanner-next-database-datacenter

12.2.4 Megastore

Megastore: Providing Scalable, Highly Available Storage for Interactive Services

https://research.google.com/pubs/pub36971.html

https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/36971.pdf

12.3 Baidu

12.3.1 Baidu Mola

Key-value

12.3.2 Baidu BDRP

12.3.3 Baidu DDBS

12.4 腾讯

单机MySQL到NoSQL集群 腾讯存储进阶路

http://tech.it168.com/a2017/0322/3105/000003105672.shtml

腾讯十多个人管理一万多台NoSQL存储服务器的秘密

http://m.techweb.com.cn/article/2016-01-06/2253310.shtml

12.4.1 腾讯CKV

腾讯CKV海量分布式存储系统

http://www.csdn.net/article/2014-03-11/2818723

12.4.2 QuorumKV

微信PaxosStore内存云揭秘:十亿Paxos/分钟的挑战

http://mp.weixin.qq.com/s?__biz=MzI4NDMyNTU2Mw%3D%3D&mid=2247483804&idx=1&sn=a6629ebdaefbc2470c2ecbf12577daff

12.6 京东

12.6.1 京东JIMDB

解读JIMDB 京东分布式缓存与高速KV存储

http://m.chinabyte.com/storage/463/13344963_mi.shtml

解读JIMDB 京东分布式缓存与高速KV存储

http://m.it168.com/article_1720792.html

12.7 滴滴

12.7.1 滴滴Rockstable

滴滴高性能KV存储系统实践

http://m.it168.com/article_3091989.html

12.8 美团

12.8.1 Cellar

基于tair研发的新一代KV存储服务

美团cellar讲座笔记

http://blog.leanote.com/post/yuannight/cellar%E8%AE%B2%E5%BA%A7%E7%AC%94%E8%AE%B0

12.9 360

12.9.1 360 Bada

Key-value

360自研分布式存储系统Bada的架构设计和应用

http://www.chinacloud.cn/wap.aspx?cid=16&nid=21103

1.9.2 HustStore

https://github.com/Qihoo360/huststore

HustStore 360高性能分布式存储服务

http://www.oschina.net/p/huststore?fromerr=ug3CEPNP

13 云产品

13.1 Amazon DynamoDB

13.2 AWS Aurora

https://aws.amazon.com/cn/rds/aurora/

2.3 Google云

2.4 阿里云

2.5 美团云

Mangix:分布式对象存储

Mangix: 美团云分布式对象存储系统

http://docs.huihoo.com/infoq/qconbeijing/2016/day2/%E4%BA%91%E5%B9%B3%E5%8F%B0%E6%9E%B6%E6%9E%84%E4%B8%93%E9%A2%98/2-6-%E7%BE%8E%E5%9B%A2%E4%B8%87%E4%BA%BF%E7%BA%A7%E5%AF%B9%E8%B1%A1%E5%AD%98%E5%82%A8%E7%B3%BB%E7%BB%9F-%E6%9D%8E%E5%87%AF.pdf

上一篇:消息队列的exclusive consumer功能是如何保证消息有序和防止脑裂的


下一篇:RabbitMQ的transaction、confirm、ack三个概念的解释