好的,所以这将是一个推测性问题,主要是面向设计的,而且是一个相当长的问题。如果我是你,我会喝杯咖啡。
前言:所以我一直在研究数据库,想要一个非常快速(就像真的一样)的数据库(引擎),具有以下必备条件,
- 酸合规
- In-Memory-ish 用于超快的 IO。
- 持久性(嗯......呃)
- 可扩展为集群/主从/等
- 高可用性(HA)
- MySQL直接替换
- 开源
- 应在商品服务器 (IYKWIM) 上运行
所以从我过于乐观的要求列表来看,你已经跳到......嗯
好吧,开个玩笑吧,我知道如果innodb_buffer_pool_size
调整得当,大部分时间它都会用完内存,但我说
它不是在内存中哟!
但是你会说嘿,它的 2k18 人可能已经创建了一些 100% 的内存数据库,对吧?嗯...实际上他们有,但每个人都有自己的权衡。
VoltDB Community Edition 一切似乎都很好,直到您意识到它不是替代品。它需要 java 中的一些存储过程式命令,这需要您重写整个应用程序或至少 php 应用程序的 db 层/驱动程序/等。所以?交易破坏者!
MemSQL ,嗯,这似乎是我们“有史以来最佳开源内存可扩展 SQL Acid DB ”竞赛的有力竞争者。只为,memSQL 老大就像...
不用说,memSQL 至少需要 4 个内核和 8Gigs 的 RAM,推荐的4 个内核和每个内核32 gigs 是非常疯狂的!!!!此外,memSQL 的社区版本(顺便说一句,它不是完全开源的!它只是免费的)不支持高可用性,因为它是一项付费功能。还有它的NoSQL。所以?交易破坏者!
- 所有其他 NoSQLish 数据库,如 membase、Redis、Memcached 等,都被排除在外。
所以现在我的天才想法!
我想知道我们是否可以运行一个 XtraDB/Galera 集群,所有实例都从带有常规快照的RAMDisc运行?
它勾选了所有复选框。
听我说完,首先向房间里的大象讲话,我们知道从 RAMDiscs 运行完整的 mysql Dbs 是相当嗯......大胆,用最礼貌的方式。那么如果服务器崩溃/关闭/等等我们会丢失一个节点会发生什么。虽然我们所有的 DB Cluster 作为一个整体仍然活着并且在踢**。我们所要做的就是从上一个快照启动数据库并与集群同步回来,顺便说一句,集群本身就非常擅长!
好吧,伙计们,不要对我太过挑剔,如果你发现我的实现有缺陷,请指导我。