当前位置: 首页 > 面试题库 >

Java最高性能的数据库

程鸿波
2023-03-14
问题内容

我需要一些想法来实现Java的(真正)高性能内存数据库/存储机制。在存储20,000+个Java对象的范围内,每5秒钟左右更新一次。
我愿意接受的一些选择:

纯JDBC /数据库组合

JDO

JPA / ORM /数据库组合

对象数据库

其他存储机制

我最好的选择是什么?你有什么经验?

编辑:我还需要能够查询这些对象


问题答案:

您可以尝试使用Prevayler之类的工具(基本上是一个内存中的缓存,可以为您处理序列化和备份,因此数据可以持久保存并且在事务上是安全的)。还有其他类似的项目。我已经将它用于大型项目,它非常安全而且非常快速。

如果是同一组20,000个对象,或者每5秒至少有20,000个新对象,但是有很多更改,则最好缓存并定期以批处理模式写入更改(jdbc批处理更新比单个行快得多)更新)。取决于是否需要对每个写入进行事务包装,以及是否需要更改日志记录或仅汇总更改。

编辑
:正如其他帖子提到的那样,我想我会留意它的作用:基本上,您创建一个可搜索/可序列化的对象(通常为某种Map),该对象包装在一个Prevayler实例中,该实例被序列化到磁盘。通过直接向您的Prevayler实例发送更改的可序列化记录(只是包含更改指令的对象),而不是直接对地图进行更改。Prevayler的事务版本是将序列化更改写入磁盘,以便万一发生故障,它可以加载最后一个完整的备份,然后根据该更改重放更改。这是安全的,尽管您确实必须有足够的内存来加载所有数据,并且它是一个相当老的API,但是不幸的是没有通用接口。



 类似资料:
  • 问题内容: 我在公司中多次设计数据库。为了提高数据库的性能,我只寻找标准化和索引。 如果要求您提高数据库的性能,该数据库包含大约250个表以及一些具有数百万个记录的表,那么您将寻找什么不同的东西? 提前致谢。 问题答案: 优化逻辑设计 逻辑级别是关于查询和表本身的结构。首先尝试最大程度地发挥这一作用。目标是在逻辑级别上访问尽可能少的数据。 拥有最高效的SQL查询 设计支持应用程序需求的逻辑架构(例

  • 问题内容: 通常,我需要从某个范围的表中检索数据。例如,每个搜索结果都有一个单独的页面。在MySQL中,我使用LIMIT关键字,但在DB2中,我不知道。现在,我使用此查询来检索数据范围。 但我知道这是不好的风格。那么,如何查询最高性能呢? 问题答案: 我的需求已经添加到DB2 9.7.2中了。 DB2 9.7.2为限制查询结果添加了新的语法,如下所示: 数据库将从第no行中检索结果。21-25

  • 我们正在快速开发一个应用程序,其中我们需要一次获取超过50K行(在应用程序加载时执行),然后数据将用于应用程序的其他部分进行进一步计算。我们正在使用Firebase实时数据库,我们面临一些严重的性能问题。 它目前需要大约40秒才能加载50K行(目前使用的是免费数据库版本,不确定这是否是原因),但我们也观察到,当多个用户使用该应用程序时,加载50K行开始需要大约1分20秒,Peak达到100%。 您

  • 主要内容:一般业务系统运行流程图,一台 4 核 8G 的机器能扛多少并发量呢?,高并发来袭时数据库会先被打死吗?,8 核 16G 的数据库每秒大概可以抗多少并发压力?,数据库架构可以从哪些方面优化?,总结今天给大家分享一个知识点,是关于 MySQL 数据库架构演进的,因为很多兄弟天天基于 MySQL 做系统开发,但是写的系统都是那种低并发压力、小数据量的,所以哪怕上线了也就是这么正常跑着而已。 但是你知道你连接的这个 MySQL 数据库他到底能抗多大并发压力吗?如果 MySQL 数据库扛不住压力

  • 我有一个名为ConnectionDerby的类,在该类中,我设置了连接到嵌入式数据库(Derby)的参数,我想减少连接的冗余度,实际的方法和连接可以工作,但我想提高性能,因此该类的代码如下: 我使用另一个类来设置查询的字符串,如下所示: 所以伙计们,我想要一些建议,因为当我在表encabezado中进行更新时,我遇到了以下错误:“Error=Statement.executeUpdate()无法使

  • Kdb+ 是来自 Kx Systems Inc 的高性能列式数据库。 kdb+ 旨在捕获,分析,比较和存储数据 - 所有这些都是高速和大量数据。