所以我使用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个或更多项目(est json大小:32mb)。现在我迷失了我应该采取的方法。优化的数据处理至关重要,我不知道PouchDB方法更好。以下是我的一些想法。
此外,还会进行排序,获取所有数据(仅显示_ids和少数字段以显示所有结果的列表)和搜索。
答案 0 :(得分:0)
我们有一个类似的应用程序在离线模式下工作,并使用sqlite在本地存储数据,但我们处理的数据可能不是那么大。 对我们来说,数据是从Web服务下载为xml文件的; xml具有属性行,列,值,名称等。应用程序序列化数据并将其转换为对象,然后将其插入到sqlite中(使用" InsertAll" /" UpdateAll"插入或更新项目非常快)。这些xml被加载到UI中,用户可以更新" value"来自UI的标签 通过提供用户过滤器来优化搜索,以便在较小的数据上运行查询。
对于您的情况,我可以想到您可以使用的3个表: -
1)记录(字段:-RecordID,RecordName) 2)项目(字段: - ItemID(PK),RecordID(FK),ItemName等) 3)行(字段:-ItemID(FK),RowName,RowValue)
从REST生成数据后,您可以序列化数据并将其同时插入到各自的表中。尝试在搜索时为用户提供过滤器,以便实际数据集更小。
希望它有所帮助!
答案 1 :(得分:0)
您的基本决定是嵌入数据还是引用数据。以下是一些决定的一般规则:
嵌入时间:
参考时间:
如果您将所有内容存储为一条记录,那么您可能会遇到尺寸问题。分裂造成的额外存储应该是无关紧要的。
您将使用视图创建索引,然后将索引提供给您的查询。你如何做到这一点可能会主导效率。