大佬们,想请教一下数据库设计

83 天前
 iamtuzi3333
小弟目前遇到一个棘手的问题,就是现在咱们的公司用的数据库是 MongoDB ,目前出现吃内存严重现象,同时查询效率不高,数据其实很简单,但是量很多,都是传感器数据,现在每秒都有数据入库,都是一条条的 json ,现在用的 MongoDB ,单个集合就存储一个传感器的数据,但是我发现查询接口太慢了,查询过程只有一个字段去比较,就是大于 and 小于这个值的字段的所有数据,这个都很慢,数据关键一个字段就是 data 数组,200 个浮点数。大佬们有其他数据库推荐吗,不涉及多表联合查询,都是单表操作。
5750 次点击
所在节点    数据库
68 条回复
celaraze
83 天前
索引建了吗?数据文档的字段是否都是一致的,是的话用单字段索引,不是的话用稀疏索引。试试,按照你的描述很可能没有索引导致全集合扫描了。
flmn
83 天前
postgres 不就可以么?
iamtuzi3333
83 天前
@celaraze 索引没建立,我是按照一个时间戳字段去查询,这个值一直在变,没法用索引吧。
@flmn 我查一下这个。
iamtuzi3333
83 天前
@celaraze 文档的字段都是一致的,估计是,因为文档数量非常的多,每秒一条,一天有 8 万多条了。
corcre
83 天前
采集的数据吗, 我们乙方用的时序数据库(TDengine), 不存数组, 按采集点位存的数据, 每个时间每台设备每个点位一条数据, 暂时没什么问题(但是我没具体了解过我们对性能的要求)
seedhk
83 天前
1.MongoDB 本来就非常吃内存,高性能都是建立在内存的基础上的
2.给时间戳字段加上索引
3.看一下单表数据量,实在太多考虑将查询功能放到 ES(需要评估)
celaraze
83 天前
@iamtuzi3333 如果按照时间戳查询,建议用时序数据库( TSDB ),把你要存储的值当作度量处理。你这个场景感觉 IoT 方向啊,怎么会选型用 mongo 。
iamtuzi3333
83 天前
@corcre 一个点位的一个数的话时序数据库很方便,但是数据就很麻烦,我之前找过 influxdb ,感觉不太行。
celaraze
83 天前
@corcre 你的建议是对的。
iamtuzi3333
83 天前
@celaraze 数据是 loT 。但是时序数据库一个麻烦的点就是我没有找到有很好的字段支持,很多时序数据库都是一个时间点对应一个值,我的数据字段比较多,还有数组类型在里面,不好处理。
@seedhk 时间戳的值会一直变,这样索引更新不是更加消耗资源吗,单表数据量目前是 600 多万条文档了,每天 8 多万增加。
yoyolichen
83 天前
我们已经转时序 tdengine 了,10w 台设备,频率每天 1-24 条不等,目前没啥问题
iamtuzi3333
83 天前
@yoyolichen 数据字段是一个值吗,就一个时间字段映射一个值? 现在麻烦的就是字段特别多,不同的类型也多,有数组这些。
Desdemor
83 天前
clickhouse 试试呢
celaraze
83 天前
@iamtuzi3333 不知道你测试的是哪个数据库,例如 influxDB 中 Point 可以包含多个 Fields 的。一条记录多个属性值。试试看吧,IoT 都用时序的。
zhazi
83 天前
mongodb 5.0 之后也支持时序功能
https://www.mongodb.com/zh-cn/docs/manual/core/timeseries-collections/
建议先去尝试优化
iamtuzi3333
83 天前
@celaraze 我先搜一下,只有我一个人,顶着公司走,难受。。。
@Desdemor 似乎接口有点复杂,我先看看。
@zhazi 好的,我先去试试优化,其实 MongoDB 存是非常的方便,就是吃内存很严重,即使修改了配置文件的内容。
sunxvvv
83 天前
你不建索引,每一次的查询都是全集合扫描,随着数据越多,查询只会越来越慢,索引带来的内存和 CPU 消耗绝对比你每一次都是全集合扫描少得多,索引是肯定利大于弊的,用 MongoDB 的话,数据量实在太大,可以上分片
encro
83 天前
每次看到使用 MongoDB 的,我就想和他说一句“没有银弹”。。。
zhangeric
83 天前
这个肯定要用时序数据库了.
halov
83 天前
MongoDB 用了多少内存

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1075881

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX