安装程序
我有一个原生的iOS和Android应用程序,可以与我的网络服务器同步数据.应用程序的一个要求是它们脱机工作,因此数据存储在sqlite数据库中的应用程序中.
应用程序通过一系列REST调用与服务器进行通信,这些调用从服务器发送JSON,以便应用程序存储在其数据库中.
我的问题
这些数据的规模非常大,一些表可以有一百万条记录,而手机数据库的最终大小可以接近100mb.
REST端点必须限制其数据,并且必须使用不同的偏移多次调用才能实现整个同步.
所以我正在寻找提高这一过程效率的方法.
我的想法
我的想法是创建一个可以在服务器上运行的脚本,该脚本将从服务器数据库创建一个sqlite文件,压缩它并将其放在某个地方供应用程序下载.有效地创建服务器当前数据的快照.
应用程序将下载此快照,但仍需要调用其REST方法,以防自快照发生以来发生了某些变化.
问题
这会给我的webapp增加另一层复杂性,我想知道这是否是正确的方法.在同步大量数据时,人们会使用其他技术吗?
嗨,我有一个查询,从我的房屋表中选择所有按街道地址分组的房屋.它统计了该街道上有多少人,但也计算了另一个游说桌中引用该街道的数量.
我有查询在MYSQL中工作但是当我在我的iOS应用程序中使用SQlite尝试它时它不起作用.我不知道两者之间是否有一些语法差异?
SELECT haddress AS hd, COUNT( * ) ,
(
SELECT COUNT( * )
FROM canvass, house
WHERE canvass.hid = house.hid
AND house.haddress = hd
)
FROM house
GROUP BY haddress
Run Code Online (Sandbox Code Playgroud) 我已经按照本教程连接了一个 Api 网关方法来推送到 SQS 队列。
https://dzone.com/articles/creating-aws-service-proxy-for-amazon-sqs
这一切都很好,但我想使用一些路径参数向我的消息添加一些消息属性,但我无法让它工作。
这是教程中的当前映射模板。
Action=SendMessage&MessageBody=$util.urlEncode($util.escapeJavaScript($input.json('$')))
Run Code Online (Sandbox Code Playgroud)
我试图保留“application/x-www-form-urlencoded”格式,并通过将其更改为(现在使用静态值)将 MessageAttributes 添加到此
Action=SendMessage&MessageBody=$util.urlEncode($util.escapeJavaScript($input.json('$')))
&MessageAttribute[0][Name]=foo&MessageAttribute[0][Type]=String&MessageAttribute[0][Value]=bar
Run Code Online (Sandbox Code Playgroud)
但我得到了这个错误
{
"Error": {
"Code": "MalformedQueryString",
"Message": "Keys may not contain [",
"Type": "Sender"
},
"RequestId": "ea121e6e-ca37-5d14-b92b-4a2c6fedf403"
}
Run Code Online (Sandbox Code Playgroud)
我应该如何在不使用“[”的情况下对 MessageAttribues 数组进行编码