1

我有一个非常简单的数据库结构(基本上只有一个用户表),有两个基本操作:

用户可以登录,获取身份验证令牌,然后使用存储在此用户表中的令牌提交一些数据(只有几个字节)。

但是,许多用户可以同时执行此操作(例如,在一分钟内有 10 万用户,在有限的时间段内)。

我想知道什么是一个不错的技术选择。我不害怕使用 NoSQL 数据库或任何东西,并试图最终得到可扩展的东西。

我一直在考虑一个排队系统,以及一个填充数据库的任务。或者我只需要 Amazon SimpleDB,甚至不用为消息排队而烦恼吗?还是我需要 RDS 解决方案来让多个 EC2 实例与“相同”数据库通信?或者根本没有亚马逊网络服务?感谢您的任何指点,我对此很陌生,想了解各种权衡取舍以及最适合我的应用程序的方法。

4

3 回答 3

1

如果您在 AWS 中使用 NoSQL 数据库没有问题,您必须选择:SimpleDB 和 DynamoDB。

使用 SimpleDB,您有 10GB/表的限制,这意味着您将不得不担心将数据分区到多个表中,并且您也有每秒 25 次写入的限制。

使用 DynamoDB,所有这一切都会自动处理,并且您没有大小或写入量的限制。最好的部分是您所有的数据都存储在固态磁盘 (SSD) 中,这可以帮助您获得更好的性能。

如果你是像我这样比较传统的人,你可以使用 RDS(关系数据库服务),在这里你可以选择 MSSQL、MySQL 和 Oracle

于 2012-07-10T15:08:36.447 回答
1

正如 PachinSV 所指出的,您可以选择您喜欢的任何数据库解决方案。我将再添加一个:您可以启动 EC2 实例并安装您选择的 DBMS,无论是 NOSQL(MongoDB、Cassandra)、SQL(MSSQL、MySQL、Oracle)还是其他。我将尝试用这个答案来处理您问题的其他方面(应用程序本身、可伸缩性以及(如果需要)存储)。

不过,我的建议是:

- 一个或两个 EC2 实例,可能是小型或中型(查看此处的实例类型),以处理您的应用程序负载。更多关于 EC2的信息
- 每当您需要扩展时,您都可以在 EC2 实例之前添加一个弹性负载均衡器,这样您就可以在保持水平可扩展性的同时继续向您的生态系统添加实例。
-对于数据库,我将从 RDS 实例(可能很小)开始,使用您喜欢的系统,MySQL、SQL Server 或 Oracle。使用 RDS,您可以随时更改实例大小,还可以添加一个或多个只读副本,以防您的应用程序将来变得读取密集型。更多关于 RDS的信息。正如 PachinSV 指出的那样,另一个不错的选择是DynamoDB,因为他已经提到的原因——分区、性能、更少的限制等——
虽然你没有提到,如果你需要可扩展的存储,S3 绝对是你要走的路,并且可以随时供你使用。

希望能帮助到你。

于 2012-07-10T23:50:25.710 回答
0

正如您所提到的,在 RDS 中,您将受限于他们可用的最大实例的容量,并且您无法轻松扩展。如果您最终选择了符合 ACID 的 SQL 解决方案,并且想要数据库服务(而不是自己在 EC2 实例上安装数据库),EC2 上的另一个 MySQL 选项是 Xeround,它具有自动扩展功能,因此可以容纳大型并发用户数和高吞吐量。

于 2012-07-17T11:30:57.767 回答