gpt4 book ai didi

mysql - 同一类型的多个表的数据库设计

转载 作者:行者123 更新时间:2023-11-29 11:43:14 25 4
gpt4 key购买 nike

我有一种情况,我想以数据库格式存储大约 1 TB 的信息以支持查询。我在数据库设计方面没有经验,这就是我想询问如何正确执行此操作的部分原因。

我们有一个测试套件,可以为每个状态更新生成信息字段集。每个状态更新大约有 400 个单独的 64 位信息字段,我们希望保留大约 4 亿个信息刻度。问题是我们正在接收来自大约 1600 台机器的信息更新。

一个有用的(对我们来说)数据库查询的格式是“我是否见过这个字段具有值 X,而之前有 5 个状态更新,同一字段具有值 Y?”

我最初的理解是在数据库中实现这一点,其中每个状态更新都按顺序存储(每台机器大约 250k 状态)。然而,这将生成 1600 个相同的表,每个表大约有 25 万行。

是否有一些我还不太理解的设计方法?我觉得拥有 1600 个表是一个理想的特性,因为这感觉像是查询可以在 ? 上并行运行的东西。

总结:假设多台相同的机器正在运行略有不同的测试,并且我必须存储它们最后的 250k - 1M 状态滴答,我应该如何设计数据库?我当前的想法是为每个测试创建一个表,其中每一行代表时间 T、T+1、T+2 等的状态。

这是最优的吗?或者有比这样设计更好的方法吗?对于 1500-3000 个表(每个表大约有 250k-1M 条目)的查询需要多长时间(因为我想查询整个数据集?)我可以使用不同的方法获得更好的结果吗?

1500 次测试,每个状态标记存储 400 个 64 位变量。每个测试 250k 到 1M 状态刻度,我希望能够快速有效地存储和查询整个数据集。最好的方法是什么?

最佳答案

当每个测试步骤应由测试 ID 和步骤 ID 标识时,我总是更喜欢单个表/集合。例如:

MySQL(非规范化)

步骤

id  test        step        data
1 "Host_Test" "Step01" [serialized data]

MySQL(规范化(部分))

步骤

id  test        step
1 "Host_Test" "Step01"

步骤详情

step_id data_key    data_value
1 "key" "value"

MongoDB

{
_id : "1",
test : "Host_Test",
step : "Step01",
data : {
key1 : value1,
key2 : value2
}
}

然后,您当然可以通过测试标识符来识别每个测试的数据。

如果您在内存中进行测试,将数据存储到数据库/磁盘将始终是您的主要弱点。写入一张大表/集合并不是重点。

关于mysql - 同一类型的多个表的数据库设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35408131/

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