objective-c – 在Mac App和Web之间同步一小段数据的最佳方法是什么?

objective-c – 在Mac App和Web之间同步一小段数据的最佳方法是什么?,第1张

概述我正在考虑MongoDB.正是这样,目标很清楚,这是需要发生的事情: 在我的应用程序中,Finch(finchformac.com了解详细信息)我每天都有成千上万的条目为每个用户打开了什么窗口,打开它的时间,关闭它的时间以及标签,如果他们选择了一个为了它.我需要在线备份这些数据,以便它可以同步到其他Mac计算机等.我还需要能够从他们的数据在线绘制图表,这意味着一些复杂的查询会触及数十万条记录. 现 我正在考虑MongoDB.正是这样,目标很清楚,这是需要发生的事情:
在我的应用程序中,Finch(finchformac.com了解详细信息)我每天都有成千上万的条目为每个用户打开了什么窗口,打开它的时间,关闭它的时间以及标签,如果他们选择了一个为了它.我需要在线备份这些数据,以便它可以同步到其他Mac计算机等.我还需要能够从他们的数据在线绘制图表,这意味着一些复杂的查询会触及数十万条记录.

现在我尝试使用Ruby / Rails / MongoID在应用程序端使用JsON解析器一次以10,000个记录的增量发送数据,数据通过后台mapreduce作业处理到其他集合.但是,这一切似乎都阻止了,最终太慢了. (如果有的话)有什么建议可以解决这个问题?

解决方法 你有一个复杂的问题,这意味着你需要把它分解成更小,更容易解决的问题.

问题(我认为):

>你有一个收集数据的应用程序.你只需要
将数据存储在本地某处,直到它同步到
服务器.
>您已收到服务器上的数据,现在需要推送它
进入数据库足够快,以免它变慢.
>你必须报告这些数据,这听起来既困难又复杂.

您可能希望将其写为某种API,为简单起见(并且由于您在客户端上有大量的备用处理周期),您需要将客户端处理的这些数据块准备好导入到JsON中.数据库.一旦你有了JsON,你就不需要MongoID(你只需要将JsON直接扔进数据库).你也可能不需要rails,因为你只是创建一个简单的API,所以坚持使用Rack或Sinatra(可能使用像Grape这样的东西).

现在你需要解决整个“这一切似乎阻止并且最终太慢”的问题.我们已经删除了MongoID(因此无需转换JsON – > Ruby Objects – > JsON)和Rails.在我们开始对这些数据进行MapReduce之前,您需要确保它足够快地加载到数据库中.您可能需要构建整个事物,以便MapReduce支持您的报告功能.对于数据的同步,除了传递JsON之外,您不需要做任何事情.如果您的数据没有足够快地写入数据库,您应该考虑Sharding your dataset.这可能是使用一些基于用户的密钥完成的,但您比我更了解您的数据模式.您需要选择分片密钥,以便当多个用户同时同步时,他们可能会使用不同的服务器.

解决问题1和2后,您需要处理报告. Mongo中的MapReduce函数可能支持这一点.我对这部分的第一个评论是确保你至少运行Mongo 2.0. In that release 10gen sped up MapReduce(我的测试表明它比1.8快得多).除此之外,您可以通过Sharding并将读取定向到副本集中的辅助服务器(您正在使用副本集?)来实现进一步增加.如果仍然无效,请考虑构建模式以支持您的报告功能.这使您可以在客户端上使用更多周期来执行工作,而不是加载服务器.但是,在您证明传统方法不起作用之后,应该保留这种优化.

我希望文本墙有所帮助.祝好运!

总结

以上是内存溢出为你收集整理的objective-c – 在Mac App和Web之间同步一小段数据的最佳方法是什么?全部内容,希望文章能够帮你解决objective-c – 在Mac App和Web之间同步一小段数据的最佳方法是什么?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1225858.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存