首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >亚马逊网络服务数据库结构- MySQL和DynamoDB

亚马逊网络服务数据库结构- MySQL和DynamoDB
EN

Stack Overflow用户
提问于 2012-12-21 14:32:13
回答 2查看 2.6K关注 0票数 0

我希望为我的转换数据运行一个DynamoDB数据库,为需要SQL Join查询的数据运行一个mysql数据库。

为了尽量将大容量/大型表排除在MySQL之外(保持更好的性能),我将把一些数据移到DynamoDB中,这些数据有时需要在MySQL中引用数据。

在DynamoDB中查询某些数据并查询MySQL,然后在PHP语言(或另一种服务器端语言)中执行最终的数据比较,从而将所需的数据返回给客户端/浏览器,这是不是很糟糕的编程/查询?

我猜最基本的问题是:必须查询NoSQL和SQL数据库,然后用php (或服务器端语言)查询结果……这是正常的还是不好的主意?

thx

注意:这样做的主要目的是进行数据库规划,以避免出现无法管理的过大关系数据库情况。因此,希望将批量数据移动到NoSQL (DynamoDB)...

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-21 16:58:01

将您的数据划分到不同的数据存储中是一个非常好的主意,每个数据存储都有其优点。

例如:

你可以把BLOB放在你的关系型数据库管理系统中(作为MySQL),但最好把它放在一个存储中,因为Amazon S3.

  • You可以把文本文档放在你的关系型数据库中,并用"...“查询它们。LIKE %QUERY%...",但是最好将它们放在弹性搜索中,或者Amazon CloudSearch.

  • You可以将您的查找表放在关系型数据库中,但是最好是在内存或基于内存的NoSQL (如Memecached或Redis)或DynamoDB

您可以以不同的方式编写上述语句,将所有内容存储在MongoDB或DynamoDB中,但更喜欢将它们放在其他地方。

当您将数据放在不同的存储中时,基于此数据存储与数据类型相关的简单性以及您对此数据的使用,您可以获得一个更简单、分布式、可伸缩且通常速度更快的系统。

缺点是您需要在数据存储之间同步数据。将记录添加到DynamoDB后,需要将BLOB上传到S3,更新CloudSearch中的文档并将记录添加到MySQL,以及将相关行写入日志文件以供将来分析。当然,这是拥有如此复杂的数据和查询的极端情况。通常你只需要混合2到3个数据存储。

如果您的系统中必须有事务,则同步数据将更加困难,最好将所有数据放在支持事务的数据存储中。但即便如此,您也可以将事务需求限制为部分数据,并与其他数据存储中的冗余数据共存。例如,在您的关系型数据库或DynamoDB中拥有没有引用记录的孤立S3对象通常不是一个大问题。

关于使用您正在编写的PHP (或其他编程语言)代码来操作分布式数据,这也取决于此。如果需要数据存储原生支持的复杂联接、GROUP_BY和过滤器功能,最好使用DB功能。但是很多时候,您的代码可以编写得足够简单,比如查询正确的DB (例如,对CloudSearch进行文本搜索),并将不同数据存储中的数据片段组合在一起。

票数 4
EN

Stack Overflow用户

发布于 2012-12-21 15:43:45

是的,你当然可以同时使用这两种方法。但它也有一些利弊..

的缺点:

  • 在MySQL中你会得到ACID保证,但是在Dynamo-db中没有这样的保证。
  • 还可以在MySQL中编写复杂查询,而在Dynamo-db中则不能编写复杂查询。

的优点:

  • 它具有分布式哈希表的属性,因此与MySQL相比有更多的性能提升。

您需要查看此博客以获取更多信息。这是a link

你也可以使用更多的NoSql模块,比如HIVEQL。HiveQl比Dynamo-db更强大,它可以比Dynamo-Db更好地提升性能。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13985343

复制
相关文章

相似问题

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