我目前正在为替代数据存储开发概念证明.我之所以需要增强一个以读取为主的集群式webapp,还因为我想摆脱有时过于复杂的ORM + RDBMS解决方案的痛苦.
总体而言,这个想法非常类似于具有持久性的分布式缓存(让集群成为SoR),但是:
希望能够通过id(提供类和id)来检索任何对象及其子项[仅限于开始,因为主查询部分已经在我的应用程序中使用lucene解决].
需要有类型的地图地图(〜关系世界中的表格),以及其中"脱水"存储对象的分布式地图(通过反射深度克隆展平对象图)
bin日志(例如Prevayler)
如果整个群集出现故障,最终会恢复
开发(以及重构代码/更改结构的能力)
也许是为了其他目的异步处理(报告,等等)
最后在尝试集成静态类型的查询机制,如LINQ,Jaque或H2的JaQu /看ODBs/Lucene(?)
它必须是事务感知(但不确定"JTA类型")
我打算用Hazelcast(我喜欢它超级简单的API)或Terracotta(我从未使用过 - 但我知道他们的'甜蜜点',中期数据)来实现这个想法.如果你愿意,我的目标是或多或少地做Jonas曾经写过的博客.使用其中一个,存储的数据大致必须适合集群的JVM堆的总和.
这应该非常简单,可以避免关系阻抗不匹配(即与ODB一样保存)和JDBC + I/O开销.
您是否知道其他已经提供类似功能的工具/框架或其组合,我忽略了?你能否提出其他方法来解决这个"摆脱数据库"的问题?你在这个想法中已经看到了什么缺陷?并发性考虑Scala而不是Java是否有意义?
如Couch DB,Neo4j,HyperTable,HBase等非关系型数据存储怎么样?
一个类似的问题被要求在一个月前-但没有具体的解决方案.
顺便说一下,我偶然发现了Enterprise Data Fabric的概念,令我惊讶的是,它描述了很多这些想法.