我正在重新设计一个项目,这个项目是我一年前刚开始学习编程时创建的。我当时使用的是MEAN堆栈,现在想把它转换成PERN堆栈。我的AWS知识也有了一些增长,我想扩展这些新技能。
应用程序从API接收实时数据,我清理这些数据并将其写入数据库,同时将这些数据广播到连接的客户端。
为了更好地概念化这个问题,我将提及以下项目:api-m1
:它接收传入的数据,并将其传递给我的模式,然后将其发送给我的socket-server
。socket-server
:处理WSS到应用程序前端客户端的连接。它也会将这些数据写入从Scraper
和api-m1
获取的postgres数据库。我希望最终将其转化为集群,因为我使用的是nodejs,并将合并Redis。然后我将在ALB后面使用sticky-session等为多个EC2示例运行它。RDS
:postgres表,socket-server
将传入的scraper
和api-m1
数据写入其中。RDS
用于获取与用户配置文件配置数据沿着存储的最新数据。注意:RDS
主数据表最多包含120-150条UID记录,其中包含6-7列
为了帮助更好地形象化,请参见下面的img。
从数据库的Angular 来看,将数据写入RDS
的最快方法是什么?假设在高峰时间,api-m1
的记录数为20-40条/秒,scraper
的记录数为20-40条/秒?每天之后,我使用lambda函数拆除数据库,然后重新开始(因为数据只是临时的并且不需要保存任何延长的时间段)。
1.我是否应该使用SERIAL ID插入每个记录,然后从前端获取基于uid
的最近行?
2.a我是否应该更新每个UID,这样我就有了一个固定的N行数据,我只需要搜索和更新?(我可以看到这个瓶颈与我的Postgres客户端.
2.b仍然使用UPDATE,但执行BATCHED更新(如果我创建多个集群,我会遇到什么问题,即,我会遇到并发问题,其中表记录XYZ将使用较旧的值覆盖较新的值,因为我使用的是带有节点集群的BATCH UPDATE?
我担心的是UPDATE比INSERT慢,我不想让它尽可能快,应用程序的这一部分不是CPU密集型的,rt数据也不是那么密集。
1条答案
按热度按时间k2arahey1#
为了让我的评论成为答案:
这里似乎不需要SQL语义,所以我只需要放弃RDS,使用Redis(或者DynamoDB,我猜)作为数据存储。