簡體   English   中英

數據庫表中的鍵-{鍵-值} 對 - 如何建模?

[英]Key-{Key-Value} pair in Database table - how to model?

在建模 DB 表時遇到問題,其鍵(在鍵值中)是可配置的。

所以基本上我想讀取電池數據,其中有 key=ParamName, KeyValue=param name 的值。 此外,每個電池都有自己的 IP 地址。 ParamName 的示例是“BatteryStatus”、“BatteryTemperature”、“BatteryCurrent”等。

我的 Java 程序將使用 IP 地址讀取電池信息,並獲取所有必需參數名稱的值。 現在我可以輕松地將每個 ParamName 定義為一列的表:IP | 電池狀態 | 電池溫度| 等等

但問題是 ParamNames 是在可配置文件中定義的,我應該能夠添加新的 ParamNames 或刪除現有的 ParamNames,而無需 touchig 代碼或數據庫。 那么我不能使用固定的表結構嗎?

如果我創建如下所示的內容,它將復制 IP

IP            | ParamName         |  ParamValue
102.103.123.1 | BatteryStatus     | "normal"
102.103.123.1 | BatteryTemperature| 32
102.103.123.1 | BatteryCurrent    | 220
102.103.123.2 | BatteryStatus     | "normal"
102.103.123.2 | BatteryTemperature| 35
etc.

如您所見,我正在嘗試在 DB 中存儲一個 Key-{Key-Value} 對。 任何想法如何有效地做到這一點?

假設在IPParamName上有正確的索引,在您的示例中擁有一個三元組表非常接近。

我要做的第一個優化是用一個INT列替換ParamName ,或者用另一個表, ParamName將作為外鍵,或者在您的客戶端代碼中查找哈希表。

您可以對IP (鏈接表,而不是查找哈希表)執行相同操作,或者您可以將它們轉換為數值並直接使用它(我應該為 MySQL 存儲什么類型的 IP 地址? ),這是最佳的兩個空間- 和性能方面,只是不是(直接)非常易讀。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM