Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要帮助选择正确的mysql数据库分片、集群或分区方法吗_Mysql_Partitioning_Cluster Computing_Sharding - Fatal编程技术网

需要帮助选择正确的mysql数据库分片、集群或分区方法吗

需要帮助选择正确的mysql数据库分片、集群或分区方法吗,mysql,partitioning,cluster-computing,sharding,Mysql,Partitioning,Cluster Computing,Sharding,我正在开发一个应用程序,将使用三个表。 100-100万行产品。 2-5亿行用户。 3-100亿行用户喜欢的产品。 表格将随着时间的推移而增长,但将保持在这些数字附近。 我想为这种数据库选择正确的方法。 我真的不太了解切分、集群或分区,但如果你们中的一些人能告诉我这个问题的最佳解决方案,我会专注于它,这将是一个巨大的帮助。 我只想要支持mysql的方法,如果我需要多个服务器来支持这种数据库,我会怎么做? 谢谢。我认为如果你真的不想要像Hadoop这样的noSQL解决方案,你就不能避免使用多个数据

我正在开发一个应用程序,将使用三个表。 100-100万行产品。 2-5亿行用户。 3-100亿行用户喜欢的产品。 表格将随着时间的推移而增长,但将保持在这些数字附近。 我想为这种数据库选择正确的方法。 我真的不太了解切分、集群或分区,但如果你们中的一些人能告诉我这个问题的最佳解决方案,我会专注于它,这将是一个巨大的帮助。 我只想要支持mysql的方法,如果我需要多个服务器来支持这种数据库,我会怎么做?
谢谢。

我认为如果你真的不想要像Hadoop这样的noSQL解决方案,你就不能避免使用多个数据库(这里是MySQL)服务器。在我看来,MySQL复制无法为此类数据提供足够的可伸缩性,因为主服务器将成为瓶颈。我也不是一个可伸缩性专业人士,但我目前也在考虑一个很好的解决方案来解决类似的问题。我想我会采用分片解决方案,在多个节点上划分数据。我正在考虑一种智能的方法来创建从数据到碎片的映射。但这取决于您的应用程序,以及您希望如何实现它。我认为您的“产品喜好”数据是分区的一个很好的候选者,因为它太大了


顺便说一句:一篇有趣的文章反对分片:

我认为如果你真的不想要像Hadoop这样的noSQL解决方案,你就不可避免地需要多个数据库(这里是MySQL)服务器。在我看来,MySQL复制无法为此类数据提供足够的可伸缩性,因为主服务器将成为瓶颈。我也不是一个可伸缩性专业人士,但我目前也在考虑一个很好的解决方案来解决类似的问题。我想我会采用分片解决方案,在多个节点上划分数据。我正在考虑一种智能的方法来创建从数据到碎片的映射。但这取决于您的应用程序,以及您希望如何实现它。我认为您的“产品喜好”数据是分区的一个很好的候选者,因为它太大了


顺便说一句:一篇有趣的文章反对分片:

您可以非常轻松地分片此数据集,但您可能不需要根据您尝试进行的分析类型进行分片。如果这只是每个用户喜欢的历史记录,那么您可能可以使用按日期的范围对数据进行分区,然后根据用户id对数据进行子分区

如果您要经常更新日期(用户可以“不一样”的东西),那么您可能需要查看切分。这里有一个分片实现示例:。您可以在以下位置对数据集执行分布式并行查询(如SQL的map/reduce):


如果您进行分片,我建议按用户id进行分片,并将products表保留为“共享”表,该表在每个分片上重复。您应该使用基于目录的分片方法,允许您在分片之间移动用户。关于单个用户的所有信息,以及关于他们喜欢什么的信息将一起存储在一个碎片上

您可以非常轻松地分割此数据集,但可能不需要根据您尝试进行的分析类型进行分割。如果这只是每个用户喜欢的历史记录,那么您可能可以使用按日期的范围对数据进行分区,然后根据用户id对数据进行子分区

如果您要经常更新日期(用户可以“不一样”的东西),那么您可能需要查看切分。这里有一个分片实现示例:。您可以在以下位置对数据集执行分布式并行查询(如SQL的map/reduce):

如果您进行分片,我建议按用户id进行分片,并将products表保留为“共享”表,该表在每个分片上重复。您应该使用基于目录的分片方法,允许您在分片之间移动用户。关于单个用户的所有信息,以及关于他们喜欢什么的信息将一起存储在一个碎片上