我正在开发一个分布式应用程序,我有一个SQLite数据库,必须在分布式服务器之间共享。如果我在serverA,并更改了sqlite行,这个更改必须立即在其他服务器上,但如果一个服务器离线,然后它上线,它必须更新所有信息等于其他服务器。我正在尝试使用小型SQLite数据库开发HA服务。我正在考虑像MongoDB或ReThinkDB这样的东西,因为复制工作正常,而且我有独立的服务器在线数据。是否有库或其他SQL方法可在服务器之间共享数据?
inn6fuwd1#
我使用Raft共识协议来复制我的SQLite数据库。你可以在这里找到这个系统:https://github.com/rqlite/rqlite
pprl5pva2#
以下是一些选项:LiteReplica:它支持使用单个主节点(可写节点)和一个或多个副本节点(只读节点)对SQLite3数据库进行主从复制。如果设备离线,然后又在线,则辅助/从属数据库将使用主/主数据库进行增量更新。LiteSync:它实现了多主机复制,因此我们可以写入任何节点中的数据库,即使设备离线。在这两种情况下,我们都使用修改后的URI打开数据库,如下所示:
“file:/path/to/app.db?replica=master&bind=tcp://0.0.0.0:4444”
AergoLite:它基于区块链,具有最高级别的安全性。存储不可变的关系数据,由分布式共识保护,资源使用率低。披露:我是这些解决方案的作者
4zcjmb1e3#
您可以通过在应用程序中嵌入SymmetricDS来同步SQLite数据库。它支持偶尔连接的客户端,因此它将在服务器联机时捕获更改并同步它们。它支持几种不同的数据库平台,可以用作库或独立服务。
k2fxgqgv4#
您还可以使用CopyCat,它支持SQLite以及其他一些数据库类型。
gstyhher5#
土拨鼠看起来不错:https://github.com/maxpert/marmot从他们的文档中:
Marmot是一个分布式的SQLite复制器,具有无领袖性和最终的一致性。它允许你在容错的NATS Jetstream之上构建节点之间的健壮复制。这意味着如果你正在运行一个基于SQLite的阅读量很大的网站,你应该能够通过添加更多的SQLite复制节点来轻松地扩展它。SQLite可能是最普遍存在的DB,几乎无处不在。Marmot的目标是通过在其上构建一个复制层,使其在服务器端应用程序中更加普遍。
5条答案
按热度按时间inn6fuwd1#
我使用Raft共识协议来复制我的SQLite数据库。你可以在这里找到这个系统:
https://github.com/rqlite/rqlite
pprl5pva2#
以下是一些选项:
LiteReplica:
它支持使用单个主节点(可写节点)和一个或多个副本节点(只读节点)对SQLite3数据库进行主从复制。
如果设备离线,然后又在线,则辅助/从属数据库将使用主/主数据库进行增量更新。
LiteSync:
它实现了多主机复制,因此我们可以写入任何节点中的数据库,即使设备离线。
在这两种情况下,我们都使用修改后的URI打开数据库,如下所示:
AergoLite:
它基于区块链,具有最高级别的安全性。存储不可变的关系数据,由分布式共识保护,资源使用率低。
披露:我是这些解决方案的作者
4zcjmb1e3#
您可以通过在应用程序中嵌入SymmetricDS来同步SQLite数据库。它支持偶尔连接的客户端,因此它将在服务器联机时捕获更改并同步它们。它支持几种不同的数据库平台,可以用作库或独立服务。
k2fxgqgv4#
您还可以使用CopyCat,它支持SQLite以及其他一些数据库类型。
gstyhher5#
土拨鼠看起来不错:
https://github.com/maxpert/marmot
从他们的文档中:
什么和为什么?
Marmot是一个分布式的SQLite复制器,具有无领袖性和最终的一致性。它允许你在容错的NATS Jetstream之上构建节点之间的健壮复制。这意味着如果你正在运行一个基于SQLite的阅读量很大的网站,你应该能够通过添加更多的SQLite复制节点来轻松地扩展它。SQLite可能是最普遍存在的DB,几乎无处不在。Marmot的目标是通过在其上构建一个复制层,使其在服务器端应用程序中更加普遍。