繁体   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