要嘗試和簡化,讓我看看這是否使它更容易。我創建了3個我想在MySQL中存儲的狀態的虛構JSON表示。我正在尋找一些關於存儲它們的最佳方式的建議。特別是「狀態」數據是我不太確定如何處理的部分。將數組類型數據存儲在MYSQL表中
如果有幫助,我覺得每輪創建一個特定的數據庫表。
用戶狀態爲第1輪
{
"user": 1,
"round": 0,
"move": 0,
"points": 10,
"state": [
100, 200, 300, 10, 50
]
}
用戶狀態爲第2輪
{
"user": 1,
"round": 1,
"move": 3,
"points": 150,
"state": [
10, 50, 800
]
}
用戶狀態爲第3輪
{
"user": 1,
"round": 2,
"move": 7,
"points": 1175,
"state": [
[ 100, 200, 300 ],
[ 40, 10, 20 ],
[ 800, 1000, 50, 90, 20 ]
]
}
原帖下面
我目前正在使用MySQL的遊戲。遊戲在回合中運行,其中一輪代表一組動作。可能的移動可以由一維數組或多維數組來表示。例如:
[ 100, 200, 300, 50, 10 ]
或
[
[ 100, 200, 300, 50, 10 ],
[ 20, 500, 10, 5, 800 ],
[ 5, 1, 4 ]
]
值將始終爲整數。正如人們所看到的,在多維情況下,每行可能不是相同的長度。在一維情況下,長度可以是任意的。但是,對於給定的一輪,陣列長度是固定的。每輪定義長度的方差以及是否是一維或多維。
人們可以想到由子回合組成的回合的多維情況。一旦一個小回合通過,它將進入下一個子回合,直到所有子回合完成。
玩家回合可以退出,但狀態將被保存。因此玩家可以有多次「保存」回合。
由於玩家可以在不同的設備上玩遊戲,因此我不想在設備上存儲回合狀態。相反,我想按需爲國家服務。目前,客戶端向服務器提交一個移動,服務器將以一個更新的狀態進行迴應。但現在,沒有持久性,所以如果服務器宕機,然後狀態丟失(仍在開發中,所以現在不是問題)
我正在尋找方法來保存與MySQL的狀態。
我想到的一種方法是每輪都有一個數據庫表,但這並不能完全解決一維或多維數組如何存儲。在這裏我可以想象user_id將是主鍵。
另一個可以處理存儲任意數據的數據庫表。在這裏我可以想象主鍵是user_id和round_id的組合。
當然有一些附加狀態下的表將需要存儲等的移動次數,在圓獲得的點等
爲了表示「陣列數據」將JSON數據類型或編碼所述數據在一個字符串或二進制blob是最好的?我更喜歡一些不會在解碼時花費大量額外時間的東西(例如,某些JSON編碼/解碼器不那麼快)。試圖確定一些很好的選擇來嘗試。
服務器代碼是C++。
我還沒有讀過這個問題。太長。你能把它減少到問題的核心嗎? –
我已經更新了這個問題......希望更好? –
我已經看過這個https://stackoverflow.com/questions/9299658/best-way-to-store-an-array-in-mysql-database它有點老,所以看看是否有任何其他方法 –