内存数据库的选项(开源和基于Java)

时间:2012-06-10 17:13:57

标签: java web-services caching jetty in-memory-database

我有一个网络应用程序代表其客户进行外部Web服务调用。我想通过Web应用程序中的某些Web服务缓存数据返回,以便其他客户端可以重用此数据并对此缓存数据运行筛选器和查询。

Web应用程序的当前架构使用Apache Camel,Spring和Jetty。我正在寻找内存数据库选项的选项(优点/缺点)。

3 个答案:

答案 0 :(得分:2)

Hazelcast(Java API) - 您可以非常轻松地在多个节点上分发内存中的数据网格(包括地图,多图,集,列表,队列,主题)。使用基于磁盘的DB的加载/存储接口实现。你可以用EHCache做类似的事情。

Redis是另一种选择(使用Java客户端访问它)。您可以简单地配置conf文件以将数据写入磁盘(或完全避免它)&不应该编写自己的加载/存储类。

除此之外,您还可以使用多种选项。不确定您是否只关注开源选项,是否查看分布式选项 希望它有所帮助。

答案 1 :(得分:0)

您是否考虑过使用MemCached?它不是数据库,而是可以从应用程序内部控制的缓存系统。


以下是关于内存数据库的一些想法。首先,几乎每个现代RDBMS都有一个内存缓存系统。您为数据库服务器提供的内存越多(并将其配置为缓存),它将在内存中存储的内存越多,以备日后使用。如果你把一个有足够内存的系统放在一起来缓存所有的表,你将拥有一个“内存”缓存,而不会产生另一个数据库的开销。

大多数“内存中”数据库用于高性能/大型数据系统,其中性能完全是关键。并且,因为它们用于极端性能系统,所以您将为它们付费。或者更具体地说,为他们支付额外费用。例如,支持完整内存的SAP / Sybase DB可能比现有产品的成本高出40%到300%。

那么,在回答你的问题时,你真的需要一个吗?

答案 2 :(得分:0)

尝试Redisson - 内存中的db Redis之上的分布式和可扩展的熟悉的Java数据结构(Set,Map,ConcurrentMap,List,Queue,Lock,AtomicLong,CountDownLatch,Publish / Subscribe)。