前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何在Ubuntu 14.04上安装和使用ArangoDB

如何在Ubuntu 14.04上安装和使用ArangoDB

原创
作者头像
朝朝
修改2018-09-30 10:38:47
2.6K0
修改2018-09-30 10:38:47
举报

介绍

ArangoDB是一个NoSQL数据库。它创建于2011年,当时已有许多NoSQL数据库,其目标是成为一个涵盖各种用例的综合数据库解决方案。

ArangoDB的核心是文档存储,但这只是一个开始。您可以使用完整的查询语言(名为AQL)查询数据,进行符合ACID的事务,以JavaScript应用程序及其嵌入式V8的形式添加自定义HTTP端点等。

由于ArangoDB具有很多功能,因此最初可能会令人生畏,但是再看它,就会觉得并不复杂。本文将帮助您安装ArangoDB,并简要介绍如何使用它的一些核心功能。

完成本教程后,您应该能够:

  • 在Ubuntu 14.04上安装ArangoDB
  • 配置ArangoDB以进行基本使用
  • 插入,修改和查询数据

核心概念

在整篇文章中,我们将使用一些核心概念。在ArangoDB上构建项目之前,您可能想要熟悉它们:

  • 文档存储:ArangoDB将数据存储在文档中,与关系数据库存储数据的方式形成对比。文档是由键值对组成的任意数据结构。该是一个字符串名称的价值(如在关系数据库中的列)。该可以是任何数据类型,甚至另一个文档。文档未绑定到任何架构。
  • 查询语言:使用API或查询语言与您的数据交互。虽然前者为API用户留下了许多细节,但查询语言将详细信息移交给数据库。在关系数据库中,SQL是查询语言的示例。
  • ACID:四个属性Atityity,Consistency,Isolation 和Durability描述了数据库事务的保证。ArangoDB支持符合ACID的事务。
  • V8:支持Chrome的谷歌JavaScript引擎也可以轻松嵌入到其他软件中。在ArangoDB中使用它可以在数据库中使用JavaScript。ArangoDB的大部分内部功能都是使用JavaScript构建的。
  • HTTP API:ArangoDB提供HTTP API以允许客户端与数据库进行交互。API是面向资源的,可以使用JavaScript进行扩展。

准备

在开始之前,请确保正确设置CVM:

  • 使用Ubuntu 14.04 x64创建腾讯云CVM
  • 添加一个具有sudo权限的用户

有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器

现在,您应该使用新创建的用户登录服务器。本教程中的所有示例都可以从用户的主目录中执行:

代码语言:javascript
复制
cd ~

第1步 - 安装ArangoDB

ArangoDB是为许多操作系统和发行版预先构建的。有很大的机会你不需要从源代码构建它。在本教程中,我们将使用Ubuntu 14.04 x64。

由于ArangoDB使用OpenSUSE的构建服务,首先要下载其存储库的公钥:

代码语言:javascript
复制
wget https://www.arangodb.com/repositories/arangodb2/xUbuntu_14.04/Release.key

您需要sudo权限来安装密钥:

代码语言:javascript
复制
sudo apt-key add Release.key

接下来添加apt存储库并更新索引:

代码语言:javascript
复制
sudo apt-add-repository 'deb https://www.arangodb.com/repositories/arangodb2/xUbuntu_14.04/ /'
sudo apt-get update

安装ArangoDB:

代码语言:javascript
复制
sudo apt-get install arangodb

我们可以通过查询HTTP API来检查一切是否顺利:

代码语言:javascript
复制
curl http://localhost:8529/_api/version

以下输出表明ArangoDB已启动并正在运行:

代码语言:javascript
复制
{"server":"arango","version":"2.5.5"}

第2步 - 使用arangosh访问命令行

ArangoDB与一个命令行客户端arangosh一起使用,它通过其JavaScript运行时为您提供对数据库的完全访问权限。您可以使用它在生产中运行管理任务或脚本。

它也非常适合开始使用ArangoDB及其核心功能。要继续,请开始类似这样的arangosh会话:

代码语言:javascript
复制
arangosh

结果基本上是一个JavaScript shell,您可以在其中运行任意JavaScript代码。例如,添加两个数字:

代码语言:javascript
复制
23 + 19

你会得到这个结果:

代码语言:javascript
复制
42

如果您想深入了解此主题,请再shell中键入tutorial

第3步 - 添加数据库用户

出于安全原因,只能从arangosh命令行界面添加用户。你应该仍然在上一步的arangoshshell中。

现在让我们添加一个新用户sammy。该用户可以访问整个数据库。现在可以,但您可能希望在生产环境中创建更多有限的用户。使用一个安全的password

代码语言:javascript
复制
require("org/arangodb/users").save("sammy", "password");

现在退出arangoshshell:

代码语言:javascript
复制
exit

第4步 - 配置Web界面

ArangoDB附带一个非常强大的Web界面。它提供监控功能,数据浏览,交互式API文档,强大的查询编辑器,甚至集成arangosh。我们将专注于使用Web界面来提醒本教程。

为了使Web界面易于访问,我们需要做一些准备工作:

  1. 启用身份验证
  2. 将ArangoDB绑定到公共网络接口

启用身份验证

与许多其他NoSQL数据库一样,ArangoDB也禁用了身份验证。如果你在一个共享的环境中运行ArangoDB和/或要使用的Web界面,这时强烈建议启用身份验证

激活/etc/arangodb/arangod.conf文件中的身份验证。您可以运行此命令来创建备份文件并将disable-authentication参数设置为no

代码语言:javascript
复制
sudo sed -i.bak 's/disable-authentication = yes/disable-authentication = no/g' /etc/arangodb/arangod.conf

或者,使用文本编辑器将disable-authentication参数设置为no

重启数据库:

代码语言:javascript
复制
sudo service arangodb restart

将ArangoDB绑定到公共网络接口

配置ArangoDB以侦听公共网络接口。首先,打开/etc/arangodb/arangod.conf文件进行编辑:

代码语言:javascript
复制
sudo nano /etc/arangodb/arangod.conf

找到活动的endpoint行,该行应位于示例部分下方的块[server]的末尾。使用您自己的服务器的IP地址和端口8529更新如下所示的设置。

代码语言:javascript
复制
. . .
​
endpoint = tcp://your_server_ip:8529

由于arangosh使用自己的默认配置,我们还需要更改/etc/arangodb/arangosh.conf文件中的端点:

代码语言:javascript
复制
sudo nano /etc/arangodb/arangosh.conf

再次确保endpoint行设置为tcp://your_server_ip:8529

代码语言:javascript
复制
pretty-print = true
​
[server]
endpoint = tcp://your_server_ip:8529
disable-authentication = true
​
. . .

如果您更愿意运行两个多部分,一行命令来更新这两个文件,则可以改为运行以下命令:

代码语言:javascript
复制
sudo sed -i.bak "s/^endpoint = .*/endpoint = tcp:\/\/$(sudo ifconfig eth0 | grep "inet " | cut -d: -f 2 | awk '{print $1}'):8529/g" /etc/arangodb/arangod.conf
代码语言:javascript
复制
sudo sed -i.bak "s/^endpoint = .*/endpoint = tcp:\/\/$(sudo ifconfig eth0 | grep "inet " | cut -d: -f 2 | awk '{print $1}'):8529/g" /etc/arangodb/arangosh.conf

这些神秘的命令将提取当前的公共IP地址并替换默认的绑定地址(127.0.0.1)。不用担心,-i.bak选项会在更改配置之前创建更新。

现在再次重启ArangoDB:

代码语言:javascript
复制
sudo service arangodb restart

步骤5 - 访问ArangoDB Web界面

现在您应该能够在浏览器中访问Web界面:

代码语言:javascript
复制
http://your_server_ip:8529

请使用您在步骤3中为数据库创建的用户名和密码登录。

警告:虽然我们设置了身份验证,但传输尚未得到保护。在生产中,如果您从其他主机访问ArangoDB,则应设置TLS加密。

