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

近年来,非关系型数据库已经越来越流行因为开发商已经开始寻求解决方案,以更紧密地解决他们的具体问题。 OrientDB是一个的NoSQL数据库整合SQL查询语法基于文档的存储和图形映射关系。在本文中,我们将安装并探索这个软件的基本用法。

介绍


在数据库世界中,存储数据的标准选择传统上是关系数据库管理系统,或简称为RDBMS。 虽然MySQL,PostgreSQL和MariaDB等关系系统是强大的,是某些情况下的最佳选择,但它们并不总是合适的。

最近,非关系数据库,通常称为NoSQL数据库,已经出现了人气的激增。 这些通常更轻,限制更少,并且具有优异的扩展的潜力。 MongoDB,Riak或Cassandra等热门示例使用轻量级键值存储,列节或灵活文档存储数据。

不太常见的策略是一个图形数据库,其形成与对象之间的轻量级线和指针之间的关系。OrientDB是一个混合数据库,它可以表现得像任一个文件或一个图形数据库。 这是非常灵活的,可以导致非常有效,但复杂的相互作用。

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

安装OrientDB


OrientDB不能从Ubuntu的默认仓库,所以我们必须从项目的GitHub页面。 然而,在我们这样做之前,我们应该安装一些必备软件:

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

该过程完成后,您可以从GitHub页面克隆最新的快照。 我们将在我们的主目录中:

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

这将在您的主目录中创建一个名为“orientdb”的目录。 进入这个目录,然后使用Apache ant ,我们安装了构建软件工具:

cd orientdb
ant clean install

在OrientDB完成构建之后,您将在您的主目录下有一个名为“releases”的新目录。 我们有一个版本化文件夹中的数据库系统:

cd ../releases/orientdb*

切换到bin目录并通过键入以下命令启动服务器:

cd bin
./server.sh &

这将在后台在您的系统上开始运行服务器。 如果需要杀死服务器实例,您可以使用ps搜索pid,然后杀死进程:

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

启动时,服务器公开两个单独的端口,您可以使用这些端口取决于您要使用的协议:

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

连接到数据库


我们将连接我们在终端中开始的数据库,以了解OrientDB如何操作。

我们可以从我们启动服务器的同一个“bin”目录执行此操作,但首先,我们必须获取默认密码,以便我们可以连接到数据库:

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

在此文件中,搜索“用户”部分。 您应该看到一个关联名称为“root”的条目。 还将有一个非常长的密码。 将此密码复制到您可以立即粘贴它的位置。

获得信息后关闭文件。

在bin目录中,通过键入以下命令启动OrientDB控制台:

./console.sh

您将被删除到OrientDB提示符,您可以在其中与软件进行交互。

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

connect remote:localhost root copied_password

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

list databases

如果成功的话,你应该看到一个GratefulDeadConcerts数据库,该数据库用作OrientDB样本数据库。 如果没有,您应该看到此警告:

Not 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 ,以及:

connect remote:localhost/GratefulDeadConcerts admin admin

类,集群,图形和文档


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

因为它的混合设计,OrientDB可以组织其记录成文件或图形。 文档是,在大多数情况下,因为它们是在其他NoSQL系统相同。 它们是简单的信息块,没有预定义的字段集,可以根据需要进行改变和变形。

都是存储的另一种形式,在以不同的方式组织数据。 图形对于形成不同数据点之间的关系模式是有用的。 每个数据点称为顶点,每个关系称为边缘。 基本上,它只是一个链接,标签描述的关系,可以用来跟踪和查找不同的不同对象之间的连接。

借用面向对象的程序设计语言,OrientDB将文档组织成类。 ,在OrientDB,是组织集使用某些约束和规则数据的一种方式。 它基本上定义了广义的文档格式。

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

通常,默认情况下,OrientDB将为每个类创建一个集群,并在该集群中存储该类的所有文档。 然而,这里有灵活性,你可以有一个集群组两个相关的类文档在一起,或者你可以有两个单独的集群服务一个类。

使用文档


我们将首先探讨OrientDB如何使用文档,因为这可能是一种更常见的方式来组织数据给大多数人。

而不是从文档本身开始,但是,我们将通过检查类和集群结构来获得它们,以便我们有一些上下文用于讨论。

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

classes

CLASSES:
----------------------------------------------+------------------------------------+------------+----------------+
 NAME                                         | SUPERCLASS                         | CLUSTERS   | RECORDS        |
----------------------------------------------+------------------------------------+------------+----------------+
 E                                            |                                    | 10         |              0 |
 Eat                                          | E                                  | 14         |              0 |
 Friend                                       | E                                  | 15         |              0 |
. . .

你可以看到许多不同的类。 前面带有“O”的是OrientDB内部类,可用于获取有关数据库和系统本身的信息。 其他重要的类是“V”类,意味着顶点,“E”意味着边缘,它们用于图形功能。

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

create class New_class

然后,您可以通过键入以下内容将字段添加到文档:

create property New_class.field_name data_type

例如,如果我们想创建一个名为“vegetables”的类并开始定义一些重要的属性,我们可以键入:

create class Vegetable
create property Vegetable.name string
create property Vegetable.color string
create property Vegetable.quantity integer
create property Vegetable.good_on_pizza boolean

我们可以通过键入以下内容来查看包括与Vegetable类关联的属性的信息:

info class Vegetable

要查看类的成员,可以使用browse。 我们可以使用这种语法:

browse class class_name

以类似的方式,您只需键入:

clusters

如你所见,这个列表与类列表几乎相同,因为默认情况下,OrientDB为每个新类创建一个集群。 如果类和集群之间存在差异,我们也可以按集群浏览:

browse cluster cluster_name

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

存储在系统中的每个记录都有自己的RecordID。 该值仅仅是数据所存储的集群,后面是存储它的顺序项目编号。 例如,集群9中的第一个记录将被赋予recordID#9:0。 第二个将被给予#9:1的recordID。

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

display record record_number

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

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

load record recordID

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

在具有SQL语法的文档上操作


我们可以以与关系数据库大致相同的方式与文档交互。 这被实现为一个设计选择,以减少通用数据库交互的学习曲线。

例如,要查询数据,可以使用select语句。 如果我们想得到整个记录,我们不需要通配符:

select from class_name

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

select from cluster:cluster_name

另一个选项是从recordID中选择:

select from recordID

我们可以使用“where”和“order”来限制和排序数据:

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

还有很多其他方法可以查询数据,其中大多数遵循SQL语法。

使用图形


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

OrientDB可以在图形上下文中创建记录。 我们将数据点定位为顶点。 这些是可以通过“边缘”连接的独立数据片段,“边缘”是在两个不相关的片段之间绘制连接的基本指针。

我们可以通过扩展名为“V”的默认顶点类来创建顶点类:

create class Animal extends V

这将创建一个类Animal。 这个类的每个成员表示一个点,我们可以连接到类的其他成员,或其他顶点类的其他成员。

让我们创建一个食物类和一个环境类,以便我们可以绘制一些连接。

create class Food extends V
create class Environment extends V

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

create class Eat extends E
create class Live extends E

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

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

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

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

因为我们每个中只有一个记录,所以我们实际上可以省略where子句:

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

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

其他两个部分都有“in”连接,指定从另一个元素到这些元素有一个关系。

我们可以探索使用标准选择查询的组合和调用的函数这些关系expand ,它可以提供更深入的信息。 您可以指定in连接,out连接或两者:

select expand( out() ) from Animal

----+-----+------+------+-------
#   |@RID |name  |in_Eat|in_Live

----+-----+------+------+-------
0   |#18:0|Carrot|#17:0 |null   
1   |#19:0|Forest|null  |#17:0  

----+-----+------+------+-------

我们可以使用这些来形成复杂的网络,解释不同数据之间的关系。 使用边缘和链路而不是传统关系装置来进行这些连接的优点在于,返回相关数据要快得多,并且更便宜。

您可以创建许多不同的连接,而不会对查询增加显着的开销。

结论


您现在应该有一个很好的了解如何使用OrientDB数据库系统。 如你所见,它混合了来自不同系统的许多元素。 它保持SQL选择查询语法,同时利用传统的NoSQL文档存储,并构建图形关系行为。

这只是一个简单的介绍,旨在介绍一些OrientDB可以操作数据的方式。 项目的文档是一个伟大的资源,以建立这个介绍。

作者:Justin Ellingwood