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

对于中等数据项目,我需要选择哪个分布式数据库

景阳平
2023-03-14
问题内容

现在我们有了一个带有Spring Data JPA(Hibernate)的Spring Boot 2上带有PostgreSQL数据库的Java项目。

对新体系结构的要求:在N台计算机上,我们有工作场所。每个工作场所使用具有不同配置的同一程序(用于重新分发数据库的已配置客户端)。电脑数量不多-
数量为10/20台电脑。数据库必须是可伸缩的(可以将大量数据存储在约1/2
Tb的磁盘上)。每天可以从一个工作场所将多达一百万行插入数据库。每个工作场所都使用重新分配的数据库-
这意味着每个节点必须能够读取/写入彼此修改的数据。并根据数据做出决策,并在运行时由另一个工作场所修改(事务)。数据存储(磁盘数据库存档)必须能够存档和复制为备份快照。必须使用Spring
Data JPA 2将项目移植到新架构,并使用liquibase移植数据库。在Windows / Linux上运行。

快速概述向我展示了当前最受欢迎的重新分发的FREE数据库:1)Redis 2)Apache Ignite 3)Hazelcast

我需要帮助来理解架构描述系统的方式。首先,我尝试使用redis和ignit。Redis易于启动-
但它的工作方式类似于简单的IMDG(在内存数据网格中)。但是我需要将所有数据存储在持久数据库中(在磁盘上,例如点燃持久性)。有没有办法在现有的PostgreSQL数据库中使用redis?Postgres与所有节点同步,Redis在内存缓存中使用每个工作场所生成的新数据。每10分钟刷新一次磁盘数据。1)这可能吗?怎么样?

另外,我尝试使用Ignite-但我的项目在spring boot 2上运行。Spring data2。Ignite的最新发布版本是2.6,而spring
data 2支持仅在apache ignite
2.7中出现!2)我必须每晚下载2.7版本,但是如何在我的项目中使用它?(需要安装到本地Maven存储库吗?)

3)毕竟,在那种情况下最好的架构是什么?数据存储提供程序将持久性数据存储在磁盘上,并与每个工作区的内存缓存同步,并通过超时将内存中的数据持久化到磁盘吗?什么是最佳解决方案,我应该选择哪个数据库?(可能对现有的PostgreSQL有用吗?)

谢谢)


问题答案:

Ignite不适合该选项,因为JPA
1仅支持。Redis不支持SQL查询。我们的选择是带有从属复制的普通PostgreSQL主数据库。可能是cockroachDB也适用。感谢帮助))



 类似资料:
  • 问题内容: 调用获取数据库后,有什么方法可以稍后输出当前所选数据库的名称?这似乎很基础,但是我在php.net或stackoverflow上找不到任何东西(所有结果都是针对“未选择数据库”)。 问题答案: 只需使用mysql_query(或更好的mysqli_query,或最好使用PDO): 附录: 关于是否应包括在其中,有很多讨论。从技术上讲,它是Oracle的保留,可以安全地删除。如果您愿意,

  • 分布式支持 数据访问层支持分布式数据库,包括读写分离,要启用分布式数据库,需要开启数据库配置文件中的deploy参数: return [ // 启用分布式数据库 'deploy' => 1, // 数据库类型 'type' => 'mysql', // 服务器地址 'hostname' => '192.168.1.1,19

  • 我在gli的kotlin港,现在卡住了 现在,有很多属性 因此,我希望将它作为类,以便利用它附带的。 但不幸的是和不兼容..(请参见此问题) 因为kotlin社区看起来非常活跃和支持,我想知道你是否有更好的想法…

  • 我的SQL命令有问题。我想选择两部电影,其中两部电影的总持续时间小于150,我编写了这个SQL命令:

  • 我正在编写一个android聊天应用程序,并试图使用自定义FirebaceRecyclerAdapter在RecyRCleView中使用Firebase数据库实现无休止的滚动。对于第一个消息加载,我使用对数据排序的查询从Firebase数据库获取数据。orderByChild()和。limitToFirst(specificCount)到目前为止还不错。但当用户滚动到最后一个可见项时,我必须获取消

  • 我试图检索我的选择选项从3个数据库位于一个连接,这不是我的deaut连接。 但我得到了一个错误:未定义的变量:marqs(视图:C:\wamp64\www\project etSovac\资源\视图\home.blade.php) 这是我的控制器代码 还有我的home.blade.php密码 你能帮忙找出问题所在吗?谢啦