將圖作為解決方案深入探索之前,需先評估圖是否適合您的實際應用場景。
“我該用哪項技術?”這個棘手的問題一直困擾著開發者。技術的選擇,需要經過數天的思考和分析,您得在日益增長的選項中確定哪些最符合需求,做好數量和需求管理,制定長期戰略計劃,簡化或減少支持,并得到同事的認可和管理層的批準。
實際情況卻復雜得多。認可度的高低、現有技術條件的限制和開發人員知識水平的不足,可能都會讓決策的過程更加復雜。例如,投資未知或全新的解決方案意味著要付出學習成本。
如果您正在研究圖數據庫,可能會驚嘆它處理復雜事物的能力和數據交互的簡易性,或許還會被漂亮的可視化效果圖和快如閃電的查詢功能所震撼。因此,為了學習新事物,就會想要開始嘗試圖數據庫。
但要如何確定圖是適合您業務或技術需求的解決方案呢?需要進行什么樣的調查才能確定其價值?是什么讓圖數據庫從一眾的解決方案中脫穎而出?
關于應用圖的好處,相信大家已經看了很多內容了。本文將不做贅述,而是將重點介紹一些應用場景,幫您了解什么情況下不適合用圖數據庫。這些不是嚴格的準則,但可以在您將圖作為解決方案深入探索之前,幫助您判斷圖與您的用例是否合適。
自我評估 .
您是否期望圖數據庫能解決所有問題?
作為開發人員(或其他頭銜)總是想嘗試新的解決方案,并選擇這樣的解決方案并將其應用于下一個出現的項目。大多數開發人員都明白不能這樣做,但現實情況是,項目截止日期和緊迫感往往會迫使他們妥協。
為了改變這種心態,我們需要在評估各類解決方案之前回答這兩個問題:我們使用這項技術的動機是什么?它有何與眾不同之處?因此,我們要提出可能的解決方案并深入研究,從而了解每種方案的優缺點。如此一來,他人的建議可以補充我們沒想到的地方,或是剔除不符合要求的選項。
場景評估 .
圖數據庫何時并不適用?
我們都希望我們的產品可以普遍適用,但世上沒有任何東西能普適萬物。因為獨特的想法、人、問題和技術實在是太多了(這其實是件好事!)。您對一款產品的大部分了解可能來自該公司本身,他們通常致力于宣傳自己積極和出色的一面。
如果您的用例符合以下的任何一個場景,那您就要避免將錯誤的工具用于不合適的場景。但是,如果您的用例不符合以下所有場景,那圖對您來說或許是絕佳選擇。雖然這個場景清單不算全面,但它涵蓋了最常見和最容易辨認的情況。
1
數據互不關聯,
數據間的關系無足輕重
如果交易數據與其他交易、人員等方面的關系無關緊要,那么圖可能不是合適的解決方案。因為在某些情況下,只需使用技術存儲數據即可,分析數據之間的關系和意義并不重要。
若是該交易只具備“只寫”屬性,且無需SQL 連接語句的簡單查詢,那么這就說明您的情況可能不適合圖數據庫。您的查詢可能更依賴于順序索引數據(下一個數據緊靠上一個數據存儲),而不是關系索引數據(存儲在與其相關的最鄰近的數據旁)。
若只需搜索單個數據片段或項目列表,那么最好另尋他法,因為無需知曉數據環境。總體而言,圖解決方案專注于從高度互接的數據中獲取最大價值,查詢搜索潛在的各類關聯(如果這些關聯還未建立)。如果您的場景不具備這些特性,其他技術或許更合適。
2
需要優化數據寫入與存儲,
而不是讀取或查詢
雖然上面提到了這一點,但我想著重強調一下。如果用例只需將數據寫入存儲庫而無需分析數據結果,那么圖可能無法解決問題。圖數據庫旨在快速遍歷存儲的數據并在幾毫秒內檢索結果。如果用例無需使用圖的這一優勢,那么您可以尋找其他解決方案。
3
核心數據模型不變,
數據結構固化或被表格化
如果您正在收集一組恒定不變的數據,那么圖可能不是最佳的解決方案。圖非常適用于存儲多種元素類型,可以輕松適應不斷變化的業務需求。
舉個例子,您需要追蹤來電客戶人數。那么您只需在客戶信息表中存儲客戶ID、姓名和電話號碼。此外無需其他信息,表格上的列不會更改,因此每個咨詢的客戶都有其特有的 ID、姓名和電話號碼。這是關系型數據庫的一個絕佳案例。
如果預計需求會增長并且需要其它類型的分析,還可以加入電子郵件地址、公司名稱、訂單號等信息。此外,該表還能夠靈活地處理空值(并非所有客戶都是公司職員或能創建訂單)、存儲其他類型的實體(如訂單)或調整數據定義(即客戶也可以是員工)。
簡而言之,如果僅限于特定需求,并且預計使用范圍有限,那么圖可能并不適用。
4
查詢需要執行批量數據掃描
或從未知數據點開始
如果您想通過表掃描查詢匹配項或找到符合一般范疇的數據,圖數據庫并不是解決問題的最優方案。圖數據庫經過優化,可以從一個起點開始遍歷關系。但不適用于無指定目標區域的全表搜索。
下方的查詢代碼最終可能遍歷一張包括各類信息卻只得到單一結果的超大圖(Jennifer可以是一份訂單,一個物品,一位顧客,一個員工或是其他事物)。然而,下一個查詢要從特定用戶開始,查看該用戶認識的人。
若您的大多數查詢與第一個查詢類似,而且查詢性能至關重要,您需要考慮舍棄圖數據庫。盡管圖數據庫也能處理這些查詢,但不能最大程度地優化批量掃描或未知起點的遍歷性能。
5
如需用于鍵值存儲(類似緩存)
如果您只需要查找操作,圖數據庫并不適合您。如上所述,圖分析得益于數據之間的關系。從已知鍵開始查找,并不能最大限度地發揮圖數據庫的作用。
例如,有些人會把數據庫當作緩存,存儲應用程序中的會話數據。您可以在緩存中存儲會話ID,并將會話詳情寫入數據庫。當您需要檢索會話詳情或分析其運行時,您可以發送會話ID(作為鍵)來返回值(可能是存儲在實體上的屬性)。
這種方法不使用任何關系,它能通過已知鍵返回單個對象或單個實體的具體數據。在檢查用例時,這種方法能確保您了解每種技術的存儲和檢索機制。鍵值存儲,甚至是關系型數據庫更適合查詢,查詢性能也更佳。
6
如需將大量文本或BLOBS存儲為屬性
如果您正在存儲并檢索包含超大值的實體屬性(例如BLOB、CLOB、文本段落等),其他技術會更適合。圖數據庫十分擅長遍歷小型數據實體之間的關系,但是并不適用于在單個節點上存儲大量屬性,或者在這些屬性中存儲超大值。雖然查詢可以從一個實體跳轉到另一個實體,但您需要額外步驟來獲取路徑中每個實體的詳細信息。
有時候,您能通過重組數據模型來改善這個問題。例如,如果您將與員工有關的所有信息都儲存在單一圖節點上(員工的住址、工作信息、訂單、福利選擇、工資信息),這個節點會包含許多屬性與潛在大值,十分復雜。您可以重新建模,將公司、地址和職位詳情分開,簡化模型并降低查詢性能。
但是,在特定情況下,您可能需要將這些大值存儲在單個屬性中,而且這些查詢不僅限于圖數據庫。對于這種類型的用例,我們不建議使用圖數據庫。
當然,上述情況不會總是單獨出現。有時,場景之間的界限并不分明。在您的項目中,可能有些部分適合用圖數據庫,但有些則不然。雖然這可能是個復雜的選擇,但我們仍需要評估每種技術的優缺點,從而確定最佳的解決方案。
簡單說說 .
到底什么時候適合用圖呢?
我在前面簡單提到了圖技術的一些核心優勢,您可以通過公司資源、員工討論或客戶反饋中了解更多到信息,這里我就不再贅述了。在文章的結尾,我想和大家聊聊圖數據庫的優點。:)
圖數據庫的出現讓越來越多的用戶想要了解數據間的關系(隱性和顯性)。如果您想了解客戶興趣,將消息推送到話題區,或是想了解網絡布局,分析其影響,那么圖數據庫是您的不二之選,非常適合用于這些用例和查詢。企業可以借助圖創建全面且多樣化的客戶資料,或仔細審查銀行交易,發現可能存在欺詐跡象的異常值。
圖數據庫在數據科學與分析領域的性能十分卓越。圖算法能增值基于數據關聯的復雜分析,突顯決策模式。
總結 .
我們現在只談到圖數據庫的使用范圍,而這只是圖數據庫最淺顯的部分。我們需要通過更細微的細節來選擇不同技術。這篇文章旨在為您提供一些方法,幫助您更好地做出選擇。無論您是否選擇圖數據庫,我們都希望您能找到最合適(甚至超乎預料)的方法。
審核編輯:劉清
-
SQL
+關注
關注
1文章
775瀏覽量
44285 -
數據庫
+關注
關注
7文章
3855瀏覽量
64778
原文標題:一定要用圖數據庫嗎?這6個場景就不一定。
文章出處:【微信號:TigerGraph,微信公眾號:TigerGraph】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
適用于SQLite的dbExpress數據庫驅動程序
適用于MySQL和MariaDB的Python連接器:可靠的MySQL數據連接器和數據庫
![<b class='flag-5'>適用</b>于MySQL和MariaDB的Python連接器:可靠的MySQL<b class='flag-5'>數據</b>連接器和<b class='flag-5'>數據庫</b>](https://file1.elecfans.com/web3/M00/06/57/wKgZPGeJ2kmAcWpWAAAh1ecL_LM122.png)
MySQL數據庫的安裝
![MySQL<b class='flag-5'>數據庫</b>的安裝](https://file1.elecfans.com/web3/M00/05/E2/wKgZPGeF2XWAe83fAAAW9lhgvGk652.jpg)
云數據庫是哪種數據庫類型?
數據庫加密辦法
數據庫數據恢復—MYSQL數據庫ibdata1文件損壞的數據恢復案例
云原生和數據庫哪個好一些?
多維表格數據庫Teable的適用場景?
數據庫數據恢復—通過拼接數據庫碎片恢復SQLserver數據庫
![<b class='flag-5'>數據庫</b><b class='flag-5'>數據</b>恢復—通過拼接<b class='flag-5'>數據庫</b>碎片恢復SQLserver<b class='flag-5'>數據庫</b>](https://file1.elecfans.com/web1/M00/F4/07/wKgaoWcjE32AbQdWAAJD_hojvJc119.png)
數據庫數據恢復—SQL Server數據庫出現823錯誤的數據恢復案例
![<b class='flag-5'>數據庫</b><b class='flag-5'>數據</b>恢復—SQL Server<b class='flag-5'>數據庫</b>出現823錯誤的<b class='flag-5'>數據</b>恢復案例](https://file1.elecfans.com/web2/M00/07/F4/wKgaombs78mANJ1GAAPeSoXHVPE244.png)
恒訊科技分析:sql數據庫怎么用?
數據庫數據恢復—raid5陣列上層Sql Server數據庫數據恢復案例
![<b class='flag-5'>數據庫</b><b class='flag-5'>數據</b>恢復—raid5陣列上層Sql Server<b class='flag-5'>數據庫</b><b class='flag-5'>數據</b>恢復案例](https://file.elecfans.com/web2/M00/A2/AD/pYYBAGRLbSSAHhFWAAI9vWNRQec919.png)
評論