在AWS中,对于大量易失性数据集(elasticsearch、Redis或DynamoDB),推荐使用哪种可扩展数据库平台?
我们平台的用户将在我们的系统上存储大量数据。通过应用程序,一旦连接,数据将被传输到他们,不再需要保留在我们的服务器上。在任何给定的时间,都可能有成百上千的用户连接在一起,执行他们的下载 以下是建议的体系结构: 用户管理、配置和数据下载统计信息将保存在SQL Server数据库中,同时对大型数据集使用Redis或DynamoDB 选择Redis或DynamoDB的原因是基于比运行另一个SQL Server实例更便宜的成本和性能。数据格式类似于没有联接的datamart平面表 最初的查询很简单——获取用户X在某个日期范围内的所有数据,并可以选择删除 由于我们可能希望添加自由文本搜索,使用elasticsearch搜索该数据的某些字段可能是一个更好的选择在AWS中,对于大量易失性数据集(elasticsearch、Redis或DynamoDB),推荐使用哪种可扩展数据库平台?,redis,elasticsearch,amazon-dynamodb,autoscaling,Redis,elasticsearch,Amazon Dynamodb,Autoscaling,我们平台的用户将在我们的系统上存储大量数据。通过应用程序,一旦连接,数据将被传输到他们,不再需要保留在我们的服务器上。在任何给定的时间,都可能有成百上千的用户连接在一起,执行他们的下载 以下是建议的体系结构: 用户管理、配置和数据下载统计信息将保存在SQL Server数据库中,同时对大型数据集使用Redis或DynamoDB 选择Redis或DynamoDB的原因是基于比运行另一个SQL Server实例更便宜的成本和性能。数据格式类似于没有联接的datamart平面表 最初的查询很简单——获
我希望这是自动缩放,但不确定哪个数据库最适合用于此场景。我不会单独使用弹性搜索,因为它不提供写入容量的自动缩放。事实上,增加索引的碎片数量并不是一件小事。其次,它只能处理JSON格式,这对您来说可能是个问题 Redis可能是一个好主意,因为它速度非常快,所有事情都在RAM中完成,而且它提供的密钥的生存时间有限,这可能会让您感兴趣。不幸的是,如果您的数据大小超过了amazon实例的RAM容量,您将不得不切分您的Redis数据库。而且Redis不支持它,您必须在应用程序代码中处理它。此外,据我所知,Redis不处理复杂的查询。您还需要将数据保存在Redis数据结构中,这可能是您的一个问题 DynamoDB可以很好地处理自动缩放,但另一方面,它是一个键/值数据库,因此不允许您进行诸如“获取用户X在日期范围内的所有数据”之类的查询。DynamoDB还允许您以任何格式保存数据
解决方案是根据数据的大小使用DynamoDB或Redis,并使用ElasticSearch仅使用元数据(用户和日期)索引键。这样,您的索引就会很小,如果您因为ElasticSearch变得过于臃肿而失去了索引功能,那么您将保留保存用户数据的功能 以下是AWS ReInvent关于数据库+搜索层的一些重要讨论: