Ash*_*dey 2 javascript database node.js react-native electron
我有一个JavaScript应用程序,该应用程序是使用react-native为移动应用程序实现的,而其桌面应用程序是使用electronic框架实现的。移动应用程序使用react-native-sqlite-storage本机模块保存首选项和数据(5-6表),而电子应用程序使用node-sqlite3。
移动和桌面应用程序共享许多功能,但是由于使用了不同的数据库插件,因此存在很多差异。另外,对于桌面应用程序,由于node-sqlite3是本机依赖项,因此我必须分别为Windows和macOS构建应用程序安装程序。真痛苦!
所以,我需要的是一个数据库解决方案:
以下是我遇到的似乎很吸引人的列表:
那么,您有什么建议?如何为您的应用实现类似功能?
我一直在测试PouchDB,RxDB(依赖于带有RxJS流的PouchDB进行查询),Realm-JS(诸如sqlite3之类的本地数据库),FireStore。NeDB不支持远程同步。
我不会在每个数据库上介绍性能指标详细信息,但是PouchDB在查询超过20.000个项目时(使用indexeddb / websql适配器尝试)非常慢且占用大量内存。
RxDB在很多项目上通常要快得多,尤其是在订阅查询更改时(也尝试过indexeddb / websql适配器)。模式和迁移也非常方便。
FireStore是一个不错的选择,并且服务器和客户端组件的安装非常简单,但是您需要在Google平台上运行才能自如。如果您希望对服务器逻辑进行一些控制,并且集合有可自定义的ACL,则Firebase函数具有一定的灵活性。速度一直不错,与RxDB相当。如果需要的话,还带有一个很好的身份验证模块。
如果您想在客户端进行更多的扩展,而您可能没有,或者如果您要进行复杂的查询,那么我真的建议您使用诸如realm之类的东西。您需要像使用sqlite3一样为每个平台进行编译,但是它们具有同步,离线持久性,丰富的查询和出色的性能。即使使用sqlite后端,基于Java的解决方案(如PouchDB,RxDB或FireStore)也无法与之竞争,因为许多计算仍将在您宝贵的JS线程中进行。realm在本机库上做了很多繁重的工作。我已经能够做到像“ ABC可以在不到100毫秒的时间内查询100.000个项目,并返回数百个结果,而不会显着冻结UI或大量增加内存使用。也支持客户端迁移,这很好。
最后,有多个答案:1.想要自己托管所有内容,而不需要大规模的客户端(您可以使用过滤器对服务器数据的子集进行同步),RxDB ist非常好,并具有一组不错的功能。2.想要非常简单的设置,漂亮的模块(如auth,服务器功能等),并且不需要在客户端上大规模扩展(也可以使用过滤器与服务器数据子集进行同步),FireStore非常棒。3.在客户端上需要大量数据,领域是我的偏爱。我个人真的不喜欢领域同步平台的定价模型(尽管从技术上讲很酷),但是数据库本身是免费的,也许您可以尝试实现自定义同步。
用我的结果来衡量,我遇到了一些非常具体的挑战,例如大型的非关系性馆藏和全文搜索,您的用例可能会相差很大。
| 归档时间: |
|
| 查看次数: |
2857 次 |
| 最近记录: |