首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多个并行大容量插入的数据库/tools选择

多个并行大容量插入的数据库/tools选择
EN

Stack Overflow用户
提问于 2016-08-19 18:51:03
回答 1查看 9关注 0票数 1

将会有从移动设备收集数据的REST API。在将数据发送到API之前,每个移动设备都会缓存数据(达到一定的限制)。例如,每隔4分钟,每个移动设备将向API发送50个数据行。其中一行如下所示:

代码语言:javascript
复制
{"uid": "123", "lon": "12.1", "lat": "12.1", "vel": "145", "timestamp": "12345"}

因此,例如,当将有1000个活动设备时,可能会发生(最坏情况),将有1000个并行写入,并且每次写入将插入50个“行”。因此,事实上,在某个时刻,API将尝试向数据库中插入50k行。此外,如果每个设备每天发送数据2小时,那么每天将有1500,000 (150万)个新的行。

稍后,所有收集的数据将以更大的块发送到另一个服务(由某种类型的工作程序发送,该工作程序将等待数据库中出现X行,然后将它们发送到外部服务)。所有超过7天的行都可能被删除。此外,其中一个应用程序接口端点将允许基于"uid“(user_id)和”时间戳“字段检索过去7天的数据。

问题是使用哪个数据库(或数据库/工具的组合)来处理每秒的多次写入?

我的第一个想法是使用DynamoDB,因为它非常容易扩展(我只能购买写/秒),但它不可能在一瞬间处理50k写操作。因此,我的第二个想法是使用一些中间数据库(Es)来缓存50行的数据块,这些数据块将由后台工作者/进程插入到主数据库中,并在同一时刻处理一定数量的数据块。

我相信今天有许多应用程序可以从移动设备收集大量数据(比如GPS位置、速度等)--它们是如何做到的?

我不是在问dba,因为它可能不仅仅是特定于数据库的问题。

EN

回答 1

Stack Overflow用户

发布于 2016-08-19 19:11:33

我刚刚在一个完全索引表中插入了150万行。我使用了一个单线程,PostgreSQL数据库,在我的笔记本上运行。整个过程花了45.1秒。

如果这就是你所有的日常数据,甚至不用费心去发明轮子。只需为自己配置PostgreSQL和多核服务器即可。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39037189

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档