Nosql
couchbase - 具有不同類型的多個儲存桶或文件
背景資料
這是我在沙發上的第一天。我一直在使用 couchbase 附帶的數據庫控制台查看範例數據庫。具體來說,我一直在使用“beer-sample”應用程序來嘗試了解如何組織我的數據庫。似乎他們有兩種不同類型的文件——啤酒廠或啤酒——而且一切都集中在一個桶裡。
對於我的個人申請,我有以下數據:
{ "server_details": { "name": "testserver", "dns_name": "testserver.mydomain.net", "ipv4": "10.xx.xx.xx", "ipv6": "", "type": "webserver" }, "server_status": { "up_to_date": true }, "packages": { "package1": { "current_version": "x.x", "previous_version": "x.x", "last_updated_on": "2016-03-16", "play_id": "link to audit table" }, "package2": { "current_version": "x.x", "previous_version": "x.x", "last_updated_on": "2016-03-16", "play_id": "link to audit table" } } }
我有不同的伺服器類型,例如 webserver、appserver、dns 伺服器等。所以我打算只使用相同的 json 對象,但更改“type”欄位。
題
我還需要創建某種審計表,以顯示伺服器上的包何時更新的歷史記錄。我需要跟踪以下內容:
- 執行日期
- 腳本名稱
- package1_version_b4_update
- package1_version_after_update
- server_dns_name
這是我為這種類型的文件提出的 json 對象:
{ "audit_details": { "script_name": "upgrade_all_mrts", "rt_ticket_number": "16123", "execution_date": "2016-03-16", "status": "success" }, "affected_servers": { "server1": { "package1":{ "version_after_update": "x.x", "version_before_update": "x.x", "last_updated_on": "2016-03-16" }, "package2": { "version_after_update": "x.x", "version_before_update": "x.x", "last_updated_on": "2016-03-16" } }, "server2": { "package1":{ "version_after_update": "x.x", "version_before_update": "x.x", "last_updated_on": "2016-03-16" }, "package2": { "version_after_update": "x.x", "version_before_update": "x.x", "last_updated_on": "2016-03-16" } } } }
這只是另一個結構完全不同的文件嗎?還是我應該把它放在另一個桶裡?如果它們都應該在同一個儲存桶中,那麼我提出的 json 對象的結構是否合適?從根本上說,我想我的問題是您是否將所有內容作為各種文件的集合轉儲到一個儲存桶中……並確保相關文件具有相同的結構,以便您可以一次查詢它們?
很抱歉有補救問題,但我正在嘗試即時建構原型……同時閱讀文件。任何提示將不勝感激。
我也是 Couchbase 的新手,但從我目前所學到的知識來看:通常,您想要使用不同儲存桶的原因不一定與您想要放入其中的文件類型有關。也就是說,您可以將儲存桶配置為以不同方式複制、使用 XDCR、以不同方式分配記憶體等等。但是,在同一個儲存桶中擁有多種不同的文件“類型”是完全可以接受的。
給不同的文件一個“類型”屬性可能是個好主意,這樣您就可以更輕鬆地查詢它們。
因此,例如,在您的範例中,可能第一個將具有
"type":"server"
,而第二個將具有"type":"audit"
,依此類推。