資料庫設計之半結構化儲存,資料庫結構化儲存

來源:互聯網
上載者:User

資料庫設計之半結構化儲存,資料庫結構化儲存

    業務情境:使用者填一些單據,然後上報,完成審批。單據中有幾個欄位是需要統計的,業務並不複雜。

    看似簡單的情境,當開發人員拿出PDM設計的時候,我驚呆了,密密麻麻的有接近70張表,每張表都是一百多個欄位。開發人員抱怨,花了一周的時間來做資料庫設計,實在是太麻煩了。

     設計方案1,我問能不能把單據進行歸類,一類單據設計成一張表,用一個欄位區分是那張單據,這樣會減少很多表。得到的回複是,沒法歸類,方案1行不通。

     設計方案2,做個Excel模板,審批的時候就在excel上審批,問題是有欄位要做統計,行不通。

     設計方案3,單據的內容使用JSON格式用blob存起來,如果要做統計的欄位,做常用條件查詢的欄位,從blob中冗餘出來專做統計。

     總結:選擇方案3是大大的減少了開發人員的工作量,但對業務分析人員的要求很高,能識別出來哪些欄位做分析、統計,哪些欄位做查詢。丟失了傳統資料庫設計的很多優點。是設計很多時候都在做平衡,這種設計無疑減少工作量,但對查詢、統計不友好,如果你不在乎工作量,我還是建議做成最傳統的設計。


目前主流的關聯式資料庫在儲存非結構化與半結構化資料都做了什最佳化?

資料庫主要用於儲存結構化資料的
半結構化資料有一些類似於資料庫的儲存方式,如XML 資料庫管理等
非結構化資料熱門檔案系統來儲存,很少用資料庫來儲存的(比如存放庫要記錄一個圖片,也只是在資料庫中記錄了圖片的大小、位置等中繼資料,圖片的實際內容是儲存在檔案系統中的)
也有資料庫直接儲存非/半結構化資料,主要是依靠資料壓縮和資料去重最佳化儲存效率

 
在建立資料庫時怎合理規劃資料庫的實體儲存體結構與邏輯儲存結構

邏輯結構規劃就是通過增加、減少或調整邏輯結構來提高應用的效率,通過對基本表的設計及索引、聚簇的討論來分析ORACLE邏輯結構的最佳化。於實體儲存體結構最佳化,主要是合理地分配邏輯結構的實體儲存體地址,這樣雖不能減少對實體儲存體的讀寫次數,但卻可以使這些讀寫盡量並行,減少磁碟讀寫競爭,從而提高效率,也可以通過對實體儲存體進行精密的計算減少不必要的實體儲存體結構擴充,從而提高系統利用率。
 

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.