如何在 Ubuntu 12.04 VPS 上安装和使用 OrientDB

金钱(警告)

** 状态:** 被贬值

如果您目前正在运行运行 Ubuntu 12.04 的服务器,我们强烈建议升级或迁移到支持的 Ubuntu 版本:

** 原因:** Ubuntu 12.04 已于 2017 年 4 月 28 日到期(EOL)并且不再收到安全补丁或更新。

** 相反,请参见:** 本指南可能仍然有用作为参考,但可能不会在其他Ubuntu版本上工作. 如果可用,我们强烈建议使用为您正在使用的Ubuntu版本撰写的指南。

介绍


在数据库世界中,存储数据的标准选择传统上是关系数据库管理系统,或简称RDBMS,而像MySQL、PostgreSQL和MariaDB这样的关系系统是强大的,对于某些情况来说是最好的选择,但它们并不总是合适的。

最近,非关系式数据库,通常被称为NoSQL数据库,在受欢迎程度上有所增加. 这些数据库往往更轻,更不具限制性,并且有很好的扩展潜力。 像MongoDB,Riak或Cassandra这样的流行的例子使用轻量级的关键值存储,列部分或灵活的文档来存储数据。

一个不太常见的策略是图形数据库,它通过轻量级线条和指针在对象之间形成关系。 OrientDB 是一种混合数据库,可以像文档或图形数据库一样行事。

在本指南中,我们将安装和探索OrientDB在Ubuntu 12.04系统上的一些基本用途。

安装OrientDB


OrientDB 无法从 Ubuntu 的默认存储库中获取,因此我们必须从项目的 GitHub 页面获取它。

1sudo apt-get update
2sudo apt-get install openjdk-7-jdk git ant

一旦这个过程完成,你可以从GitHub页面克隆最新的快照,我们将在我们的主目录中这样做:

1cd
2git clone https://github.com/orientechnologies/orientdb.git

这将在您的主目录中创建一个名为orientdb的目录. 输入此目录,然后使用我们安装的Apacheant工具来构建软件:

1cd orientdb
2ant clean install

在 OrientDB 完成建造后,您将在您的主目录下有一个名为发布的新目录。

1cd ../releases/orientdb*

转到 Bin 目录并通过键入启动服务器:

1cd bin
2./server.sh &

如果您需要杀死服务器实例,您可以用 ps 搜索 pid,然后杀死过程:

1ps aux | grep server.sh | grep -v grep | awk '{ print $2; }' | xargs kill

启动时,服务器会暴露出两个单独的端口,您可以根据您想要使用的协议来使用:

  • 2424 :此端口被打开并用于对数据库进行二进制访问,这意味着您可以使用与网络二进制协议操作的客户端和驱动程序或数据库控制台通过该端口与数据库进行交互。
  • 2480 :此端口被打开并通过 RESTful API 用于 HTTP 交互。

连接到数据库


我们将连接到我们在终端启动的数据库,了解OrientDB的运作方式。

我们可以从我们开始服务器的相同的bin目录中做到这一点,但首先,我们必须获得默认密码,以便我们可以连接到数据库:

1nano ../config/orientdb-server-config.xml

在此文件中,搜索用户部分. 您应该看到一个与相关的名称的条目。 还会有一个非常长的密码. 复制此密码在某个地方,您可以暂时粘贴它。

一旦你有信息,关闭文件。

在 Bin 目录中,通过键入开始 OrientDB 控制台:

1./console.sh

您将被放入OrientDB提示,在那里您可以与软件进行交互。

首先,我们需要连接到我们启动的服务器实例,我们可以通过键入:

connect remote:localhost root copied_password

您可以通过尝试列出数据库来测试服务器是否可用:

1list databases

如果成功,你应该看到一个‘GratefulDeadConcerts’数据库,它被用作OrientDB的样本数据库。

1Not connected to the Server instance. You've to connect to the Server using server's credentials (look at orientdb-*server-config.xml file)

您现在应该连接到服务器,并准备给它命令。

连接到我们使用的服务器连接类似的语法的数据库. 这个数据库也有一个用户的admin和一个密码的admin:

1connect remote:localhost/GratefulDeadConcerts admin admin

类、集群、图表和文档


OrientDB 使用各种类别在多个不同的层次上组织其信息。

由于其混合设计,OrientDB可以将其记录组织成文档或图表。 文档 在大多数情况下与其他NoSQL系统相同。

图表 是另一种形式的存储,以不同的方式组织数据。图表有助于在不同的数据点之间形成关系模式. 数据的每个点被称为顶点,每个关系被称为边缘。

借用面向对象的编程语言,OrientDB 将文档组织成类. 在OrientDB 中,一个 是使用某些限制和规则来组织数据集的一种方式。

集群是以有组织的方式存储记录组的一种方法,类似于关系数据库中的表,因此将集群视为数据集更容易,因为集群可以包含不同类型的文档。

通常,默认情况下,OrientDB 将为每个类创建一个集群,并将该类的所有文档存储在该单个集群中。

与文件合作


我们将首先探讨OrientDB如何与文档合作,因为这对大多数人来说也许是更熟悉的数据组织方式。

然而,而不是从文件本身开始,我们将通过检查类和群集结构来获得它们,以便我们为我们的讨论提供一些背景。

我们可以通过键入查看现有类:

1classes

