gpt4 book ai didi

database-design - 我应该在以下情况下使用 PostgreSQL 数组类型吗

转载 作者:行者123 更新时间:2023-11-29 12:39:16 27 4
gpt4 key购买 nike

我正在使用 PostgreSQL。

我知道 PostgreSQL 有 Array 数据类型。

http://www.postgresql.org/docs/8.1/interactive/arrays.html

目前,我需要使用数据库来存储半导体工厂的测量结果。

他们正在生产半导体装置。每个半导体单元可以有可变数量的测量参数。

我打算按以下方式设计表格。

SemicondutorComponent
=====================
ID |


Measurement
=================
ID | Name | Value | SemicondutorComponent_ID

数据示例:

SemicondutorComponent
=====================
1 |
2 |

Measurement
=================
1 | Width | 0.001 | 1
2 | Height | 0.021 | 1
3 | Thickness | 0.022 | 1
4 | Pad0_Length | 0.031 | 1
5 | Pad1_Width | 0.041 | 1
6 | Width | 0.001 | 2
7 | Height | 0.021 | 2
8 | Thickness | 0.022 | 2
9 | Pad0_Length | 0.031 | 2
10| Pad1_Width | 0.041 | 2
11| Pad2_Width | 0.041 | 2
12| Lead0_Width | 0.041 | 2

假设一家工厂在 1 天内生产 2400 万件

SemicondutorComponent 表将在 1 天内有 2400 万行

假设一个 SemiconductorComponent 单元有 50 个测量参数。 (可多可少,取决于 SemicondutorComponent 类型)

测量表在 1 天内将有 24 * 5000 万行

这样设计效率高吗?

我希望拥有超快的写入速度,以及从数据库中合理快速的读取速度。

或者我应该使用 PostgreSQL 数组工具吗?

SemicondutorComponent
=====================
ID | Array_of_measurement_name | Array_of_measurement_value

最佳答案

我无法评论数组与常规表的写入速度,但据我所知,使用 2 个数组的设计对于查询来说会非常麻烦。

我也不知道读取数组的性能,但从我查看文档可以看出,所有数组访问都是通过位置引用(索引)完成的,所以在后面会很痛苦找到一个特定的度量——你必须遍历名称数组来找到合适的索引,然后用它来找到值。我怀疑它能否在纯 SQL 中完成,并且它可能需要用户定义的函数。

现在关于表格的设计:您似乎关心写入速度。每天 2400 万个组件,即每小时 100 万行,这不算多。乘以 50,在最坏的情况下,对于测量,这是每小时 5100 万行,因此每分钟不到 100 万行。我认为这应该是可行的,尽管建议批量插入并避免在许多短期事务中执行许多单行插入(最好插入它们并以 10.000 或 100.000 的形式提交)。

我确实认为您还需要设计一个归档和/或聚合解决方案,因为继续插入这些卷似乎不太容易维护。我怀疑它是否也有用,但也许那只是我不理解这个数据库的目的。我的意思是,在我看来,您似乎不太可能希望能够在制造后 1 年之后精确定位一个组件的单独测量值。然而,随着时间的推移保留平均值、最小值、最大值和 stddev 测量值等统计数据似乎很有用。但也许你可以对此做一些解释。

我想到的另一件事是,它可以帮助首先将原始测量数据存储在便宜且快速的日志中(只是文本文件,说 CSV 格式就可以),然后使用多个阅读器读取它们并插入它们入数据库。这些读者可以以相当稳定的方式运行。这将使数据库不再是瓶颈,并使系统更健壮(假设您的日志继续工作的可能性高于数据库崩溃)。当然,如果您需要来自数据库的实时报告来监控流程,则这种方法不太适合(尽管我觉得您需要在单个组件级别执行此操作似乎很奇怪)

关于database-design - 我应该在以下情况下使用 PostgreSQL 数组类型吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2003492/

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