個人網站,資料庫如何設計存儲富文本文章比較好?
01-04
如果想用資料庫存儲文章的話,是直接存儲動態生成HTML文本,讀出後去顯示。還是存儲markdown內容文本,再通過讀取到的內容去動態生成HTML合理一些?
謝謝回答
當然是要保存原始數據,不然以後要修改怎麼辦?可以直接把markdown放資料庫里,最後在前端渲染就好了。
如果看過一些開源系統,就可以知道通俗的做法是將所有原數據全部以text或blob的數據類型存入到資料庫,一般情況下這些數據是通過富文本編輯器傳到後端,裡面包含了文本內容和HTML標記,甚至可以有css和js,css可以通過內聯或嵌入式的渲染方式。
那麼針對markdown而言,大同小異,可以將所有markdown標記性語言、文本內容、樣式統統存儲到DB。直接select出來即可。是完全自主設計的前提下,你要考慮你的數據的組織形式和量,同時確定你使用的是關係型資料庫還是nosql
如果你的數據是內容格式分離的,比如類似latex的組織方式,那麼你大可以將內容和格式分開儲存,採取分段式的儲存方式最為穩妥,即頻繁更新的放資料庫,大量數據的存為文件,定時將資料庫和文件進行非同步的update即可。
有些數據是內容格式合一的,比如word,比如影音數據,這時候,大容量存儲+索引的方式比較好,這也是普通CMS常用的。
總結來說,總是有永存+緩存+索引的方式存在的。
存最原始的數據。至於如何渲染,另說……
誰能給點代碼示例嘛,光說太籠統:)
@卡拉迦迪斯 說的更複雜吧,你都用資料庫了還存文件幹啥?資料庫裡面兩個欄位,一個是 md 生成的 html,另外一個 md 的源格式。前端顯示的時候始終顯示 html,每次更改的時候使用 md ,然後更新 html 不就好了。
就我一個人覺得 存成文件……
然後資料庫里存文件地址 好嗎……=================================這樣會增加一次IO操作? 不過會減少資料庫的數據量?
到底怎麼好其實還不是特別明確……這個需求 有點兒像CMS的功能……
可以參考下CMS的不過主要還是不清楚富文本的數據量有多大……
===================================展示部分如果是HTML的……其實也可以完全仿照CMS,做成靜態的這樣可能都不用查資料庫了,更友好一點兒?你有時間搜mark down to html 直接render 一下就行了。存儲的時候存md,緩存html。這樣你debug的時候,如果render錯誤還能發現。。。
推薦閱讀:
※想真正從基礎到深入地學習資料庫,但是市面上的數據過多,有什麼好的書籍,網站嗎?
※Android 開發中為什麼很少使用 JSON 存儲數據?
※如何從零寫一個kv資料庫?
※區塊鏈和分散式資料庫有什麼本質不同?
※設計的時候,如果去掉外鍵關聯,postgresql和mysql,哪個更有優勢?