我有一个网络应用程序代表其客户进行外部Web服务调用。我想通过Web应用程序中的某些Web服务缓存数据返回,以便其他客户端可以重用此数据并对此缓存数据运行筛选器和查询。
Web应用程序的当前架构使用Apache Camel,Spring和Jetty。我正在寻找内存数据库选项的选项(优点/缺点)。
答案 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)。