您应该看到的第一个屏幕是仪表板,其中包含有关数据库服务器的基本指标:

在顶部导航的中心,您将看到DB:_system。这表示当前选择的数据库。默认值是_system数据库。某些管理任务只能在_system数据库中执行。

对于以下部分,我们将创建一个可供使用的数据库。将鼠标悬停在DB:_system菜单项上,然后单击Manage DBs链接。

在下一页上单击添加数据库按钮。填写表单以创建名为music_library的数据库。您必须在此对话框中输入与以前相同的用户名和密码,否则您将无法在以后访问新数据库:

我们现在开始实际上用ArangoDB做一些事情。

第6步 - 使用arangosh执行CRUD操作

我们暂时退出Web界面并返回到arangosh命令行界面以涵盖ArangoDB中的基本CRUD操作。稍后我们将再次在Web界面中介绍相同的操作,但在shell中执行此操作有助于我们更好地理解工作原理。

要继续,请返回服务器的命令行。使用您的用户名和密码连接到新数据库music_library

代码语言:javascript
复制
arangosh --server.database music_library --server.username sammy --server.password password

创建文档集合

如果您来自关系数据库背景,则Collection是ArangoDB等效于SQL数据库中的表。我们将创建一个集合来存储我们音乐库中的歌曲:

代码语言:javascript
复制
db._createDocumentCollection('songs')

ArangoDB提供了一系列管理集合的方法。目前大多数都不太有趣,但是当你进一步进入ArangoDB时,请看看它们。目前,我们将专注于CRUD操作(创建,读取,更新和删除) - 即如何将实际数据输入和输出数据库。

创建文档

在基于SQL的数据库中有行的地方,ArangoDB有文档。ArangoDB中的文档是JSON对象。每个文档与集合相关联,并有三个核心属性:_id_rev,和_key

文档在数据库中由其文档句柄唯一标识,该文档句柄由集合了名称和_key/分隔而成。文档句柄存储在文档的字段_id中。无论是_key还是_id都类似于在关系数据库中的主键。

注意:如果您自己未指定内容,ArangoDB将为每个文档创建一个_key。您可以根据需要指定自定义_key,但需要确保它是唯一的。在本教程中,我们将_key明确设置,以便更轻松地复制和粘贴示例。

让我们将第一个文档添加到songs集合中:

代码语言:javascript
复制
db.songs.save(
{ title: "Immigrant Song", album: "Led Zeppelin III", artist: "Led Zeppelin", year: 1970, length: 143, _key: "immigrant_song" }
)
​
代码语言:javascript
复制
{ 
  "error" : false, 
  "_id" : "songs/immigrant_song", 
  "_rev" : "11295857653", 
  "_key" : "immigrant_song" 
}

db对象将所有集合保存为属性。每个集合都提供与该集合中的文档进行交互的功能。save函数接受任何JSON对象并将其作为文档存储在集合中,返回上述核心属性以及是否发生了错误。每个操作的返回也是一个JSON对象。

为了后续操作,我们需要更多的文件。只需复制并粘贴下一个代码段,即可向数据库添加更多条目:

