讀圖資料庫實戰筆記01_初識圖

来源:https://www.cnblogs.com/lying7/archive/2023/10/27/17789457.html
-Advertisement-
Play Games

1. 圖論 1.1. 起源於萊昂哈德·歐拉在1736年發表的一篇關於“哥尼斯堡七橋問題”的論文 1.2. 要解決這個問題,該圖需要零個或兩個具有奇數連接的節點 1.3. 任何滿足這一條件的圖都被稱為歐拉圖 1.4. 如果路徑只訪問每條邊一次,則該圖具有歐拉路徑 1.5. 如果路徑起點和終點相同,則該 ...


1. 圖論

1.1. 起源於萊昂哈德·歐拉在1736年發表的一篇關於“哥尼斯堡七橋問題”的論文

1.2. 要解決這個問題,該圖需要零個或兩個具有奇數連接的節點

1.3. 任何滿足這一條件的圖都被稱為歐拉圖

1.4. 如果路徑只訪問每條邊一次,則該圖具有歐拉路徑

1.5. 如果路徑起點和終點相同,則該圖具有歐拉迴路,或稱為歐拉環

2. 圖

2.1. 頂點和邊的集合

2.2. 示例

2.2.1. 路線圖

2.2.2. 組織結構圖

2.3. 當要思考的數據集含有大量高度相互關聯的項時,也可以將該數據集描述為一個由相關事物組成的網路,這也是圖的另一種說法

3. 頂點

3.1. 圖中零條、一條或多條邊經過的點

3.2. 節點或實體

4. 邊

4.1. 圖中兩個頂點之間的關係

4.2. 關係、鏈接或連接

5. 圖資料庫

5.1. 一種數據存儲引擎

5.1.1. 將包含頂點和邊的基本圖結構與持久化技術和遍歷(查詢)語言相結合

5.1.2. 以創建針對高度關聯數據的存儲和快速檢索進行優化的資料庫

5.2. 實體之間的關係與數據中的實體同等重要,甚至比後者更加重要

5.2.1. 用開發人員的話來說,邊和頂點一樣,都是“一等公民”

5.3. 可以用於更準確、更容易地表示和推理現實世界中的關係

5.4. 將數據存儲為頂點(節點、組件)和邊(關係)

5.5. Neo4j、Apache TinkerPop的Gremlin Server、JanusGraph和TigerGraph

5.6. 預設情況下,只有關係資料庫和圖資料庫才具有將數據中的實體關聯起來的功能

5.7. 優勢

5.7.1. 遞歸查詢

5.7.1.1. 組織中員工的彙報層次結構或者組織結構圖

5.7.1.2. 會連續執行多次,反覆調用自己,直到滿足某種終止條件

5.7.1.3. 關係資料庫不能很好地處理遞歸操作

5.7.1.4. 圖資料庫能夠利用其表示豐富關係的能力,乾凈、高效地處理無邊界遞歸查詢

5.7.1.5. 嵌套查詢和遞歸查詢(如前面的層次結構示例所示)是圖資料庫擅長解答的疑問類型

5.7.2. 複合結果類型

5.7.2.1. 訂單和產品報告示例

5.7.2.2. 能夠返回包含不同數據類型的結果集

5.7.2.3. 關係資料庫指定聯合返回的結果集必須包含一致的列

5.7.2.3.1. 在稀疏數據的情況下,這不僅增加了返回的數據量,還降低了數據結構的描述性

5.7.3. 路徑

5.7.3.1. 過河問題

5.7.3.2. 一組頂點和邊的序列,描述遍歷如何在圖中移動

5.8. 請把註意力集中在圖資料庫如何優雅地處理關係資料庫里的UNION操作上

5.9. 可以把圖資料庫設計得能夠容忍不斷發展變化的數據

5.10. 使用

5.10.1. 並不一定全部使用圖資料庫,也並不一定全部不使用圖資料庫

5.10.2. 不要害怕嘗試用圖資料庫來解決問題的一部分

5.10.3. 使用圖資料庫的多模型方法(即混合使用關係資料庫和圖資料庫)很常見

6. 比較

6.1.  鍵值資料庫

6.1.1. 所有數據都由唯一標識符(鍵)和關聯的數據對象(值)表示

6.1.2. Berkeley DB、RocksDB、Redis和Memcached

6.2. 列存儲資料庫

6.2.1. 面向列、寬列式資料庫

6.2.2. 數據按列來存儲

6.2.2.1. 可能每行有大量的列

6.2.2.2. 可能每行的列數不一樣

6.2.3. Apache HBase、Azure Table Storage、Apache Cassandra和Google Cloud Bigtable

6.3. 文檔資料庫

6.3.1. 面向文檔資料庫

6.3.2. 將數據存儲到帶有唯一鍵的文檔中

6.3.3. 該文檔可以具有不同的模式,也可以包含嵌套數據

6.3.4. MongoDB和Apache CouchDB

6.4. 關係資料庫

6.4.1. 將數據存儲在包含具有嚴格模式行結構的表中,允許在表之間連接行來建立關係

6.4.2. 關係資料庫中的查找表或鏈接表使用的不是查詢時的指針結構,而是存儲了有關關係屬性的結構,類似於圖資料庫中的邊結構

6.4.3. PostgreSQL、Oracle Database和Microsoft SQL Server

6.5. 數據複雜性

7. Apache TinkerPop

7.1. TinkerPop是Apache軟體基金會的頂級項目

7.2. 提供了一個與廠商無關的開源圖計算框架

7.3. 具有事務(OLTP)能力和分析(OLAP)能力

7.4. 有廣泛的第三方庫可供使用

8. TinkerGraph

8.1. 一個記憶體圖引擎

8.2. 支持OLTP負載和OLAP負載

8.3. TinkerPop Gremlin Server和Gremlin Console的一部分

8.4. TinkerPop的全功能開源實現

8.4.1. 被作為TinkerPop API的參考實現構建出來的

8.5. 並非一個你能下載的軟體

8.5.1. 可下載軟體(如Gremlin Server 和Gremlin Console)里的核心引擎

9. Gremlin

9.1. Gremlin遍歷語言是TinkerPop項目的圖查詢語言

9.2. 支持命令式語法和聲明式語法

9.2.1. 首選方式是命令式語法

9.3. Gremlin Console

9.3.1. 用於TinkerPop支持圖資料庫的交互終端應用程式

9.3.2. 允許用戶連接到本地或遠程的資料庫,將數據載入到圖中,並互動式地在圖上進行遍歷

9.3.3. 能作為自帶記憶體圖數據的獨立應用程式使用

9.3.4. 能作為圖資料庫伺服器的客戶端使用

9.4. Gremlin Server

9.4.1. 允許非JVM客戶端與基於JVM的圖資料庫進行通信

9.4.2. 提供能讓部署在不同伺服器上的資料庫相互通信的機制

9.5. Gremlin語言變體

9.5.1. 允許開發人員既使用Gremlin作為查詢語言,又能通過他們選擇的開發語言方言來實現

9.5.2. 主張以應用程式編程語言的風格來編寫Gremlin遍歷

9.5.2.1. Java開發人員使用Java語法

9.5.2.2. .NET開發人員使用.NET語法

10. 用例/場景

10.1. 從社交網路分析、推薦引擎、依賴性分析、欺詐檢測和主數據管理,到搜索問題和互聯網上的研究,你很快就能列出一個適合使用圖資料庫的用例列表

10.2. 判斷一個用例是好還是壞的最重要因素是對要解答的疑問有深入的瞭解

10.3. 選擇/搜索

10.3.1. 側重於尋找一組具有共同屬性(如姓名、位置或雇主)的實體

10.3.2. 不需要數據中豐富的關係

10.3.3. 建議使用諸如PostgreSQL之類的本地資料庫或諸如Apache Solr和Elasticsearch之類的搜索技術

10.3.4. 使用RDBMS或搜索技術

10.4. 獲取數據相關性或遞歸數據

10.4.1. 圖資料庫比任何其他類型數據引擎都能更好地利用這些信息

10.4.2. 圖資料庫查詢語言更適用於推斷數據內部的關係

10.4.3. 使用圖資料庫

10.5. 聚合

10.5.1. 數據聚合查詢是關係資料庫的一個優秀用例

10.5.2. 關係資料庫經過優化,能以最小的開銷快速執行複雜的聚合查詢

