如何将ArangoDB嵌入桌面应用程序

12
我想在我的应用程序中嵌入一个图形数据库(适用于Windows、Linux和MAC)。我缩小了搜索范围,最终考虑了ArangoDB和OrientDB。我已经成功使用了嵌入式的OrientDB,但我仍然想尝试一下ArangoDB,以便做出明智的决定。OrientDB嵌入式版本的文档非常清晰,而我找不到关于ArangoDB的任何东西。由于ArangoDB是用C++编写的,所以我还必须弄清楚如何使它可在各个平台上移植,并了解如何将其与我的应用程序一起安装。使用ArangoDB(或OrientDB)对我们应用程序的用户应该是透明的。谢谢!(更新:我忘了提到,我们的应用程序是用C++编写的。我们正在寻找可以帮助我们构建带有现有模块的ArangoDB二进制文件的说明。然后我们可以弄清楚如何加载这些二进制文件并与它们通信。)
2个回答

6
可以将ArangoDB的实例与应用程序一起安装。它会安装到自己的目录下,主要资产包括:
- ArangoDB二进制文件 - ArangoDB数据文件 - ArangoDB日志文件 - ArangoDB Foxx应用(可选)
ArangoDB可以作为服务运行,并通过一个名为arangod.conf的文件进行配置。这个文件集中控制诸如运行端口、监听的IP地址、数据库引擎、SSL和安全设置等设置。
以Windows为例,你可以静默安装ArangoDB,然后使用PowerShell或DOS批处理文件来停止/启动ArangoDB服务,复制带有所需配置设置的arangod.conf文件等。
如果需要,甚至可以生成SSL证书并将其应用于ArangoDB实例,以便可以对数据库进行SSL连接。
此外,您可以通过脚本利用ArangoShell使用,它允许您创建数据库、从备份中恢复默认数据、创建ArangoDB用户、分配权限等。
您需要更加熟悉ArangoDB这个产品,然后开始尝试安装、卸载、配置和备份/还原数据库。相比OrientDB,我选择了ArangoDB,因为它运行更快,更新很多,而且他们的驱动程序包编写得很好。对于嵌入式数据库,您确实需要具备多模型数据库,并能够在一个数据库引擎中存储标准文档以及图形数据是非常宝贵的。
此外,要认真研究ArangoDB的Foxx MicroService架构。它允许您在REST API和作业队列之后托管业务逻辑,直接运行在ArangoDB数据库中。这意味着您的应用程序甚至不需要原始表格访问数据库,而是可以通过REST API访问数据,并且您的内部模式对用户隐藏,您的业务逻辑会防止他们做出错误的操作并破坏数据库。
通过在应用程序和数据库之间拥有REST API数据层,它为您提供了更多关于如何安全地公开数据的灵活性,而您的应用程序逻辑将保持数据安全。如果选择使用Foxx,则有一个很棒的新工具称为foxx-cli,它可让您脚本化Foxx MicroServices在您的数据库中的安装和配置。这是一个超级强大的工具,因为可以通过安装脚本完全安装和配置ArangoDB服务器、数据库和内部设置。
花时间学习ArangoDB,就像所有技能一样,需要时间才能真正掌握它。我每天都在学习新东西,而我只使用它已经2年了:)

我也尝试过两者,最终将我的OrientDB应用迁移到了MySQL(因为速度很慢),那时我还没有发现Arango。使用他们网站上的XCOPY部署方法,你可以轻松自动化安装,并且他们提供了许多针对许多语言的驱动程序。此外,请查看他们在ArangoDB博客上更新的性能比较指标。 - Andrew Grothe
问题是如何在进程中使用Arango,对吧?因此,这并没有真正回答问题。尽管它可能提供了一种解决方法。 - Charles Lowell
@CharlesLowell 你不能将他们的代码重新编译成你的二进制文件。这已经是你能得到的最接近的了。 - David Thomas
@DavidThomas 为什么不呢? - Charles Lowell

3
如果您使用NodeJS(我必须假设,因为您没有提到使用的编程语言),您可以使用Electron(https://electron.atom.io)作为平台,并使用ArangoJS(http://npmjs.com/package/arangojs)驱动程序。如果需要ORM,我建议使用(http://npmjs.com/package/caminte),它内置了对ArangoDB的支持,尽管文档标准较低,但一些编程知识应该足够。
OFT:Electron允许您在纯HTML、JS和CSS中创建跨平台桌面应用程序。如果您的目标是移动平台,也可以使用Cordova。
您还可以使用Foxx执行一些应用程序逻辑(这取决于您的个人喜好),或者创建一个API平台(例如Restify)。
大多数数据库系统都是用C++编写的,但这并不意味着只能通过C++访问它们,流行的语言提供了额外的驱动程序。如果您使用特定的语言,请更新问题,以便我们可以进一步帮助您。

您可能还想阅读:https://www.arangodb.com/2018/02/nosql-performance-benchmark-2018-mongodb-postgresql-orientdb-neo4j-arangodb/,了解为什么ArangoDB会是更好的选择。


编辑

由于我的C ++经验有限,我只能提供一些我之前保存的参考资料,但我相信它们会对你有用。

对于C ++,你应该使用的驱动程序是:

https://www.arangodb.com/2017/11/introduction-fuerte-arangodb-c-plus-plus-driver/

使用驱动程序的示例:

https://www.arangodb.com/wp-content/uploads/2017/10/C-Example-Source-Code-File.cc

一个关于如何在ArangoDB中使用图形化的简单示例/教程:

https://docs.arangodb.com/3.2/Manual/Graphs/

Arango提供的关于图形绘制的免费课程:

https://www.arangodb.com/arangodb-graph-course/

希望它们有所帮助!

1
更新:我们能够在应用程序环境中使用fuerte构建arangodb和velocypack。但是,我们无法找到一个可以从C++启动服务器的API。我还从stackoverflow上发现了这个问题,似乎表明在应用程序中嵌入arangodb是不可能的。https://dev59.com/qePxs4cB2Jgan1znxjX8#36397451 - Soy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接