Data Connect
Tech ·Data Connect
Summary
Data Connect 是 Google Firebase 的其中一項產品。在 Firebase 眾多服務中,現有的資料庫產品主要是 Firestore,這是一種非關聯式資料庫,資料結構包括 collections(集合)、documents(文件)與 data(資料)。然而,由於關聯式資料庫的需求仍然相當龐大,Google 開發了一項全新的產品,也就是 Data Connect。
Data Connect 是一種關聯式資料庫,其書寫語法採用 GraphQL,但其底層基礎仍然是 PostgreSQL。值得一提的是,GraphQL 最初是 Facebook 的內部技術,後來被開放為開源項目。相較於 SQL,GraphQL 的語法更為簡單,但靈活性與表達能力可能不如 SQL 那般接近自然語言。
Data Connect 的另一大特色在於其對向量資料的支持。它提供了模型來計算矩陣數值,讓使用者能夠方便地存取與操作向量資料。這一特性使得 Data Connect 在需要處理向量或高維數據的應用場景中,具備極大的優勢。
Q&A
- Q:GraphQL 語法的驚嘆號是什麼? A:代表欄位一定要有值
- 可以實現Emebedding功能嗎? A: 可以,只是要開啟Verext ai收費功能。
資料夾結構

- connector.yaml:將 gql 編譯為 js(?
- mutations.gql:新刪修的 GraphQL 語法
- queries.gql:查詢的 GraphQL 語法
- schema:Data Connect 資料庫的資料結構
Transaction
:::info Cloud Firestore 支援讀取和寫入資料的不可部分完成作業。在一系列不可分割的作業中,所有作業都會成功,或是全部不予套用。Cloud Firestore 中有兩種原子作業:
交易:交易是一或多個文件上的一組讀取和寫入作業。 批次寫入:批次寫入是指一或多份文件上的一組寫入作業。 :::
- example ```javascript= import { runTransaction } from “firebase/firestore”;
try { await runTransaction(db, async (transaction) => { const sfDoc = await transaction.get(sfDocRef); if (!sfDoc.exists()) { throw “Document does not exist!”; }
const newPopulation = sfDoc.data().population + 1;
transaction.update(sfDocRef, { population: newPopulation }); }); console.log("Transaction successfully committed!"); } catch (e) { console.log("Transaction failed: ", e); } ```
交易失敗
-
交易可能會因下列原因失敗:
- 交易包含寫入作業後的讀取作業。讀取作業必須一律在任何寫入作業之前執行。
- 交易讀取在交易外修改的文件。在這種情況下,系統會自動再次執行交易。交易會重試有限次數。交易超出 10 MiB 的最大要求大小上限。
-
交易大小取決於交易修改的文件和索引項目大小。對於刪除作業,這包括目標文件的大小,以及因應作業而刪除的索引項目大小。
- 失敗的交易會傳回錯誤,且不會將任何內容寫入資料庫。您不需要復原交易,Cloud Firestore 會自動執行這項作業。
實作練習
- https://github.com/learnai2024XD/data-connect-practice