代码语言:javascript
复制
db.songs.save(
{album: "Led Zeppelin III", title: "Friends", artist: "Led Zeppelin", year: 1970, length: 235, _key: "friends"}
);
​
db.songs.save(
{album: "Led Zeppelin III", title: "Celebration Day", artist: "Led Zeppelin", year: 1970, length: 209, _key: "celebration_day"}
);
​
db.songs.save(
{album: "Led Zeppelin III", title: "Since I've Been Loving You", artist: "Led Zeppelin", year: 1970, length: 445, _key: "since_i_ve_been_loving_you"}
);
​
db.songs.save(
{album: "Led Zeppelin III", title: "Out On the Tiles", artist: "Led Zeppelin", year: 1970, length: 244, _key: "out_on_the_tiles"}
);
​
db.songs.save(
{album: "Led Zeppelin III", title: "Gallows Pole", artist: "Led Zeppelin", year: 1970, length: 298, _key: "gallows_pole"}
);
​
db.songs.save(
{album: "Led Zeppelin III", title: "Tangerine", artist: "Led Zeppelin", year: 1970, length: 192, _key: "tangerine"}
);
​
db.songs.save(
{album: "Led Zeppelin III", title: "That's the Way", artist: "Led Zeppelin", year: 1970, length: 338, _key: "that_s_the_way"}
);
​
db.songs.save(
{album: "Led Zeppelin III", title: "Bron-Y-Aur Stomp", artist: "Led Zeppelin", year: 1970, length: 260, _key: "bron_y_aur_stomp"}
);
​
db.songs.save(
{album: "Led Zeppelin III", title: "Hats Off to (Roy) Harper", artist: "Led Zeppelin", year: 1970, length: 221, _key: "hats_off_to_roy_harper"}
);

阅读文件

要检索文档,您可以使用文档句柄或_key。只有在不自行查看集合时才需要使用文档句柄。有了一个集合,你可以使用document功能:

代码语言:javascript
复制
db.songs.document('immigrant_song');
代码语言:javascript
复制
{ 
  "year" : 1970, 
  "length" : 143, 
  "title" : "Immigrant Song", 
  "album" : "Led Zeppelin III", 
  "artist" : "Led Zeppelin", 
  "_id" : "songs/immigrant_song", 
  "_rev" : "11295857653", 
  "_key" : "immigrant_song" 
}

既然我们可以创建和阅读文档,我们将研究如何更改它们:

更新文件

在更新数据时,您有两种选择:replaceupdate

replace函数:即使您提供完全不同的属性,该函数也会用新的文档替换整个文档。

update函数:该函数只是通过将文档与给定属性合并来修补文档。让我们先尝试一个破坏性较小的update,在这里我们先更新其中一首歌的genre

代码语言:javascript
复制
db.songs.update("songs/immigrant_song",
​
{ genre: "Hard Rock" }
​
);

我们来看看更新的歌曲条目:

代码语言:javascript
复制
db.songs.document("songs/immigrant_song");
代码语言:javascript
复制
{ 
  "year" : 1970, 
  "length" : 143, 
  "title" : "Immigrant Song", 
  "album" : "Led Zeppelin III", 
  "artist" : "Led Zeppelin", 
  "genre" : "Hard Rock", 
  "_id" : "songs/immigrant_song", 
  "_rev" : "11421424629", 
  "_key" : "immigrant_song" 
}

当您拥有大型文档并且只需要更新其一小部分属性时,update功能特别有用。

相反,在函数中使用与 replace 相同的JSON 会破坏您的数据。

代码语言:javascript
复制
db.songs.replace("songs/immigrant_song",

{ genre: "Hard Rock" }

);

立即查看更新的歌曲:

代码语言:javascript
复制
db.songs.document("songs/immigrant_song")

如您所见,原始数据已从文档中删除:

代码语言:javascript
复制
{ 
  "genre" : "Hard Rock", 
  "_id" : "songs/immigrant_song", 
  "_rev" : "11495939061", 
  "_key" : "immigrant_song" 
}

删除文档

要从集合中删除文档,请使用文档句柄调用remove函数:

代码语言:javascript
复制
db.songs.remove("songs/immigrant_song")

虽然arangoshshell是一个很棒的工具,但是探索ArangoDB的其他功能很麻烦。接下来,我们将研究内置的Web界面,以进一步深入了解其功能。

步骤7 - 使用Web界面执行CRUD操作

我们已经看到了如何再arangosh上处理文档,现在我们返回到Web界面。在您的浏览器上访问http://your_server_ip:8529/_db/music_library

创建文档集合

单击顶部导航栏中的 集合选项卡。

您可以看到我们从命令行添加的现有集合songs; 如果您愿意,可以随意点击它并查看条目。

在主集合页面中,单击 添加集合按钮。

