簡體   English   中英

使用 REST API 的 DDL 語句和數據導入

[英]DDL statements and data imports using REST APIs

我是 arangodb 的新手,我正在考慮將 arangodb 用於小型應用程序。

由於應用程序將使用無代碼平台編寫,因此只能通過發出 REST API 來訪問 arangodb。 它沒有用於直接訪問的驅動程序。

此應用程序的用戶需要能夠使用應用程序前端創建 collections 並導入 CSV 文件。

我已經看到可以使用 REST API 發出 AQL 命令。 但是 AQL 沒有數據定義功能,因此我無法創建一個集合(或使用 SQL 術語,DROP 或 ALTER 它)。 同樣,沒有用於導入 CSV 的 AQL 命令。

Q1:我可以發出 REST API 來創建/更改/刪除 collections 並導入存儲在 CSV 文件中的頂點和邊嗎?

問題 2:如果問題 1 的答案是肯定的,是否有任何文檔說明如何執行所有這些操作?

提前謝謝了!

很高興您正在查看該設計,擁有 REST API 前端到您的數據層的主要優勢是它可以讓您驗證進入它的數據。

ArangoDB 的 Foxx 微服務功能開箱即用地支持這一點。

Foxx 服務能夠掛載 REST API 端點(與 Express 在 Node.js 中的操作非常相似),然后您可以在 Foxx 中編寫代碼以對傳入數據執行任何級別的檢查。

因為 Foxx 是用 JavaScript 編寫的(與最新的 Node.js 中的稍有不同,例如它不支持 Promises、Async/Await),您可以編寫執行安全檢查、架構驗證、管理底層 ArangoDB Z6B2819DD4C24EDA2FAF2052EEF449551Z 的代碼啟動對收到的命令做出反應的帶外進程。

您可以讓 Foxx 通過訪問文件系統來加載 CSV 文件,但我強烈建議您不要遵循該路徑,因為 Foxx 服務生命周期由 ArangoDB 而非您的代碼管理。

最好編寫一個 Foxx 微服務,該微服務公開一個 API,該微服務能夠獲取代表您要導入的數據的 JSON 有效負載。 然后 Foxx 可以執行數據驗證,確定每個字段的數據類型,響應數據中的缺失值,如果數據結構不正確,還可以選擇拒絕數據。

您還沒有提到您的 CSV 文件有多大,以及文件中數據的結構/模式有多廣為人知。

您還需要考慮解析、格式化、錯誤檢查和插入您發送的數據需要多長時間(以毫秒為單位)。

考慮一下您的數據將如何存儲,例如 1 CSV 行是否會成為集合中的 1 個文檔? 您知道 CSV 行的唯一鍵是什么嗎? 當識別出重復行時,您將如何處理更新?

如果數據以千字節為單位並且處理數據所需的時間小於 1 秒,則只需將其在 JSON 有效負載中發送到端點。

如果數據以兆字節為單位,則讓客戶端代碼對數據進行切片並將其發送到 REST API 塊中,這些塊對您的用例來說是有效的(例如,每個調用應該花費 <1 秒的時間來處理)。

如果數據太大以至於發送所有數據需要> 30秒,或者您的最終用戶在數據進入之前就放棄了,那么您可能需要在您的客戶端和 Foxx 之間建立另一個端點來負責保存數據到磁盤並生成工作人員,然后將這些數據切片並提供給 Foxx。

您的數據 model 變得越復雜,您需要處理的就越多,因此請保持簡單開始。

小型 CSV 文件可以通過 JSON 有效負載發送到 Foxx 微服務,Foxx 將從那里處理驗證和數據庫更新。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM