一种支持海量复杂数据关系运算的数据库—图数据库部署简介

1、背景

随着社交、电商、金融、零售、物联网等行业的快速发展,现实社会织起了了一张庞大而复杂的关系网,传统数据库在处理关系运算上显得越来越力不从心。大数据行业需要处理的数据之间的关系随数据量呈几何级数增长,亟需一种支持海量复杂数据关系运算的数据库,图数据库应运而生。

当前图数据库的种类也已经有很多,本文介绍的是原生类的代表之一的orientdb(另一个代表是neo4j)的部署,以便为后续的使用做好准备。

2、环境准备

  • 操作系统:Centos6.8
  • 内存:  8G(分布式部署时建议4G及以上,否则需要手动修改JVM配置)
  • JDK:  建议jdk8版本(3.0版本要求jdk8)
  • 环境变量:需配置JAVA_HOME、ORIENTDB_HOME (配置文件中有用到)
export JAVA_HOME=/usr/local/java
export PATH=$PATH:$JAVA_HOME/bin
export ORIENTDB_HOME=/usr/local/orientdb
export PATH=$PATH:$ORIENTDB_HOME/bin

创建orientdb用户。

#groupaddorientdb
#useradd-r-gorientdborientdb

OrientDB安装包下载:官网地址https://orientdb.com/。

3、单实例部署

(1)解压数据库安装包,并授权

企业版处理步骤:

tar-zxvforientdb-enterprise-2.2.37.tar.gz
ln-sorientdb-enterprise-2.2.37orientdb
chown-Rorientdb:orientdborientdb/
tar-zxvforientdb-3.0.10.tar.gz

社区版处理步骤:

与企业版不同的是如果下载的为社区版需将agent jar下载下来并拷贝至plugins目录下:

#创建软连接以便后续升级使用
ln-sorientdb-3.0.10orientdb
#授权
chown-Rorientdb:orientdborientdb/
#如果是下载的为社区版需将企业版agentjar包拷贝至plugins目录下
cpagent-3.0.10.jarorientdb/plugins

(2)修改bin目录下orientdb.sh

ORIENTDB_DIR="/usr/local/orientdb"
ORIENTDB_USER="orientdb"

(3)修改bin目录下orientdb.service

User=orientdb
Group=orientdb
ExecStart=$ORIENTDB_HOME/bin/server.sh

(4)初始化启动

首次启动数据库使用server.sh,并在启动过程中提示配置root账号密码,如首次不采用此方式启动,则会随机生成root账号的密码。因此单实例启动时建议用该方式启动。

./server.sh

(5)文件属主确认

首次启动后会在databases目录下生成OSystem,如果该目录属主不是orientdb则需要手动修改为orientdb,否则下次启动时异常(报没有权限操作OSystem目录的错误)

(6)启动、关闭服务(也可以复制到/etc/init.d目录下,做成服务)

#启动
./orientdb.shstart
#状态
./orientdb.shstatus
#关闭
./orientdb.shstop

(7)进入控制台,进行数据库交互

./console.sh

4、分布式部署

分布式部署前几步操作同单实例情况(3.1-3.3),但后续操作不同。

(1)解压数据库安装包

tar -zxvf orientdb-enterprise-2.2.37.tar.gz

如果是下载的为社区版需将企业版agent jar包拷贝至plugins目录下。

tar-zxvforientdb-3.0.10.tar.gz
ln-sorientdb-3.0.10orientdb
cpagent-3.0.10.jarorientdb/plugins

(2)修改bin目录下orientdb.sh

ORIENTDB_DIR="/usr/local/orientdb"
ORIENTDB_USER="orientdb"

(3)修改bin目录下orientdb.service

User=orientdb
Group=orientdb
ExecStart=$ORIENTDB_HOME/bin/server.sh

(4)初始化启动

分布式部署的首次初始化启动数据库使用dserver.sh,并在启动过程中提示配置root账号密码,以及节点名称,节点名称在后续操作中需要用到。

./dserver.sh

(5)修改hazelcast.xml文件

配置TCP / IP模式机制,并添加对应节点信息,修改后主要配置信息如下:

<group>
<name>clusterName</name>
<password>clusterPassword</password>
</group>
<properties>
. . .
</properties>
<network>
<port auto-increment="false">2434</port>
<join>
<multicast enabled="false">
<multicast-group>235.1.1.1</multicast-group>
<multicast-port>2434</multicast-port>
</multicast>
<tcp-ip enabled="true">
<member>your_master_server_ip_1</member>
<member>your_master_server_ip_2</member>
<member>your_replica_server_ip</member>
</tcp-ip>
</join>
</network>

其中部分标签的含义如下:

<group> name :此元素定义集群的名称。你可以选择任何你喜欢的东西

<group> password :定义用于加密每个成员发送的广播消息加入群集的密码。在这里选择一个强大的密码。

<network> port :标识用于自动发现节点的端口。auto-increment属性指示机制从定义的端口开始,如果该端口正在使用,则继续尝试其他端口。通过将其设置为false,定义的端口将用于通信,如果端口已在使用中,则节点发现将失败。对于本文,该属性将被禁用。

<join>multicast enabled :组播元素用于定义IP组播参数。将不会使用IP多播,因此我们将忽略它们,可以将enabled属性设置为false。

<join> tcp-ip :用于定义与TCP / IP集群相关的参数。enabled属性用于启用它。

<join> <tcp-ip> member :定义集群的每个成员。还有其他方法来指定每个成员,但是我们将坚持指定每个成员的IP地址(每行一个)。

(6)修改orientdb-server-config.xml文件

其中NodeName参数的值是在第3.4步中配置的节点名。

. . .
<handler class="com.orientechnologies.orient.server.hazelcast.OHazelcastPlugin">
<parameters>
<parameter value="true" name="enabled"/>
<parameter value="${ORIENTDB_HOME}/config/default-distributed-db-config.json" na$
<parameter value="${ORIENTDB_HOME}/config/hazelcast.xml" name="configuration.haz$
<parameter value="orientdb_server_name_1" name="nodeName"/>
</parameters>
</handler>
. . .

(7)修改default-distributed-db-config.json文件

默认配置全部节点均为主节点,如配置其中部分节点为副本,则修改为如下情况。

其中新增replication ,hotAlignment。

{
"replication": true,
"hotAlignment" : true,
"autoDeploy": true,
"readQuorum": 1,
"writeQuorum": "majority",
"executionMode": "undefined",
"readYourWrites": true,
"newNodeStrategy": "static",
"servers": {
"orientdb_server_name_1": "master",
"orientdb_server_name_2": "master",
"orientdb_server_name_3": "replica"
},
...
}

autoDeploy :指定是否将数据库部署到集群中尚未拥有的新节点。

readQuorum :在读取操作上回复客户端之前需要一致的集群节点的响应次数。将其设置为“1”将禁用读取一致性。

writeQuorum :在写入操作时,在向客户端发送回复之前需要响应多少个节点。默认值为多数 ,它使用(N / 2)+ 1计算 ,其中N是集群中可用主节点的数量。在计算大多数时,不考虑复制节点。如果在仅具有两个主节点的群集中保留默认值,则如果其中一个节点关闭,则法定人数将永远不会形成。

executionMode :定义客户端的执行模式 – 同步或异步。默认值允许客户端决定。

readYourWrites :指定节点的响应是否计数达到写入定额。

newNodeStrategy :当新节点加入集群时会发生什么。使用默认值,节点将自动注册在服务器列表下。

hotAlignment :指定如果节点关闭然后重新联机,会发生什么。如果启用,则当节点脱机时,同步消息将保留在分布式队列中。当它回到在线时,通过轮询队列中的所有同步消息来启动同步阶段。

servers :用于指定集群中节点的角色(主节点或副本节点)。默认情况下,使用星号*表示服务器中的所有节点都是主节点。因为我们打算构建一个包含两个主器件和一个副本的集群,所以我们将通过指定每个节点的名称和集群中的角色来修改此参数进行匹配。

(8)启动各节点服务

启动时,注意启动顺序。启动的第一个服务器(即第一个加入集群)成为协调服务器 ,这是分布式操作启动的地方。如果希望特定服务器具有此角色,先启动该角色

./orientdb.sh  start

所有节点启动完毕后,日志中将有如下信息,其中含有主节点、副本集信息

结束语:

至此,OrientDB的单节点及分部署部署均已完成 。

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/258104.html<

(0)
管理的头像管理
上一篇2025-05-02 02:07
下一篇 2025-05-02 02:08

相关推荐

  • 高防服务器虚假防御怎么识别才准确,靠谱吗?

    识别高防服务器虚假防御,核心在于验证服务商是否具备真实的防御架构、独立的带宽资源以及合规的运营资质,而非轻信宣传数值,虚假防御的常见套路高防服务器市场的虚假防御手段层出不穷,本质是利用信息差和贪便宜心理,了解这些套路,是鉴伪的第一步,共享IP池,防御共用部分服务商将多个客户的服务器放置在同一IP段,使用同一个防……

    2026-07-26
    0
  • 个人站长选服务器有哪些避坑经验?,怎么选?

    个人站长选服务器,避坑的核心法则是紧盯服务商资质与自营能力,而非只盯价格或参数,配置陷阱:核心数背后的真实性能CPU主频与架构差异很多站长选购服务器时,第一眼就看核心数,8核、16核似乎很诱人,但实际踩坑后才发现,同一核心数下,不同主频和架构带来的性能差距极大,比如共享型实例的8核,往往跑不满持续负载,一旦遇到……

    2026-07-26
    0
  • 站群服务商跑路前常见征兆有哪些,怎么识别

    站群服务商跑路前,通常会出现客服响应失速、IP质量崩塌、价格突破底线、资质信息模糊、公司主体异动这五个关键征兆,任何一个都值得拉响警报,客服响应速度与专业度断崖式下降工单系统开始“装死”多数跑路案例中,服务商最先出问题的部门就是客服,你提交的工单从半天回复变成一天、两天,甚至直接石沉大海,技术问题得到的回答明显……

    2026-07-26
    0
  • 游戏高防服务器怎么选才不踩坑?,哪家好?

    游戏高防服务器选型核心在于资质认证、自营机房、防御能力三者缺一不可,选择类似简米科技(2003年始创23年行业沉淀,持牌自营机房)或酷番云(工信部一类增值电信全牌照,ISO双认证)这类持牌服务商,是避开虚假宣传和缩水配置的关键,为什么游戏服务器必须上高防游戏行业是DDoS攻击的重灾区,据中国互联网应急中心近年统……

    2026-07-26
    0
  • 站群服务器同机房IP的风险怎么规避,有哪些注意事项?

    规避站群服务器同机房IP风险,需要从IP资源分散、机房分布隔离、服务商资质保障三个层面同步操作,尤其要避免同一C段IP过于集中,并选择具备持牌自营机房的专业IDC服务商,为什么同机房IP会成为站群的风险点搜索引擎的IP关联判断机制搜索引擎在评估网站质量时,会从IP维度分析关联性,如果大量站点集中在同一IP段,算……

    2026-07-26
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注