gpt4 book ai didi

database - 巨大的数据存储问题

转载 作者:IT王子 更新时间:2023-10-29 06:31:46 25 4
gpt4 key购买 nike

我开始设计一个将由大约 50000 台设备使用的新应用程序。每个设备每天生成大约 1440 个注册表,这意味着每天将存储超过 7200 万个注册表。这些注册表每分钟都不断出现,我必须能够通过 Java 应用程序 (J2EE) 查询这些数据。所以它需要快速写入、快速读取和索引以允许生成报告。设备只插入数据,然后 J2EE 应用程序需要偶尔读取。现在我正在寻找支持这种操作的软件替代品。

  • 将此数据放在单个表中会导致灾难性的情况,因为由于其存储了一年多的数据量,我将无法使用此数据。

  • 我使用的是 Postgres,数据库分区似乎不是解决方案,因为我需要按月或可能更精细的方法(例如天)对表进行分区。

    <

我正在考虑使用 SQLite 的解决方案。每个设备都会有自己的 SQLite 数据库,这样信息就足够细化了,可以进行良好的维护以及快速插入和查询。

你怎么看?

最佳答案

  1. 仅记录设备位置的变化 - 大多数情况下任何设备都不会移动 - 汽车将停放,一个人将坐下或 sleep ,手机将保持不动或充电等 - 这将使您需要存储的数据减少一个数量级。

  2. 您每年最多会生成大约 1TB 的数据(即使没有实现第 1 点),这并不是一个很大的数据量。这意味着大约 30MB/s 的数据,单个 SATA 驱动器可以处理。

  3. 即使是在不太大的硬件上的简单未分区 Postgres 数据库也应该设法处理这个问题。唯一的问题可能是当您需要查询或备份时——这可以通过使用 Hot Standby 来解决。镜像使用Streaming Replication - 这是即将发布的 PostgreSQL 9.0 中的新功能。只需查询/备份一个镜像 - 如果它很忙,它会暂时自动对更改进行排队,并稍后 catch 。

  4. 当您确实需要分区时,例如对 device_id modulo 256 而不是时间进行分区。这样你就可以在每个分区上分散写入。如果你按时分区,那么任何时候只有一个分区会很忙,而其他分区会空闲。 Postgres supports partitioning这样很好。然后,您还可以使用 tablespaces 将负载分散到多个存储设备。 ,这在 Postgres 中也得到了很好的支持。

关于database - 巨大的数据存储问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3426270/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com