我是新的React Native,我需要一个本地数据库工具的列表,将满足最低标准的描述如下。
如果这是一个PHP/MySQL应用程序,我将构建3个数据库表:
t_food (500 rows)
- food_id (primary_key)
- food_name (string)
t_meal (100 000 rows)
- meal_id (primary_key)
- meal_name (string)
t_meal_item (1 000 000 rows)
- meal_id (foreign_key)
- food_id (foreign_key)
这三个表在MySQL中组合起来占用了大约10 MB到15 MB。然后我将使用PHP创建一个界面来显示此查询的结果:
SELECT meal_id FROM t_meal_item WHERE food_id = @food1 AND meal_id IN (SELECT meal_id FROM t_meal_item WHERE food_id = @food2 AND meal_id IN (SELECT meal_id FROM t_meal_item WHERE food_id = @food3))
在MySQL/PHP应用程序中,SQL查询的结果将在2秒内返回。
在React原生环境中,我需要一个本地数据库,它可以实现与上面类似的结果,但还必须符合以下要求:
1.必须支持15 MB的永久存储空间(以便在没有Internet访问的情况下使用)
1.在现代主流移动的设备上,查询由3种食物过滤的一顿饭必须在3秒内完成。例如,在iphone6和华为Nova Plus上,上述SQL查询必须在3秒内完成。
我已经尝试了以下方法:
答:领域不符合此问题中所示的条件2:
Improve the speed of a realm query in react-native?
领域问题的解决方案将是此问题的可接受答案。
B. 6年前,我在一台iOS设备上用核心数据尝试了这个,iOS设备由于内存不足而不断崩溃。
C.我正在尝试使用SQLite Storage,但已经在此处遇到此问题:
basic React Native SQLite script returning undefined which causes error
什么工具可以解决这个问题?
5条答案
按热度按时间s5a0g9ez1#
考虑将react native作为前端库,它需要一个restful api来连接,这样你就可以用php做后端,react native将从它那里接收数据
如果需要本地数据库,可以使用react-native-local-mongodb
或react-native-sqlite-storage
或react-native-sqlite
另外,如果您使用redux,您还可以使用redux-persist
56lgkhnf2#
我还没有使用过人们列出的其他数据库,但我会推荐Realm。非常有用,快速,与react-native完全集成,并且有很好的文档记录。
https://realm.io
vbkedwbf3#
您可以使用SQLite,它具有React Native的原生插件:https://github.com/andpor/react-native-sqlite-storage
dddzy1tm4#
到目前为止,WatermelonDB似乎满足了大小限制和性能要求。
Realm现在是商业化的,并且与MongoDB及其云服务紧密耦合(或者至少从文档中看起来是这样)。
我还快速浏览了一下PouchDB,但它的一个React原生集成stockulus/pouchdb-react-native是基于AsyncStorage的(根据我的经验,它非常慢),另一个craftzdog/pouchdb-react-native是基于sqlite的,但在过去几年中没有任何活动。
nxagd54h5#
根据我的经验,这完全取决于应用程序的需求。如果你的应用程序不是大规模的,你可以使用React Native的默认异步存储,如果你使用redux,你可以使用redux-persistent并提供它异步存储插件,这样它会自动持久化你的reducer。
在其他情况下,如果你有一个大规模的应用程序,你很关心数据库,你应该使用WatermelonDB,因为它是React Native最好的可用数据库。它还提供同步功能,通过它你可以创建一个在线/离线应用程序,数据库自动同步到后端。WatermelonDB也在其后端使用SQlite来存储数据,但它更强大,更有用