gpt4 book ai didi

cordova - 处理离线优先移动应用程序(PouchDB)的大型数据集的最佳方法

转载 作者:行者123 更新时间:2023-12-04 04:40:30 25 4
gpt4 key购买 nike

因此,我正在使用Ionic v2,并使用Pouch通过sqlite进行移动开发。来自REST API的数据包含以下内容:

{
"record-id": "2332255",
"record-name": "record-ABC-XTY",
"record-items": [
{
"item-id": "456454",
"item-name": "item-XADD",
"category": "Cat1",
"subcategory": "Subcat1",
"location": "LocationXYZ",
"owner": "Person1",
"data-rows": [
{
"row-name": "sampleRowName1",
"row-value": "ABC-XASS"
},
{
"row-name": "sampleRowName2",
"row-value": "ABC-XASS"
}
]
},
{
"item-id": "654645",
"item-name": "item-BNSSA",
"category": "Cat2",
"subcategory": "Subcat2",
"location": "LocationABC",
"owner": "Person2",
"data-rows": [
{
"row-name": "sampleRowName1",
"row-value": "ABC-XASS"
},
{
"row-name": "sampleRowName2",
"row-value": "ABC-XASS"
}
]
}
]
}

现在,您可以看到,记录项可能包含100,000个或更多的项(最大json大小:32mb)。现在,我迷失了应该采取的方法。优化数据处理至关重要,我不知道哪种PouchDB方法更好。这是我的一些想法。
  • 将整个JSON数据保存为PouchDB的一项。但是我担心它在检索时会占用大量内存,并使该应用程序变慢。
  • 通过一个邮袋条目记录对记录项进行分块,然后分别进行检索。我不确定这在整体性能上是否更好,但PouchDB记录可能会更大(?)。

  • 此外,还将进行排序,获取所有数据(仅_id和几个字段仅用于显示所有结果的列表)并进行搜索。

    最佳答案

    我们有一个类似的应用程序,它可以在离线模式下工作,并使用sqlite在本地存储数据,但是我们处理的数据可能并不那么庞大。
    对我们来说,数据是从Web服务下载为xml文件。 xml具有属性行,列,值,名称等。该应用程序将数据序列化并将其转换为对象,然后将其插入sqlite(使用“InsertAll”/“UpdateAll”对项目的插入或更新非常快)。这些xml被加载到UI中,用户可以从UI更新“值”标签。
    通过提供用户筛选器来优化搜索,从而使查询在较小的数据上运行。

    对于您的情况,我可以想到您可以使用的3个表:

    1) Records (Fields:-RecordID, RecordName) 2) Items (Fields:- ItemID (PK), RecordID (FK), ItemName etc) 3) Rows (Fields:-ItemID (FK), RowName, RowValue)



    从REST获取数据后,您可以序列化数据并将其同时插入到相应的表中。进行搜索时,请尝试为用户提供过滤器,以使实际数据集更小。

    希望能帮助到你!

    关于cordova - 处理离线优先移动应用程序(PouchDB)的大型数据集的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39909401/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com