既然我们已经有了songs,我们将添加一个albums集合。输入albums作为名称新集合是弹出的对话框。默认类型Document很好。

单击 保存,您应该在页面上看到两个集合。

点击该albums集合。您将看到一个空集合:

创建文档

单击右上角的+号以添加文档。_key的信息需要先填写。输入led_zeppelin_III作为关键字。

接下来是一个表单,您可以在其中编辑文档的内容。有一种添加名为Tree的属性的图形方式,但是现在,通过从Tree下拉菜单中选择它来切换到Code视图:

请将以下JSON复制并粘贴到编辑器区域(确保只使用一组花括号):

代码语言:javascript
复制
{
"name": "Led Zeppelin III",
"release_date": "1970-10-05",
"producer": "Jimmy Page",
"label": "Atlantic",
"length": 2584
}

请注意,在此模式下引用密钥是必需的。完成后,点击保存按钮。页面应该闪烁绿色片刻以指示成功保存。

阅读文件

保存新文档后,您需要手动导航回集合页面。

如果单击albums集合,您将看到新条目。

更新文件

要编辑文档的内容,只需在文档概述中单击要编辑的行。您将看到与创建新文档时相同的编辑器。

删除文档

删除文档就像按下每个文档行末尾的-图标一样简单。出现提示时确认删除。

此外,特定集合的集合概述页面允许您导出和导入数据,管理索引以及过滤文档。

如前所述,Web界面有很多可供选择。涵盖每个功能都超出了本教程,因此您可以自己探索其他功能。我们将深入研究本教程中的另一个功能:AQL编辑器。

第8步 - 使用AQL查询数据

正如在介绍中提到的,ArangoDB带有一种称为AQL的完整查询语言。

要在Web界面中与AQL交互,请单击顶部导航中的AQL编辑器选项卡。您将看到一个空白的编辑器。

要在编辑器和结果视图之间切换,请使用右上角的查询结果选项卡:

编辑器具有语法突出显示,撤消/重做功能和查询保存功能。以下部分将探讨AQL的一些功能。

AQL基础知识

AQL是一种声明性语言,这意味着查询表达应该实现的结果,但不表示应该如何实现。它允许查询数据,但也可以修改数据。两种方法可以组合以实现复杂的任务。

在AQL中读取和修改查询完全符合ACID标准。操作将全部完成或根本不完成。即使读取数据也会在数据的一致快照上发生。

我们再次开始创建数据。让我们为我们的songs收藏添加更多歌曲。只需复制并粘贴以下查询:

代码语言:javascript
复制
FOR song IN [

{ album: "Led Zeppelin", title: "Good Times Bad Times", artist: "Led Zeppelin", length: 166, year: 1969, _key: "good_times_bad_times" }

,

{ album: "Led Zeppelin", title: "Dazed and Confused", artist: "Led Zeppelin", length: 388, year: 1969, _key: "dazed_and_confused" }

,

{ album: "Led Zeppelin", title: "Communication Breakdown", artist: "Led Zeppelin", length: 150, year: 1969, _key: "communication_breakdown" }

]

INSERT song IN songs

单击提交按钮。

此查询已经是AQL如何工作的一个很好的示例:您使用FOR遍历每个文档列表并对其执行操作。该列表可以是包含JSON对象的数组或数据库中的任何集合。操作包括过滤,修改,选择更多文档,创建新结构,或(如本示例中)将文档插入数据库。实际上,AQL也支持所有CRUD操作。

要获得数据库中所有歌曲的概述,请运行以下查询。它相当于基于SQL的数据库的SELECT * FROM songs(因为编辑器会记住上一个查询,您应该单击垃圾桶图标以清除编辑器):

代码语言:javascript
复制
FOR song IN songs RETURN song

现在,您将在文本字段中看到歌曲数据库中的所有条目。返回查询选项卡,再次清除编辑器。

另一个例子涉及对播放时间超过三分钟的歌曲进行基本过滤:

代码语言:javascript
复制
FOR song IN songs

FILTER song.length > 180

RETURN song