1CLASSES:
2----------------------------------------------+------------------------------------+------------+----------------+
3 NAME                                         | SUPERCLASS                         | CLUSTERS   | RECORDS        |
4----------------------------------------------+------------------------------------+------------+----------------+
5 E                                            |                                    | 10         |              0 |
6 Eat                                          | E                                  | 14         |              0 |
7 Friend                                       | E                                  | 15         |              0 |
8. . .

您可以看到许多不同的类. 以O为前方的类是OrientDB内部类,可以用来获取数据库和系统本身的信息。 其他重要的类是V类,意思是顶端,和E意思是边缘,用于图形功能。

我们可以通过键入创建一个新的类:

create class New_class

然后,您可以通过键入到文档中添加字段:

create property New_class.field_name data_type

例如,如果我们想创建一个名为蔬菜的类,并开始定义一些重要的属性,我们可以输入以下内容:

1create class Vegetable
2create property Vegetable.name string
3create property Vegetable.color string
4create property Vegetable.quantity integer
5create property Vegetable.good_on_pizza boolean

我们可以通过键入以下方式查看包括与蔬菜类别相关的属性等信息:

1info class Vegetable

要查看班级的成员,您可以使用浏览. 我们可以使用这个语法:

browse class class_name

类似的方式,您可以通过键入查看集群:

1clusters

正如你所看到的,这个列表与类列表大致相同,因为 OrientDB 默认情况下为每个新类创建了一个群集,如果类和群集之间存在差异,我们也可以通过群集浏览:

browse cluster cluster_name

当我们在我们的浏览中找到一个我们想要更多信息的记录时,我们可以通过引用它的 RecordID 来显示它。

每个存储在系统中的记录都有自己的 RecordID. 这个值仅仅是数据存储的集群,然后是数据存储的序列项目号。

您可以使用此语法查看记录:

display record record_number

这将引用最近的浏览操作,所以它不使用完整的记录ID,只是显示序列的最后一个数字。

要加载一个记录,我们可以键入:

load record recordID

在这种情况下,我们必须指定完整的记录号。

使用 SQL Syntax 处理文档


我们可以以与关系数据库相同的方式与文档进行交互,这是作为设计选择来减少常见数据库交互的学习曲线的实现。

例如,要查询数据,您可以使用一个选择陈述. 如果我们想要获得整个记录,我们不需要一张野卡:

select from class_name

要从集群中选择,我们可以使用:

select from cluster:cluster_name

另一个选项是从记录ID 中选择:

select from recordID

我们可以使用哪里订单来限制和排序数据:

1select from OIdentity where name = 'admin' order by rules

您可以查询数据的其他几种方法,其中大多数都遵循 SQL 语法。

与 Graphs 合作


处理记录的一种不太常见的方式,但它为OrientDB增加了大量的灵活性,是图表关系行为。

OrientDB 可以在图形背景中创建记录. 我们将数据点定位为顶点. 这些是可以通过边缘连接的独立数据片,这些是基本的指针,在两个无关的片段之间建立连接。

我们可以通过扩展被称为V的默认vertex类来创建vertex类:

1create class Animal extends V

这将创建一个名为动物的类,该类的每个成员代表一个点,我们可以连接到该类的其他成员或其他顶层类的其他成员。

让我们创建一个食物类和一个环境类,这样我们就可以建立一些连接。

1create class Food extends V
2create class Environment extends V

现在我们有3个顶层类,我们也应该创建一些关系,这些关系被称为边缘,它们基本上描述了这两个部分是如何相关的:

1create class Eat extends E
2create class Live extends E

让我们在每个成员中创建一个成员:

1create vertex Animal set name = 'Rabbit'
2create vertex Food set name = 'Carrot'
3create vertex Environment set name = 'Forest'

现在,我们需要将边缘应用到这些数据点来创建关系:

1create edge Eat from (select from Animal where name = 'Rabbit') to (select from Food where name = 'Carrot')

由于我们每个记录中只有一个记录,我们实际上可以放弃 where 条款:

1create edge Live from (select from Animal) to (select from Environment)

这些边缘连接创建线,指向连接的记录,例如,我们的兔子有两个线,将其连接到其他部分(食物和环境)。

另外两个部分各有的连接,指定了从另一个元素到这些元素的关系。

我们可以使用标准选择查询和名为扩展的函数组合来探索这些关系,这可以提供更深入的信息。

1select expand( out() ) from Animal

1----+-----+------+------+-------
2#   |@RID |name  |in_Eat|in_Live
3
4----+-----+------+------+-------
50   |#18:0|Carrot|#17:0 |null   
61   |#19:0|Forest|null  |#17:0  
7
8----+-----+------+------+-------

我们可以使用它们来形成复杂的网格,解释不同数据之间的关系,而使用边缘和链接进行这些连接的优点,而不是传统的关系手段,是返回相关数据的速度更快,成本更低。

您可以创建许多不同的连接,而无需为查询添加显着的额外内容。

结论


正如你所看到的,它将来自不同系统的许多元素混合在一起,同时利用传统的 NoSQL 文档存储来保持 SQL 选择查询语法,并构建图形关系行为。

这只是一个简短的介绍,旨在向您介绍OrientDB可以使用数据的一些方法,该项目的文档是从这个介绍中构建一个很好的资源。

By Justin Ellingwood
Published At
Categories with 技术
Tagged with
comments powered by Disqus