开源内存数据库有:1、FastDB;2、SQLite;3、Dragonfly;4、Redis;5、Memcached;6、KeyDB;7、Skytable。FastDb是一个c++接口的开源内存实时数据库。
1、FastDB
FastDb 是高效的内存数据库系统,具备实时能力及便利的 C++ 接口。FastDB 不支持 client-server 架构因而所有使用 FastDB 的应 用程序必须运行在同一主机上。FastDB 针对应用程序通过控制读访问模式作了优化。通过降低数据传输的开销和非常有效的锁机制提供了高速的查询。对每一 个使用数据库的应用数据库文件被影射到虚拟内存空间中。因此查询在应用的上下文中执行而不需要切换上下文以及数据传输。fastdb 中并发访问数据库的同 步机制通过原子指令实现,几乎不增加查询的开销。fastdb 假定整个数据库存在于 RAM 中,并且依据这个假定优化了查询算法和接口。此外,fastdb 没有数据库缓冲管理开销,不需要在数据库文件和缓冲池之间传输数据。这就是 fastdb 运行速度明显快于把数据放在缓冲池中的传统数据库的原因。
Fastdb 支持事务、在线备份以及系统崩溃后的自动恢复。事务提交协议依据一个影子根页面算法来自动更新数据库。恢复可以执行得非常快,为临界应用提 供了高可用性。此外,取消事务日志改进了整个系统的性能,并且使得可以更有效的利用系统资源。
2、SQLite
SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。SQLite是一个软件库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite是一个增长非常快的数据库引擎,这是在普及方面的增长,与它的尺寸大小无关。SQLite 源代码不受版权限制。
它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源的世界知名数据库管理系统来讲,它的处理速度比他们都快。SQLite名列前茅个Alpha版本诞生于2000年5月。 至2021年已经接近有21个年头,SQLite也迎来了一个版本 SQLite 3已经发布。
3、Dragonfly
dragonfly是一个的开源内存存储数据库,类型属于nosql,兼容redis和memcached API。特点:
简单:设计用于隐藏幕后的所有复杂性,从而避免使用复杂的群集配置;成本效益高:Dragonfly经过优化,可以利用所有硬件资源以较小的成本交付相同的工作负载;兼容:Dragonfly使用完全相同的客户端库支持Redis API。使用Dragonfly时,无需更改应用程序端的任何内容;内存效率高:Dragonfly内部数据结构经过内存优化,可减少20%-40%的内存资源消耗。4、Redis
redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set –有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,使用很方便。
5、Memcached
memcached是一种高性能、分布式内存对象缓存系统,本质上是通用的,但最初旨在通过减轻数据库负载来加速动态web应用程序。特点:
协议简单:使用基于文本行的协议,能直接通过telnet在Memcached服务器上存取数据,实现比较简单基于libevent的事件处理:libevent是基于C开发的程序库,Memcached利用这个库进行异步事件处理;内置内存存储方式:Memcached有一套自己的管理内存方式,而且非常高效,所有数据都保存在Memcached内置的内存中,当存入的数据占满空间时,会使用LRU算法来清除不使用的缓存数据,从而来重用过期数据的内存空间,但重启服务器数据将丢失;memcached不互相通信的分布式:各个Memcached服务器之间互不通信,都是独立存取数据,通过客户端的设计让其具有分存式特点,支持大量缓存和大规模应用。6、KeyDB
KeyDB 是 Redis 的分支,专注于多线程、内存效率和高吞吐量。除了多线程之外,KeyDB 还具有仅在 Redis Enterprise 中才能使用的功能,例如:Active Replication、FLASH 存储,直接备份到 S3,且对 Redis 完全兼容。特点:
跨域多主:KeyDB 支持多个异步复制架构的主节点彼此同步。支持复制架构中所有节点都是主节点,不需要哨兵监控节点。在 Redis 原有的高可用架构之外,又增加了新的架构思路。垂直和水平缩放:KeyDB 是多线程设计,可以支持垂直/水平扩展,最大化资源利用率。对于那些 Redis 实例达到设备上线的情况,这是一个很好的替代选择。使用标准 KeyDB 节点非常多可有效使用 10 个内核,启用 TLS 时可有效使用 16 个内核!更方便的生存时间设置:KeyDB 提供了 Subkey EXPIRE,可以精确设置集合中成员的过期时间。EXPIREs 现在还具有近乎实时的主动删除功能。TLS 加密:KeyDB 提供 TLS 支持,其吞吐量是 Redis + TLS 的 7 倍;虽然 TLS 加密增加了额外的 CPU 开销,但 KeyDB 的多线程架构支持更多的工作线程来防止性能下降。ModJS:可以使用 KeyDB 开源的 Javascript 模块创建自定义命令。建立在强大的 V8 JIT 引擎之上,ModJS 比 LUA 更快,并支持许多 node.js 模块,为常见任务提供广泛的库支持。ARM 支持:KeyDB 支持 ARM。7、Skytable
Skytable 是一个极其快速、安全和可靠的实时 NoSQL 数据库,具有自动快照和 TLS。Skytable 致力于提供键 / 值存储、文档存储和列式数据库的优点,即简单性、灵活性和可查询性的规模。Skytable 目前正在开发中,但可以作为一个高性能、安全和持久的键值存储。特点:
非常快:扩展到每个节点每秒数百万次查询多个键空间 / 表:与操作无缝集成以提供类似 SQL 的体验快照:用于无压力备份的自动(和可调)快照安全:使用 SSL/TLS 将安全连接内置到 Skytable多线程:旨在利用所有 CPU 内核资源友好:数据库服务器不需要超过 1MB 即可运行方便:没有麻烦的设置和特定于系统的依赖项延伸阅读