结果显示在编辑器的结果选项卡中:

复杂的AQL示例

AQL 为所有支持的数据类型提供了一组函数,甚至允许添加新函数。结合在查询中分配变量的能力,您可以构建非常复杂的构造。这使您可以将数据密集型操作移近数据本身,而不是在客户端上执行它们。为了说明这一点,我们将格式化歌曲的持续时间为mm:ss,以使其为用户很好地阅读:

代码语言:javascript
复制
FOR song IN songs

FILTER song.length > 180

LET minutes = FLOOR(song.length / 60)

LET seconds = song.length % 60

RETURN

{ title: song.title, duration: CONCAT_SEPARATOR(':', minutes, seconds) }

这次我们将只返回歌曲标题和持续时间。RETURN允许您创建一个新的JSON对象返回为每个输入文件。

AQL是具有许多功能的复杂语言。但还有一个值得一提的功能,特别是在NoSQL数据库的环境中:加入。

加入AQL

使用文档存储作为数据库有几个含义。您应该以与使用关系数据库时不同的方式对数据建模。

在文档存储中,您可以嵌入数据,否则这些数据将被建模为关系,但这种方法并不总是可行的。有些情况下,关系更有意义。如果没有让数据库执行所需连接的能力,您最终将加入客户端上的数据,或者对数据模型进行非规范化并嵌入子文档。这对于复杂和大型数据集尤其成问题。

那么,我们来做吧。

为了说明此功能,我们将引用albums集合来替换歌曲的albums属性。我们之前已经创建了专辑Led Zeppelin III作为文档。如果您在前面的示例中删除了相册,请返回并重新添加相册。

这个查询将成为诀窍:

代码语言:javascript
复制
FOR album IN albums

FOR song IN songs

FILTER song.album == album.name

LET song_with_album_ref = MERGE(UNSET(song, 'album'),

{ album_key: album._key }

)

REPLACE song WITH song_with_album_ref IN songs

我们首先遍历所有专辑,然后查找与此专辑相关联的所有歌曲。下一步是创建一个新的文件,它包含了album_key属性,UNSETalbum属性。我们将使用REPLACE而不是UPDATE更新歌曲文档。这是可能的,因为我们之前创建了一个新的歌曲文档。

完成此数据迁移后,我们现在可以将相册文档保存在一个位置。在获取歌曲数据时,我们可以使用连接将专辑名称再次添加到歌曲文档中:

代码语言:javascript
复制
FOR song IN songs

FOR album IN albums

FILTER album._key == song.album_key

RETURN MERGE(song,

{ album: album.name }

)

我们几乎没有弄清楚AQL可以实现的目标,但你应该对可能的事情留下好印象。

(可选)步骤9 - 进行备份

将ArangoDB数据库投入生产后,您应该开始考虑备份。不过,在此之前建立备份是一种很好的做法。

(可选)步骤10 - 升级

当发布新版本的ArangoDB时,它将通过配置的软件包存储库发布。要安装最新版本,首先需要更新存储库索引:

代码语言:javascript
复制
sudo apt-get update

现在停止数据库:

代码语言:javascript
复制
sudo service arangodb stop

将其更新到最新版本:

代码语言:javascript
复制
sudo apt-get install arangodb

注意:安装更新后,系统会尝试启动arangodb服务。这可能会失败,因为需要升级数据库文件。这是可以预料的。

您可能需要自己升级数据库文件:

代码语言:javascript
复制
sudo service arangodb upgrade

之后,像往常一样启动服务器:

代码语言:javascript
复制
sudo service arangodb start

使用Foxx应用程序扩展ArangoDB

在我们完成之前,还有一件值得一提的事情:由于ArangoDB有一个集成的V8引擎来处理所有JavaScript并且内置了HTTP服务器,我们可以使用自定义端点扩展现有的HTTP API。此功能称为Foxx。

