2012-01-17 50 views
2

您会考虑一种干净而有效的方式来初始填充作为RESTful分布式系统体系结构一部分的数据存储?将初始(批量)数据导入RESTful系统的最佳做法是什么?

我们已经有一个批量导入的POST方法,它接受XML提要,解析,验证和导入数据。因此,有一种可能性需要客户端针对我们的REST接口发布POST请求(如果我们遇到了请求超时问题,可能会发生大块)。

数据存储本身是基于MongoDB的,所以另一方面你也可以考虑低级批量导入,它需要一个压缩的数据文件,解压缩并直接将JSON数据导入到数据库中这当然会绕过我们的业务逻辑来验证要导入的数据)。

你有什么意见和建议,有没有任何REST模式可以给出关于这个问题的建议?

+0

可能是HTTP管道传输可能会增加吞吐量? – ngeek 2012-01-20 23:48:36

回答

1

不知道更多的细节,我认为你最终钉牢它。我会将数据分成块,然后运行一个程序来读取这些块中的一个,并将这些数据发送到您的http接口。

执行导入的脚本/程序只能处理足够小的块以避免超时,并且应该意识到其成功与否。如果一件作品超时或失败,你应该确保你知道你在哪里进口,这样你就可以从同一个地方重新尝试。

说了这么多,如果你的系统允许多次导入同样的东西而没有后果(见http://en.wikipedia.org/wiki/Idempotence),所以如果你必须完全重新发送1段,你的宁静的后端将是能够接受它而不需要复制数据。

如果你得到它的工作,你甚至可以同时运行你的导入程序与多个块,使其并行和更快。 (只要你的http/restful后端可以处理它)

+0

...是的,好像我会坚持使用目前的方法在发布1000个实体的费用。感谢您关于操作的幂等性的提示,这可能需要跟踪单个操作的成功并查看哪些可以在随后的尝试中被跳过。 – ngeek 2012-01-20 23:46:36

相关问题