Php AWS数据库结构-MySQL&;发电机

Php AWS数据库结构-MySQL&;发电机,php,mysql,amazon-web-services,amazon-dynamodb,Php,Mysql,Amazon Web Services,Amazon Dynamodb,我希望为我的transational数据运行一个DynamoDB数据库,为需要SQL连接查询的数据运行一个mysql数据库 为了避免MySQL中出现大容量/大型表(保持更好的性能),我将把一些数据移动到DynamoDB中,有时需要引用MySQL中的数据 查询DynamoDB中的某些数据并查询MySQL,然后用PHP(或另一种服务器端语言)执行最终的数据比较,以获得返回到客户端/浏览器所需的数据,这是否是糟糕的编程/查询 我想基本的问题是:必须查询NoSQL&SQL数据库,然后用php(或服务器端

我希望为我的transational数据运行一个DynamoDB数据库,为需要SQL连接查询的数据运行一个mysql数据库

为了避免MySQL中出现大容量/大型表(保持更好的性能),我将把一些数据移动到DynamoDB中,有时需要引用MySQL中的数据

查询DynamoDB中的某些数据并查询MySQL,然后用PHP(或另一种服务器端语言)执行最终的数据比较,以获得返回到客户端/浏览器所需的数据,这是否是糟糕的编程/查询

我想基本的问题是:必须查询NoSQL&SQL数据库,然后用php(或服务器端语言)查询结果。。。这是正常的还是坏主意

thx


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

是的,您肯定可以同时使用这两个。。。 但是它有一些优点和缺点。

缺点:

  • 在MySQL中,您将获得ACID保证,但在Dynamo db中没有这样的保证
  • 在MySQL中,您可以编写复杂的查询,而在Dynamo db中,您不能编写复杂的查询
优点:

  • 它具有分布式哈希表的特性,因此与MySQL相比,它的性能更高
你需要看看这个博客来了解更多信息。 给你

您还可以使用更多的NoSql模块,如HIVEQL。
HiveQl比Dynamo Db更强大,它可以比Dynamo Db更有效地提高性能。

是的,您肯定可以同时使用这两种技术。。。 但是它有一些优点和缺点。

缺点:

  • 在MySQL中,您将获得ACID保证,但在Dynamo db中没有这样的保证
  • 在MySQL中,您可以编写复杂的查询,而在Dynamo db中,您不能编写复杂的查询
优点:

  • 它具有分布式哈希表的特性,因此与MySQL相比,它的性能更高
你需要看看这个博客来了解更多信息。 给你

您还可以使用更多的NoSql模块,如HIVEQL。
HiveQl远不止Dynamo Db,它可以比Dynamo Db更有效地提高性能。

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

例如:

  • 您可以将BLOB放在RDBMS中(作为MySQL),但最好将其放在存储中
  • 您可以将文本文档放在RDBMS中,并使用“…如%query%…”进行查询,但最好将它们放在弹性搜索或查询中
  • 您可以将会话管理数据放在RDBMS中,但最好放在或中
  • 您可以在RDBMS中使用查找表,但最好使用内存或基于内存的NoSQL(如Memecached或Redis)或DynamoDB
您可以以不同的方式编写上述语句,将所有内容存储在MongoDB或DynamoDB中,但更愿意将它们放在其他地方

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

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

如果您的系统中必须有事务,那么同步数据会困难得多,最好将所有数据都放在支持事务的数据存储中。但即便如此,您也可以将事务需求限制在部分数据上,并与其他数据存储中的冗余数据共存。例如,在RDBMS或DynamoDB中没有引用记录的孤立S3对象通常不是大问题


关于编写PHP(或其他编程语言)代码来操作分布式数据,这也取决于。如果需要数据存储本机支持的复杂连接、分组、筛选功能,最好使用DB功能。但很多时候,您的代码编写起来非常简单,比如查询正确的数据库(例如,从文本搜索到CloudSearch)并在不同的数据存储中组装数据块。

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

例如:

  • 您可以将BLOB放在RDBMS中(作为MySQL),但最好将其放在存储中
  • 您可以将文本文档放在RDBMS中,并使用“…如%query%…”进行查询,但最好将它们放在弹性搜索或查询中
  • 您可以将会话管理数据放在RDBMS中,但最好放在或中
  • 您可以在RDBMS中使用查找表,但最好使用内存或基于内存的NoSQL(如Memecached或Redis)或DynamoDB
您可以以不同的方式编写上述语句,将所有内容存储在MongoDB或DynamoDB中,但更愿意将它们放在其他地方

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

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