首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我应该使用DynamoDB还是通过webservice与MySQL一起使用移动应用同步

我应该使用DynamoDB还是通过webservice与MySQL一起使用移动应用同步
EN

Database Administration用户
提问于 2012-03-20 02:29:50
回答 1查看 2.8K关注 0票数 3

我早些时候在Stack溢出时问过这个问题,但是一个用户建议我在这里问它,因为这个网站与数据库相关的问题更相关。

我制作了一个Android应用程序,在这个阶段我不提它的名字。它通过LAMP上的with服务与中央MySQL数据库同步,这也是我创建的。一切都很好,没有任何问题。当用户使用该应用程序并执行某些操作时,来自他们设备的数据将被上传到运行在数据中心的中央服务器上。当其他移动设备与数据库同步时,它们将使用更新的数据进行更新。在初次安装时,app通过几百次查询下载了几百K的数据。

现在的问题是,该应用程序已经开始获得如此多的下载,我可以预见,我将无法跟上同步。一段时间以来,我一直在优化安卓端和网络端的代码( iPhone版本还在开发中),也使用缓存技术,但仍然有数千台手机设备和一个数据库之间的通信达到了极限。每天下载的次数都比前一天多。现在,我非常担心如何处理这种情况。

我一直在研究亚马逊DynamoDB的使用情况,还浏览了它的SDK、教程等,并准备花几天时间将整个同步功能切换到亚马逊。但这最终会让我付出沉重的代价,我将不得不为这款应用收费,或者使用更好的广告方案。但这是另一个问题。

不幸的是,谷歌搜索了几个星期,并没有帮助我找出如何有效地处理数千台移动设备之间的大型同步,这些设备可能会有数万台,甚至几十万台。

简而言之,让我们说,如何处理使用我的应用程序的100 K设备,并且需要与中央数据库保持同步?

如果你遇到过类似的情况,并知道如何在现实生活中处理,请回答。

提前谢谢。

EN

回答 1

Database Administration用户

发布于 2012-03-20 04:35:46

我没有使用DynamoDB的经验,所以我能做的最好的就是提供一些关于优化的提示,以便在托管的MySQL世界中寻找。

  • 内存分配如果您正在使用innodb,请确保您有足够的缓冲池大小,其中两个日志文件作为25%缓冲池大小的较小值或1G。在一个完美的世界中,您的缓冲池将与所有.ibd文件一样大(也就是来自information_schema.tables的sum(data_length+index_length),其中engine='innodb')。可以理解的是,这并不总是可能的,在这种情况下,尝试将系统内存的60-70%分配给缓冲池,同时将其余部分留给磁盘缓存。(当然,这假定这是一个专用的MySQL服务器,不托管apache或运行您的php脚本)。

如果您正在运行MyISAM表,那么至少要确保您的key_buffer_size能够容纳index_length (或.MYI文件的大小)。

  • 磁盘。如果您需要回到磁盘,您希望这些是尽可能快。在一个完美的世界里,你会有基于PCI-E的SSD卡。我想这是超出你的预算,如果你担心的收费后,切换到亚马逊,所以也许看看你的主机提供商是否有任何选择超过你目前的。基于SSD的SAS驱动器> 15k hdd sas >nl。
  • mysql与客户端之间的服务层。到数据库的每个连接都有内存开销,可用于缓冲池或磁盘缓存。尝试有一个服务层来维护一个有限的连接池,并在可能的情况下提供应用层缓存。
  • 分配工作负荷。这就相当于进入“云”,因为你自己管理着所有的机器。如果您的应用程序大多读重,并且不总是需要达到微秒,那么您可以在许多物理机器之间设置复制,并在它们之间进行负载平衡。

考虑让奴隶建立在不同的物理数据中心遍布全国/世界/任何适用于你的人口。负载平衡连接到最近的连接。(这假设流量首先被路由到这些位置的前端,否则问题可能只会恶化)。

  • 分区。如果您使用myisam并处理表级锁,则尤其如此。如果您有一个具有定期修剪旧行的模式的表(您可以直接删除分区,而不是运行单个的delete查询来分割数据),这也特别有用。
票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/15283

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档