我有一个非常简单的数据库结构(基本上只有一个用户表),有两个基本操作:
用户可以登录,获取身份验证令牌,然后使用存储在此User表中的令牌(仅几个字节)提交一些数据。
然而,许多用户可以同时执行此操作(例如,在一段时间内,在一段时间内,100k用户会在一段时间内完成此操作)。
我想知道什么是一个很好的技术选择。我并不害怕使用NoSQL数据库或任何东西,我试图最终得到可扩展的东西。
我一直在考虑一个排队系统,以及一个填充数据库的任务......或者我只需要Amazon SimpleDB,甚至不需要排队等待消息?或者我是否需要RDS解决方案才能让多个EC2实例与“相同”数据库通信?或者根本不是亚马逊网络服务? 感谢您的任何指示,我对此非常陌生,希望能够在各种权衡方面获得一些见解,以及对我的应用程序最有用的。
答案 0 :(得分:1)
如果您在AWS中没有使用NoSQL数据库的问题,您必须选择:SimpleDB和DynamoDB。
使用SimpleDB,你有10GB / Table的限制,这意味着你将不得不担心在多个表中对数据进行分区,并且你还有每秒25次写入的限制。
使用DynamoDB,所有这些都是自动处理的,您的大小或写入数量没有限制。最好的部分是所有数据都存储在固态磁盘(SSD)中,这有助于您获得更好的性能。
如果你是一个比我更传统的人你可以使用RDS(关系数据库服务),在这里你可以选择MSSQL,MySQL和Oracle
答案 1 :(得分:1)
正如PachinSV指出的那样,您可以选择您喜欢的任何数据库解决方案。我将再添加一个:您可以启动EC2实例并安装您选择的DBMS,NOSQL(MongoDB,Cassandra),SQL(MSSQL,MySQL,Oracle)或其他任何东西。我将尝试使用此答案来处理您问题的其他方面(应用程序本身,可伸缩性以及存储时的可扩展性)。
但我的建议是:
- 一个或两个EC2实例,可能是小型或中型(请查看实例类型here),以便处理您的应用程序负载。更多关于EC2 here
- 无论何时需要扩展,都可以在EC2实例前添加Elastic Load Balancer,这样您就可以在保持水平可扩展性的同时不断向生态系统添加实例。
- 对于数据库,我会从一个RDS实例(可能很小)开始,使用您喜欢的系统,MySQL,SQL Server或Oracle。使用RDS,您可以随时更改实例大小,还可以添加一个或多个只读副本,以防将来应用程序变为读取密集型。有关RDS here的更多信息。正如PachinSV指出的那样,另一个好的选择是DynamoDB,因为他已经提到的原因 - 分区,性能,限制等等。
- 虽然你没有提到过,如果你需要可扩展的存储空间,S3绝对是你的选择,并且随时可以使用。
希望它有所帮助。
答案 2 :(得分:0)
正如您所提到的,在RDS中,您将受限于他们可用的最大实例的容量,并且您无法轻松扩展。如果您最终选择SQL解决方案进行ACID合规,并且您想要数据库服务(而不是在EC2实例上自己安装数据库),EC2上的另一个MySQL选项是Xeround,它具有自动扩展功能,因此可以容纳大型数据库服务并发用户数和高吞吐量。