Mysql 使用Amazon RDS构建我自己的数据库扩展解决方案

Mysql 使用Amazon RDS构建我自己的数据库扩展解决方案,mysql,amazon-web-services,scalability,sharding,amazon-rds,Mysql,Amazon Web Services,Scalability,Sharding,Amazon Rds,我决定在我的ASP.NET应用程序中使用Amazon RDS MySQL。为了在将来支持较大的数据库容量,我决定使用分片,但采用简单的实现。我将在单个数据库上工作,当Id达到超过10000000的增量Id时,我将使用第二个数据库,依此类推 每个数据库将具有相同的数据库模式。现在,我将创建一个变量,用于保存我正在并行处理的AmazonRDS服务器的数量。我将使用UNIONALL编写查询。这些查询将动态创建,并将服务器数量考虑在内,以创建一个UNIONALL查询,该查询利用整个服务器来连接数据。然后

我决定在我的ASP.NET应用程序中使用Amazon RDS MySQL。为了在将来支持较大的数据库容量,我决定使用分片,但采用简单的实现。我将在单个数据库上工作,当Id达到超过10000000的增量Id时,我将使用第二个数据库,依此类推

每个数据库将具有相同的数据库模式。现在,我将创建一个变量,用于保存我正在并行处理的AmazonRDS服务器的数量。我将使用UNIONALL编写查询。这些查询将动态创建,并将服务器数量考虑在内,以创建一个UNIONALL查询,该查询利用整个服务器来连接数据。然后我将再次查询该数据

我将仅对希望变大的表使用此技术。应用程序将根据我为每台服务器设置的最大id(即服务器1,最多1000000)知道向哪台服务器发送删除和更新sql查询。对于insert语句,我当然会将数据插入最后一台服务器。我不需要担心复制、恢复和备份功能,Amazon RDS会解决这一问题

我的问题是:

  • 这是构建我自己的分片体系结构的好方法吗?选择更昂贵的解决方案实现分片体系结构更便宜吗
  • 关于连接查询,如果我有不同服务器的连接字符串,我还可以在VisualStudio中进行查询吗
  • 这个解决方案在性能方面有多好,他们有什么我需要了解的地方吗
  • 总的来说,我想要一个简单的解决方案,允许我从一台服务器开始,并在需要时轻松扩展。当今的大多数解决方案都非常复杂,如果不是,也非常昂贵


    谢谢

    100万张唱片不算什么。您应该根据索引在每台服务器的密钥缓存中所占的比例来决定分片。请您详细解释一下索引在每台服务器的密钥缓存中所占的比例。考虑到每行X字节的数据,我如何计算该值?建议的大小是多少100KB的1M行大约是470MB,所以可以肯定的是,每台服务器可以有更多。当索引无法再放入内存时,查询将强制db引擎访问磁盘以检索索引的溢出部分。击中磁盘的速度很慢。这时,您开始对数据库进行分片,以使索引足够小,以便可以保存在内存缓存中。数据的大小是不相关的,索引才是最重要的。此外,使用序列号作为切分键并不是最明智的切分策略,尤其是当您的应用程序是写密集型的,并且希望在多台机器之间分散负载时。为什么不使用类似于
    id%num\u of\u db\u机器的东西
    ?这是一个非常特定于应用程序的问题tho(切分),因此在不了解应用程序逻辑的情况下,此处的任何响应都将非常通用。id%num\u of_db\u machine将为我提供insert命令也应该获得的服务器(%你是说modulu right?)。此外,通过使用更小的数据库(尽管amazon可以达到1TB),t将更快地备份和恢复每个DB实例的数据,以防特定服务器中的数据损坏。