我希望为我的转换数据运行一个DynamoDB数据库,为需要SQL Join查询的数据运行一个mysql数据库。
为了尽量将大容量/大型表排除在MySQL之外(保持更好的性能),我将把一些数据移到DynamoDB中,这些数据有时需要在MySQL中引用数据。
在DynamoDB中查询某些数据并查询MySQL,然后在PHP语言(或另一种服务器端语言)中执行最终的数据比较,从而将所需的数据返回给客户端/浏览器,这是不是很糟糕的编程/查询?
我猜最基本的问题是:必须查询NoSQL和SQL数据库,然后用php (或服务器端语言)查询结果……这是正常的还是不好的主意?
thx
注意:这样做的主要目的是进行数据库规划,以避免出现无法管理的过大关系数据库情况。因此,希望将批量数据移动到NoSQL (DynamoDB)...
发布于 2012-12-21 16:58:01
将您的数据划分到不同的数据存储中是一个非常好的主意,每个数据存储都有其优点。
例如:
你可以把BLOB放在你的关系型数据库管理系统中(作为MySQL),但最好把它放在一个存储中,因为Amazon S3.
中
您可以以不同的方式编写上述语句,将所有内容存储在MongoDB或DynamoDB中,但更喜欢将它们放在其他地方。
当您将数据放在不同的存储中时,基于此数据存储与数据类型相关的简单性以及您对此数据的使用,您可以获得一个更简单、分布式、可伸缩且通常速度更快的系统。
缺点是您需要在数据存储之间同步数据。将记录添加到DynamoDB后,需要将BLOB上传到S3,更新CloudSearch中的文档并将记录添加到MySQL,以及将相关行写入日志文件以供将来分析。当然,这是拥有如此复杂的数据和查询的极端情况。通常你只需要混合2到3个数据存储。
如果您的系统中必须有事务,则同步数据将更加困难,最好将所有数据放在支持事务的数据存储中。但即便如此,您也可以将事务需求限制为部分数据,并与其他数据存储中的冗余数据共存。例如,在您的关系型数据库或DynamoDB中拥有没有引用记录的孤立S3对象通常不是一个大问题。
关于使用您正在编写的PHP (或其他编程语言)代码来操作分布式数据,这也取决于此。如果需要数据存储原生支持的复杂联接、GROUP_BY和过滤器功能,最好使用DB功能。但是很多时候,您的代码可以编写得足够简单,比如查询正确的DB (例如,对CloudSearch进行文本搜索),并将不同数据存储中的数据片段组合在一起。
发布于 2012-12-21 15:43:45
是的,你当然可以同时使用这两种方法。但它也有一些利弊..
的缺点:
的优点:
您需要查看此博客以获取更多信息。这是a link!
你也可以使用更多的NoSql模块,比如HIVEQL。HiveQl比Dynamo-db更强大,它可以比Dynamo-Db更好地提升性能。
https://stackoverflow.com/questions/13985343
复制相似问题