我需要一些关于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
提前谢谢!
机器人
最佳答案
每个品牌不要有单独的桌子。没有任何好处,只有不必要的复杂性。也不是每个模型一个表。一般来说,如果两个表看起来相同,则应将数据合并为一个表。在您的示例中,一个表将brand
和model
作为列。
索引是性能的朋友。让我们看看您将执行的查询,这样我们就可以讨论最佳索引。
如果数据质量不好,你会怎么做?简单地显示“好”或“不好”?
关于mysql - 每年1.5亿条记录的数据库设计。带有类别和子类别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35310718/