我们目前正在寻求将AWS架构移至支持大量数据并可以随着获得更多客户而扩展的架构。当这个项目开始时,我们坚持使用已知的东西,即EC2上的一个Ruby应用程序进行RESTful API调用,将结果存储在S3中,并将所有内容存储在RDS中。我们有一个用VueJS编写的SPA前端,以支持存储的数据。
随着我们的客户列表的增加,我们存储的出站API调用和子序列数据也在增长。目前,我的任务是寻找更好的解决方案,我想对到目前为止的想法获得反馈。当前,我们有大约500万行关系数据,并且只会随着客户列表的增加而增加。我可以看到,在一两年之内,我们将处于数十亿或以下的位置。
Ruby应用程序在处理出站API调用,重试以及之间的其他所有事务方面做得非常出色。因此,我们考虑保留应用程序,而不是直接插入RDS中,而只是将结果作为CSV转储到S3中。
S3中的触发器现在可以使用Lambda函数将原始CSV数据转换为镶木地板格式(我在看PyArrow之类的东西)。从这里,我们可以从传统的RDS迁移到支持镶木地板的Athena之类的东西,并允许我们重用大多数现有的SQL查询。
为了进一步优化用户的性能,我们考虑了在Dynamo表中缓存常用查询。由于数据基于预定的外部API调用,因此我们可以控制何时破坏查询缓存。
大数据后端并不是我真正的事情,因此,非常感谢任何反馈。我知道我对镶木地板还有很多研究要做,因为这对我来说是新的。最终,我们希望对这些数据进行一些ML,所以我相信镶木地板也将支持感谢。