10.5.3. 可以在圖資料庫中執行,但是圖遍歷的本質要求接觸更多的數據。這會導致更高的查詢延遲和更多的資源消耗

10.5.4. 使用RDBMS

10.6. 模式匹配

10.6.1. 基於實體關聯方式的模式匹配是充分利用圖資料庫功能的一個主要例子

10.6.2. 推薦引擎、欺詐檢測和入侵檢測

10.6.3. 使用圖資料庫

10.7. 中心性、聚集性和影響力

10.7.1. 一個實體相對於另一個實體的影響力或重要性是圖資料庫的典型用例

10.7.2. 識別基礎設施的關鍵部分,或者定位數據中的實體組

10.7.3. 要考慮實體、實體之間的關係、事件關係和鄰近關係

10.7.4. 使用圖資料庫

10.8. 數據結構的靈活性不能作為選擇圖資料庫的充分理由,但與其他功能相結合,很可能足以使你轉而使用圖資料庫

10.9. 即使業務領域模型天生適合使用圖資料庫,但是如果你的具體技術問題並不依賴於圖中的關係來求解,那麼也應該考慮其他選擇

11. SQL

11.1. SQL查詢中包含大量join可能表明圖資料庫是一個很好的選擇,但並不能確定

11.2. SQL查詢中的大量join通常是數據模型規範化的良好標誌

11.3. 當這些join並非用於檢索引用數據(如關係資料庫中的第三個範式所做的那樣),而是用於將記錄項鏈接在一起(就像父子關係那樣)時,就可能需要考慮使用圖資料庫了

11.4. 當我們不知道要執行的join數量時,使用圖資料庫的遞歸查詢模式更好

11.5. 命令查詢責任分離(CQRS)模式


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • RA 功能簡介 在公共密鑰基礎設施(PKI)中,CA(Certificate Authority,證書頒發機構)系統的RA(Registration Authority,註冊機構)是PKI體繫結構的重要組成部分。RA在CA系統中扮演著關鍵角色,負責處理用戶的身份驗證和註冊請求,然後將這些請求傳遞給C ...
  • 本文詳盡地探討了Go語言的內建命令集,包括但不限於go build、go run、go get等。文章首先列舉了所有常用的Go命令,並用表格形式簡潔地解釋了它們的功能。隨後,我們逐一深入講解了每個命令的使用說明、應用場景,以及實際操作中可能遇到的輸出結果。 關註【TechLeadCloud】,分享互 ...
  • 最近有用戶反饋測試環境Java服務總在凌晨00:00左右掛掉,用戶反饋Java服務沒有定時任務,也沒有流量突增的情況,Jvm配置也合理,莫名其妙就掛了 ...
  • 在Java編程中,我們經常需要找出兩個列表(List)中的重覆元素。在本文中,我們將探討三種方法來實現這一目標。 ...
  • 來源:https://www.cnblogs.com/liuboren/p/17017421.html 0.前言 本篇文章是<<代碼整潔之道>>的學習總結, 通過這篇文章你將瞭解到整潔的代碼對項目、公司和你的重要性,以及如何書寫整潔的代碼. 通過命名、類、函數、測試這四個章節,使我們的代碼變得整潔. ...
  • MDI窗體的相關學習使用 1、設置MDI父窗體 在屬性中找到IsMdiContainer選項,設置為True 2、添加MDI子窗體,在項目中依次選擇添加->窗體,然後一直預設即可 添加後的項目目錄(Form1為父視窗,Form2、Form3為子視窗) 3、在Form1.cs中,創建對應MDI子視窗的 ...
  • 【學習課程】:【【小白入門 通俗易懂】2021韓順平 一周學會Linux】 https://www.bilibili.com/video/BV1Sv411r7vd/?p=14&share_source=copy_web&vd_source=2c07d62293f5003c919b2df9b2e054 ...
  • 電腦數據的表示 1. 數值數據的表示 1.1 各種進位數的表示 二進位 (Binary) :以 0b 或 0B 開頭,字元僅含0和1. 用下標2或者數字後面加B表示。如 $(1011)_2$ 或 $1011B$ 八進位 (Octal) :以 0o 或 0O 開頭,字元含0-7. 用下標8或者數字後 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...