我們的應用程序有許多配置指令。諸如「是否啓用了多種語言?」或「哪個CSS模板應該使用?」 「或」每頁應顯示多少項目?「。將配置保存到數據庫 - 鍵值存儲
我們需要在DB中存儲配置指令。目前我們有配置的每個「區域」的表,並且該表只有一行包含列中的值。這種方法允許我們對這些值施加約束 - 讓它成爲ENUM,INT,VARCHAR等等。但是當我們需要添加新的配置指令時,它是巨大的PITA--我們需要更新和重新部署數據庫模式。它也污染了許多表格的setup_something
表空間。
我的想法是用基於MySQL的鍵值存儲替換表(我們使用帶有小配置選項的共享主機,所以我們不能使用NoSQL)。其中一些值可能依賴於語言環境或其他變量,但我認爲它可以通過類似於後備(類似於「lang:fr」開頭的鍵來解決,如果沒有找到,試着用「lang:default」開頭(這會總是準備好)。
約束只會用具體的設置類進行檢查在PHP,但不會有DB檢查。
- 是否對此有任何現成的解決方案(prefferably與運作良好Zend Framework)
- 這個解決方案的祕訣是什麼(除非明顯 - 我不能一次獲取整個「行」或同時獲取多行 - 這不是問題)
- [你使用過|你會使用]類似的解決方案還是完全不同的東西?
爲什麼不使用帶有鍵/值對的一個表?如果是按用戶配置,則始終可以使用用戶/鍵/值作爲表數據。 – Matt 2012-08-01 14:39:05
如果您不需要從Web應用程序(例如管理界面)寫入/更改參數,我會在文本文件中使用某些內容。像yaml或ini風格的配置。現有的解決方案/ PHP庫無法解決這個問題。 – bcelary 2012-08-01 14:40:16
這是我的第一個想法。但是我想先將衆包體驗:)可能會有一些不可預見的陷阱;) – 2012-08-01 14:41:43