我想开始将 Node.js 用于我将从事的项目。
我在电动汽车中有流式位置信息,我想将其本地存储在汽车中的小型数据库中,并通过(脆弱的)3G 连接将其同步到具有大型数据库的服务器. 所以:
车载操作系统 3G 服务器操作系统 数据流 ---> ------ ---> --------- 节点.js 节点.js MongoDB的 小数据库 大数据库
我担心的部分是如何通过非连续 3G 连接将本地数据库同步到服务器数据库。什么 Node.js 模块最适合这项工作?
感谢您的意见!
我相信 CouchDB 将是完成这项工作的好工具。它具有内置同步功能,通常用于同步离线/在线 Web 应用程序和移动应用程序。我不确定它是否支持开箱即用的“big db”/“small db”架构。
来自维基百科:
CouchDB 在设计时考虑了双向复制(或同步)和离线操作。这意味着多个副本可以拥有自己的相同数据副本,对其进行修改,然后在以后同步这些更改。
希望这可以帮助你一点。
MongoDB 还具有数据库之间的内置复制功能。
与任何数据库一样,当一个成员长时间离线时,您需要确保数据(在无信号时间记录)能够同步。
在 MongoDB 中,使用一个名为oplog的内部集合来存储逻辑写入的历史数据。
默认情况下,MongoDB 会将 5% 的可用磁盘空间分配给 oplog [1]。这意味着在服务器数据库上的最后一次操作时间和 Car DB 上的第一个同步启动服务器的时间之间,您将拥有这么多的 oplog '时间' 进行复制。
当然如果你想发送大量数据或者有很多车,你可以改变 oplog 的大小。
因此,此选项意味着只要您的 mongodb 服务器可以相互连接,您只需向它们插入数据,它们就会为您进行同步。
根据您的要求,您可能不想让服务器数据库端口对世界开放。这意味着身份验证将到位或对主机名进行限制(使用动态 DNS)。
就此处有帮助的 Node 模块而言,我无能为力,只能尝试使用 mongooplog命令。
请让我们知道您的项目进展如何,因为它看起来很有趣。