Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
内存数据库选项(开源和基于Java)_Java_Web Services_Caching_Jetty_In Memory Database - Fatal编程技术网

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

内存数据库选项(开源和基于Java),java,web-services,caching,jetty,in-memory-database,Java,Web Services,Caching,Jetty,In Memory Database,我有一个web应用程序,可以代表它的客户端进行外部web服务调用。我想在web应用程序中缓存一些web服务返回的数据,以便其他客户端可以重用这些数据,并对这些缓存的数据运行过滤器和查询 当前的web应用程序架构使用ApacheCamel、Spring和Jetty。我正在寻找内存中数据库选项的选项(优点/缺点) 您考虑过使用吗?它不是一个数据库,而是一个可以从应用程序内部控制的缓存系统 下面是关于内存数据库的一些更多想法。首先,几乎所有现代RDBMS都有一个内存缓存系统。您给数据库服务器的内存越

我有一个web应用程序,可以代表它的客户端进行外部web服务调用。我想在web应用程序中缓存一些web服务返回的数据,以便其他客户端可以重用这些数据,并对这些缓存的数据运行过滤器和查询

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

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


下面是关于内存数据库的一些更多想法。首先,几乎所有现代RDBMS都有一个内存缓存系统。您给数据库服务器的内存越多(并将其配置为缓存),它在内存中存储的内存就越多,以备以后使用。如果您将一个具有足够内存的系统放在一起缓存所有表,那么您将拥有一个“内存中”缓存,而不需要另一个数据库的开销

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

因此,在回答您的问题时,您真的需要一个吗?

Hazelcast(Java API)-您可以非常轻松地将内存中的数据网格(带有映射、多重映射、集合、列表、队列、主题)分发到多个节点上,并使用基于磁盘的DB的加载/存储接口实现。您可以使用EHCache执行类似的操作

Redis是另一个选项(使用Java客户端访问它)。您只需将conf文件配置为将数据写入磁盘(或完全避免),而不必编写自己的加载/存储类

除此之外,您还可以使用许多选项。不确定您是否只关注开源选项,是否关注分布式选项。

希望有帮助。

尝试在内存db Redis上使用分布式和可扩展的familar Java数据结构(Set、Map、ConcurrentMap、List、Queue、Lock、AtomicLong、CountDownLatch、Publish/Subscribe)。

我的目标是将web服务调用的结果临时存储在内存数据库中,以便执行一些操作(过滤、连接)如果其他客户端需要相同的数据,则可以重用它们。我希望避免使用基于磁盘的数据库,因为这样会增加磁盘I/O开销。目前,我正在寻找开源解决方案,它们不必分发。如果不需要将数据存储在磁盘上,则可以选择不在Hazelcast中实现存储接口(或者干脆关闭redis.conf文件中的磁盘写入)。如果您正在寻找一个更像SQL的接口,您可以查看内存中的H2数据库。如果您对使用集合满意,我建议您使用Redis/Hazelcast/EHCache。我从未使用过MemCached。我听说过它。我不确定它是否适合我的需要。请参阅对@ali haider response的评论。正如您提到的d、 性能对我来说很重要,这就是为什么我不将数据存储在实际的数据库中。其次,因为我从外部数据库获取数据(使用web服务),对我来说,在本地保存数据并不重要,因为我总是可以再次调用WS。但是,如果我确实需要对数据执行连接和筛选,那么内存中的db可能会有所帮助(我认为)因此,您正在寻找一个引擎,该引擎将在缓存在内存中的数据集上为您进行排序和筛选。除了内置这些函数之外,您根本不关心数据库。这与您的问题相匹配,但标题听起来好像您希望内存中的数据库作为缓存(而不是处理器)。“内存中的数据库也是一个数据库。”如果你同意这一说法,那么我的问题是正确的。如果你不同意,我将非常感谢你解释这篇维基百科文章的全部内容。你最终使用了哪一个选项