我需要一些关于mysql数据库设计的帮助。mysql数据库每年应该处理大约1.5亿条记录。我想用Myisam引擎。
数据结构:
汽车品牌(>500个品牌)
每个汽车品牌都有30多个车型
每个车型都有相同的5个值,有些车型有附加值
每个值正好有3个字段:
时间戳
质量
实际价值
这个汽车品牌在同一领域也有一定的价值
每5分钟跟踪一次值->每年105120条记录
关于数据:
球场的质量应该总是“好”的,但如果不是,我需要知道。
字段时间戳通常是,但至少有一个值具有不同的时间戳
偏差:1-60秒
如果时间戳有不同的时间戳,它总是有不同的时间戳
有时我无法获取数据,因为源服务器已关闭。
如何使用数据
图表中的可视化(时间和实际值)以及选择的值
每个品牌的某些价值的集合
我的问题:
我认为把数据分成不同的表是个好主意,所以我把每个品牌都放在一个额外的表中。为了按汽车品牌名称查找表,我创建了一个索引表。这是个好做法吗?
为每种车型(大约1500张桌子)创建桌子更好吗?
我应该将质量(如果不是“好的”)和时间戳的偏差存储在一个单独的表中吗?
还有其他建议吗?
例子:
表:汽车品牌

| car_brand | tablename | Address     |
|-----------|-----------|-------------|
| BMW       | bmw_table | the address |
| ...       | ...       | ...         |

表:宝马表(105120*30+车型=每年超过320万条记录)
| car_model   | timestamp_usage     | quality_usage | usage | timestamp_fuel_consumed |  quality_usage |fuel_consumed | timestamp_fuel_consumed | quality_kilometer | kilometer | timestamp_revenue   | quality_revenue | revenue | ... |
|-------------|---------------------|---------------|-------|-------------------------|----------------|--------------|-------------------------|-------------------|-----------|---------------------|-----------------|---------|-----|
| Z4          | 2015-12-12 12:12:12 | good          | 5%    | 2015-12-12 12:12:12     | good           |  10.6        | 2015-12-12 12:11:54     | good              | 120       | null                | null            | null    | ... |
| Z4          | 2015-12-12 12:17:12 | good          | 6%    | 2015-12-12 12:17:12     | good           |  12.6        | 2015-12-12 12:16:54     | good              | 125       | null                | null            | null    | ... |
| brand_value | null                |null           | null  | null                    | null           | null         | null                    | null              | null      | 2015-12-12 12:17:12 | good            | 1000    | ... |
| ...         | ...                 | ...           | ...   | ...                     | ...            | ...          | ...                     | ...               | ...       | ...                 | ...             | ...     | ... |

其他品牌的桌子…
编辑:添加查询和质量
可能的查询
注意:我假设表BMWYTABLE有一个额外的名为CARY-Band的列,而表名是SimeEyLtable,而不是BMWYTABLE,以减少复杂性。
SELECT car_brand, sum(revenue), avg(usage)
FROM simple_table
WHERE timestamp_usage>=2015-10-01 00:00:00 AND timestamp_usage>=2015-10-31 23:59:59
GROUP BY car_brand;


SELECT timestamp_usage,usage,revenue,fuel_consumed,kilometer
FROM simple_table
WHERE timestamp_usage>=2015-10-01 00:00:00 AND timestamp_usage>=2015-10-31 23:59:59;

质量价值观
我从OPC服务器收集数据,因此Qualty字段包含以下值之一:
bad
badConfigurationError
badNotConnected
badDeviceFailure
badSensorFailure
badLastKnownValue
badCommFailure
badOutOfService
badWaitingForInitialData
uncertain
uncertainLastUsableValue
uncertainSensorNotAccurate
uncertainEUExceeded
uncertainSubNormal
good
goodLocalOverride

提前谢谢!
机器人

最佳答案

每个品牌不要有单独的桌子。没有任何好处,只有不必要的复杂性。也不是每个模型一个表。一般来说,如果两个表看起来相同,则应将数据合并为一个表。在您的示例中,一个表将brandmodel作为列。
索引是性能的朋友。让我们看看您将执行的查询,这样我们就可以讨论最佳索引。
如果数据质量不好,你会怎么做?简单地显示“好”或“不好”?

关于mysql - 每年1.5亿条记录的数据库设计。带有类别和子类别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35310718/

10-14 12:40
查看更多