Foxx是一个使用ArangoDB构建具有持久数据的自定义微服务的框架。Foxx应用程序是用JavaScript编写的,并在ArangoDB的V8上下文中运行。该应用程序可以直接访问本机JavaScript接口,因此无需任何HTTP往返即可访问数据。Foxx提供了一个最小的框架,在Sinatra for Ruby或Flask for Python的意义上。您编写控制器来处理传入的请求并在模型中实现业务逻辑。

Foxx应用程序可以通过Web界面进行管理,并且可以像任何其他应用程序一样进行开发。您可以将它们置于版本控制之下,甚至可以直接从Git存储库中部署它们。由于它们只是JavaScript,因此单元测试非常简单。对于简单的用例,它们很像关系数据库系统中的存储过程,但Foxx代码更容易维护和测试。

使用Foxx应用程序作为存储过程只是一个开始。想象一下,您有多个共享某些业务逻辑的应用程序。使用Foxx,您可以将此业务逻辑更接近数据,从而加快处理速度并降低在组件之间分配共享实现的复杂性。将ArangoDB作为集群运行甚至可以在集群中的每个成员上提供Foxx应用程序。

Foxx甚至可以使用整个Web应用程序。使用诸如Angular或Ember之类的前端框架允许您完全从数据库运行应用程序。不需要额外的基础设施。在生产环境中,您最终会将Nginx或类似物放在ArangoDB之前。ArangoDB附带了一些提供常用功能的Foxx应用程序,例如身份验证和会话存储。如果不依赖于HTTP功能,您甚至可以使用npm包。

结论

ArangoDB是一个功能强大的数据库,具有广泛的支持用例。它维护得很好,并且有很好的文档。由于每个主要操作系统都有软件包,因此很容易入门。Web界面降低了探索功能的负担,如果您来自关系背景,使用AQL与使用SQL没有什么不同。

可以选择使用JavaScript应用程序和图形功能扩展数据库,使ArangoDB成为一个完整的软件包,以使应用程序启动和发展。

到目前为止,我们已经分享了ArangoDB的大局。

作为后续步骤,我们建议如下:

  • 对于任何实际应用程序,您将与HTTP API进行交互。我们没有在这里介绍它,因为你很可能不会直接使用它,而是通过许多本地语言驱动程序之一。
  • ArangoDB中的数据交互大部分时间都是通过AQL完成的。如果要在生产环境中使用ArangoDB,必须习惯它。
  • ArangoDB不仅是一个文档存储,还具有非常强大的图形功能。它允许您将数据建模为有向图中的顶点。可以将关系建模为这些顶点之间的边而不是使用_key引用。以这种方式对数据建模可以比SQL数据库中使用的关系方法更有好处。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
    • 核心概念
    • 准备
    • 第1步 - 安装ArangoDB
    • 第2步 - 使用arangosh访问命令行
    • 第3步 - 添加数据库用户
    • 第4步 - 配置Web界面
      • 启用身份验证
        • 将ArangoDB绑定到公共网络接口
        • 步骤5 - 访问ArangoDB Web界面
        • 第6步 - 使用arangosh执行CRUD操作
          • 创建文档集合
            • 创建文档
              • 阅读文件
                • 更新文件
                  • 删除文档
                  • 步骤7 - 使用Web界面执行CRUD操作
                    • 创建文档集合
                      • 创建文档
                        • 阅读文件
                          • 更新文件
                            • 删除文档
                            • 第8步 - 使用AQL查询数据
                              • AQL基础知识
                                • 复杂的AQL示例
                                  • 加入AQL
                                  • (可选)步骤9 - 进行备份
                                  • (可选)步骤10 - 升级
                                  • 使用Foxx应用程序扩展ArangoDB
                                  • 结论
                                  相关产品与服务
                                  多因子身份认证
                                  多因子身份认证(Multi-factor Authentication Service,MFAS)的目的是建立一个多层次的防御体系,通过结合两种或三种认证因子(基于记忆的/基于持有物的/基于生物特征的认证因子)验证访问者的身份,使系统或资源更加安全。攻击者即使破解单一因子(如口令、人脸),应用的安全依然可以得到保障。
                                  领券
                                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档