我一直在阅读很多关于 CouchDB (以及 PouchDB )的内容,我仍然不确定我的项目最佳选择是什么。
根据我到目前为止所阅读的内容,我确实有可能在脑海中解决该项目,但我不确定性能之类的内容,并希望获得一些见解。 或许还有更好的地方可以提出这个问题?如果是这样的话请告诉我!(已经尝试过他们的IRC频道和邮件列表,但到目前为止还没有答案)
因此该项目基本上是'离线优先'移动应用程序。用户是设备安装程序。他们每天都会分配一些位置和设备进行安装。他们需要在建筑物周围走动并更新数据(例如,设备X已安装在位置Y;或者位置C上设备B的属性A已更改为D等,等等)
有关基本数据的更多信息。
当然我试图简化数据,但这应该包含要点。
现在,这些是应用程序的重要特征:
考虑到这些特征,我现在考虑以下因素:
我假设以下内容是否正确?
如果这一切都成立,那么它可能非常适合这个项目。至少我是这么认为的? (如果我错了,请纠正我!)但我确实读过一些'表现'关于过滤复制的问题。假设有数百个用户(设备安装程序)(现在还没有这么多用户,但未来可能会有这样的用户)。那么,为数百个“用户”运行此过滤后的复制会是一个问题吗?数据库?我确实读过有关选择器对象的CouchDB 2.0和2.1来进行过滤复制,而不是通常的JS MapReduce,它应该快10倍。但我的问题仍然是:这是否运作良好,即使对于数百(甚至数千)的过滤'数据库?我对基础算法和限制知之甚少,但我想知道是否有任何改变对全球'大师'数据库执行或不需要昂贵的计算来决定哪个'过滤'要复制到的数据库。如果确实如此......在实践中是否重要?
请欢迎任何建议。我也考虑过使用其他数据库。我的第一种方法实际上是使用关系数据库。但此应用程序所需的特性之一必须是实时同步。在过去,我已经能够使用RDBMS中的修订字段和大量代码来处理这个问题,但我真的更喜欢像CouchDB / PouchDB一样优雅的同步。这真的是一个可以让我头疼的地方。记住这一点,我有什么选择?我是否会走上正确的道路,或者表演会成为一个问题吗?
另请注意,我还考虑过为每个用户('每个用户一个数据库')设置单独的数据库,但我认为它可能不适合这个项目,因为一些待办事项可能被分配给多个用户,当一个用户为待办事项更新某些东西时,它也必须为其他用户更新。
希望CouchDB的一些专家能够对我的问题有所了解。非常感谢!
我知道可能会有一些争论,但我只对其他人的事实和专业知识感兴趣。