2015-09-22 157 views
0

我們從webapi獲取數據,並且需要將數據存儲在我們的服務器上。數據有一些主要的對象類型:房屋,住房合作社和山寨信息。下面是從兩個響應很短的代碼片段:存儲大量JSON數據的最佳方法。 MS SQL? Raven DB?

House: 
{ "advertiseOn": { 
     "homepage": true, 
     "showAsComming": true, 
     "showTodaysHousing": true, 
     "showAsReferenceHousing": true, 
     "imageIds": [ 
      "sample string 1", 
      "sample string 2" 
     ], 
     "documents": [ 
      { 
      "name": "sample string 1", 
      "id": "sample string 2", 
      "extension": "sample string 3", 
      "url": "sample string 4" 
      }, 
      { 
      "name": "sample string 1", 
      "id": "sample string 2", 
      "extension": "sample string 3", 
      "url": "sample string 4" 
      } 
     ], 

Housing cooperative 
{ 
    "advertiseOn": { 
    "homepage": true, 
    "showAsComming": true, 
    "showTodaysHousing": true, 
    "showAsReferenceHousing": true, 
    "imageIds": [ 
     "sample string 1", 
     "sample string 2" 
    ], 
    "documents": [ 
     { 
     "name": "sample string 1", 
     "id": "sample string 2", 
     "extension": "sample string 3", 
     "url": "sample string 4" 
     }, 
     { 
     "name": "sample string 1", 
     "id": "sample string 2", 
     "extension": "sample string 3", 
     "url": "sample string 4" 
     } 
    ], 

在上面的代碼中的房子和住房合作社的數據是相同的,但他們是指出錯誤的數據。

如果他們將有相同的數據它不會是一個問題,只需將它們映射到與每個對象的關係的對象表。廣告例如。

由於每個主要對象都有大約20-25個不同的對象,這會導致75個不同的數據庫表,它只是不覺得是解決這個問題的最佳方法。什麼是最簡單的方式來存儲這些數據?我們需要能夠通過不同參數搜索數據。例如EstateId。

任何想法或建議嗎? // H

+0

你會如何定義'最佳途徑'?最快的方法?最有活力的方式?最安全的方式? – Dennisch

+0

真的任何方式,因爲我的想法如何存儲數據。我真的想避免在mssql中創建75個表格 – Herman

+0

數據庫上的交易應該是ACID(原子性,一致性,隔離性,耐久性)還是無關緊要。根據問題的背景情況,有時候做出艱苦的工作是正確的選擇(創建75個表來存儲數據) – 3dd

回答

1

根據您指定的內容,似乎任何文檔數據庫都適合帳單,尤其是那些存儲Json本身的帳單。 (很好的例子是RavenDBMongoDB - 與存儲的Json動態模式文檔數據庫)
選擇一個的NoSQL數據庫主要是關於你有問題,比如下面的問題:

  • 你如何計劃訪問數據?查詢?一般的數據訪問模式 - 你需要聚合嗎?報告?或簡單的查詢?
  • 對可靠性,一致性和高可用性的要求 - 數據庫是否提供您需要的所有功能和可靠性保證?

而且,恕我直言,選擇正確的數據庫更容易你決定你想究竟如何您的數據模型。 This blog post可以爲NoSQL數據庫中的數據建模提供出色的介紹。

1

Michael是對的,您需要了解您將如何訪問數據,然後瞭解不同數據庫的限制。 您可以將JSON存儲在MongoDb中,並創建針對JSON文檔優化的索引,但如果您需要在房屋和住房合作社之間進行某種連接,則需要創建map/reduce函數,因爲集合之間不存在連接。我認爲MongoDb仍然區分大小寫,所以你不能使用排序規則。

如果您已經在使用MS SQL,您甚至可以將JSON作爲文本存儲。在Sql Server 2016中,CTP3將內置用於解析和查詢JSON文本的函數,請參閱JSON in Sql Server 2016 post。如果你使用SQL Server的一些較舊的版本,你可以使用一些現有的CLR/JSON庫,如Sql4JsonJsonSelect,或者建立使用自己的庫Json.Net

還有就是要解決這個問題沒有絕對的最佳途徑,你需要分析哪些平臺可以適合您的用例。

相關問題