Linux 服务器上安装 Virtuoso 数据库 并导入数据(超详细)

一、Virtuoso简介

(1) virtuoso数据库是一个高性能的rdf数据库,可支持百亿条三元组,支持sparql1.1语法查询。
(2) Virtuoso是一个图数据库,同时支持SparQL。

二、Virtuoso下载

开源版本的virtuoso数据库(以7.2.6为例),下载地址点击此处 ,然后下载第一个最大的压缩包即可!

download page

三、Virtuoso安装与启动

以我的linux服务器用户目录/home/spence为例:
my dirctory

1. 在当前用户目录新建目录virtuoso并进入该目录:

spence@main-server-8:~$ mkdir virtuoso
spence@main-server-8:~$ cd virtuoso
spence@main-server-8:~/virtuoso$

2. 将下载好的压缩包放入此目录并解压:

spence@main-server-8:~/virtuoso$ tar -zxvf virtuoso-opensource.x86_64-generic_glibc25-linux-gnu.tar.gz

解压成功后目录内容如下:
content

3. 进入virtuoso-opensource目录并配置:

进入virtuoso-opensource/database/目录:

spence@main-server-8:~/virtuoso$ cd virtuoso-opensource/database/

复制并重命名virtuoso.ini.samplevirtuoso.ini

spence@main-server-8:~/virtuoso/virtuoso-opensource/database$ cp virtuoso.ini.sample virtuoso.ini

4.使用vi命令配置用户环境变量

spence@main-server-8:~/virtuoso/virtuoso-opensource/database$ vi ~/.bashrc

然后加入以下语句,记得更改语句中用户路径为你自己的用户路径,即语句中的/home/spence

export VIRTUOSO_HOME=/home/spence/virtuoso/virtuoso-opensource
export PATH=.:${VIRTUOSO_HOME}/bin:$PATH

保存后退出,然后使用以下命令使环境变量配置生效:

spence@main-server-8:~/virtuoso/virtuoso-opensource/database$ source ~/.bashrc

5.启动Virtuoso服务

为了启动Virtuoso之后我们仍然能进行其它操作,此处我使用screen命令新开虚拟窗口,你也可以使用其它命令诸如nohup命令使得Virtuoso服务在后台运行。

spence@main-server-8:~/virtuoso/virtuoso-opensource/database$ screen -S vir

然后启动Virtuoso服务:

spence@main-server-8:~/virtuoso/virtuoso-opensource/database$ virtuoso-t -fd

出现以下内容说明服务启动成功!

success
*从日志信息可以看出此时服务运行于默认的8890端口(你也可以在前面的virtuoso.ini配置文件中设置运行端口)

服务启动后,你可以使用快捷键ctrl-A + ctrl-D返回主窗口(screen)进行其它操作。

6.查看Virtuoso可视化主界面

在本地打开浏览器,以Chrome浏览器为例,在浏览器url栏输入:服务器IP:8890即可,以我的服务器IP为10.10.10.8为例:

main page
看到这个界面的话,恭喜你,你成功配置并启动了Virtuoso服务!

四、数据导入

当然,对于我们使用Virtuoso数据库的开发者、研究者而言,只安装没什么稀奇的。接下来才是重头戏,我们需要把我们自己的数据导入到该数据库,并使用SparQL语句实现数据的查询。
(1) 注意,接下来的数据文件我均使用*.nt文件作为示例,其它RDF文件诸如*.ttl等导入操作相同。 以下为Virtuoso支持的数据格式:
support

(2) 首先,我们来看一下目前Virtuoso已有哪些Graph:点击可视化界面左上角的conductor按钮,然后使用默认账号用户名:dba 密码:dba进行登录。
login
(3) 登陆成功后依次点击:Linked Data -> Graphs -> Graphs 即可看到当前数据库中的所有Graphs,可以理解为图数据表,内容如下:
data table

1.可视化界面导入数据

在这个可视化界面,我们可以直接导入数据,但前提是这个数据文件(此处为.nt文件)不能太大,如果太大的话会导入失败,亲测如此!至于多大的文件才叫‘太大’,这个就很玄学。一般来说,几个G大小的文件还是勉强可以导入的,如果更大的话,你还是使用方法2isql来进行导入吧!

(1) 点击Linked Data -> Quad Store Upload,进入如下页面即可导入数据。需要注意的是,最后一栏的Named Graph IRI你最好改成你需要的名字!(再次导入其它数据文件到这个Graph里面时,只需要保证 Named Graph IRI 一致即可
upload page

比如,我导入了一个.nt文件,在pyCharm中打开该.nt文件内容是这样的:

pycharm

导入该文件至Virtuoso中,然后将Named Graph IRI命名为http://www.acemap.info,导入完成后,再次进入Linked Data -> Graphs -> Graphs界面,就可以看到自己导入的数据表了,如下:

my data table
(2) 使用SparQL语句来查询试试
新开浏览器标签并输入http://10.10.10.8:8890/sparql(再提醒一次,记得把IP改为你自己的服务器IP!这个真的很重要!!!),会出现以下查询界面:

sparql

输入我们刚刚创建的Graph IRI,我的是http://www.acemap.info,SparQL查询语句的话就限制查询100条出来吧,语句就是select * where {?x ?y ?z} LIMIT 100,然后点击下方的Run Query即可,然后就出现了神奇的一幕
result
至此,我们就完成了使用可视化界面导入数据的流程。但是,我们可以轻易地发现这种方式的弊端。第一个就是我在前文中所说的,太大的数据文件会导致导入数据失败;第二个,我们需要导入的数据可能是多个.nt数据文件,使用这种方法导入则耗时耗力。那么,为了解决这些问题,我们可以使用接下来的方法,使用isql进行数据的批量导入!

2.命令行中isql语句导入数据

首先是数据,在目录/home/spence/acekg_data_collection/geokg/下,我有一大堆.nt的数据文件,如下图:
dataset
回到之前的 linux 命令行中,我们使用了Ctrl-A + Ctrl-D回到主窗口(screen),当前目录为/home/spence/virtuoso/virtuoso-opensource/database

我们现在要做的就是使用isql语句把这些数据全部导入同一个 Virtuoso 数据库的Graph中,命名就为https://www.acekg.cn.

(1)修改virtuoso.ini配置文件

spence@main-server-8:~/virtuoso/virtuoso-opensource/database$ vi virtuoso.ini

把这个配置文件中的这一行的共享目录/usr/share/proj改为自己所有数据文件所在的目录,比如我的数据文件目录就是上面的/home/spence/acekg_data_collection/geokg/

修改前:
alter1

修改后:
alter2
保存后退出!
然后就是最重要的一步,重新启动virtuoso服务,一定要记住,修改过virtuoso.ini配置文件之后一定要重新启动,否则新的配置不会生效!
重启步骤如下:
1.进入screen vir

spence@main-server-8:~/virtuoso/virtuoso-opensource/database$ screen -r vir

2.使用快捷键Ctrl-C关闭virtuoso服务,然后再次启动virtuoso服务即可:

spence@main-server-8:~/virtuoso/virtuoso-opensource/database$ virtuoso-t -fd

(2) 下载vsql文件
在当前目录下新建一个vsql文件,名字随意,比如我新建了一个load.vsql文件。前往官网,将下面的代码复制并写入load.vsql文件后保存:
vsql
此时load.vsql文件内的内容如下:
load.vsql
(3) 启动isql
!!重要提示!!
如果你的服务器中已经安装了Anaconda环境,你还需要额外进行一步操作,将/home/spence/virtuoso/virtuoso-opensource/bin/目录下的isql重命名为isql-v,这样做的目的是避免和Anaconda中的isql出现冲突;如果你没有装Anaconda环境,那么这一步请忽略,并且后面我使用的isql-v命令你自动替换成isql命令即可!
如下:
rename

重新命名之后,启动isql服务:

spence@main-server-8:~/virtuoso/virtuoso-opensource/database$ isql-v 1111 dba dba

start

运行load.vsql文件(记住,后面的分号一定要加!):

SQL> load load.vsql;

然后会出现以下结果,细心的同学可能会发现输出的日志中不是出现了好几个ERROR吗,不用担心,这不会影响导入过程,接着往下面进行即可!
result
(4) 导入数据

1)准备数据:
使用以下命令,第一个参数是所有.nt数据文件所在的文件路径;第二个参数是文件,我使用*.nt来通配所有的.nt文件;第三个参数是你想要使用的Graph IRI的名称,这里我使用的是https://www.acekg.cn

SQL> ld_dir_all('/home/spence/acekg_data_collection/geokg/', '*.nt', 'https://www.acekg.cn');

如果想要查看当前有哪些数据将要导入Virtuoso,可以使用以下语句查看:

SQL> SELECT * FROM DB.DBA.LOAD_LIST;

例如我即将导入的数据如下:

data to load

2)开始导入:
执行以下语句,将这些数据正式导入Virtuoso数据库:

SQL> rdf_loader_run();

然后接下来就是漫长的等待时间…

一段时间后,他终于导入完成了,提示如下:

finished

这时在可视化界面也可以看到这个新的Graph了:

visual

查询也可以看到数据:

query

3) 后续收尾工作
如果此时再次使用语句SELECT * FROM DB.DBA.LOAD_LIST;进行查询时,你会发现已经上传完成的文件仍然在上传列表中:
re select

所以我们需要使用以下语句删除缓冲区数据,避免之后重复上传数据这一步很重要,即使你退出了isql环境再重新进入,LOAD_LIST里面的数据也不会消失,需要你执行下面的语句才能删除

SQL> DELETE FROM DB.DBA.LOAD_LIST;

再次执行SELECT * FROM DB.DBA.LOAD_LIST;进行查询时就发现数据已经从缓冲区删除了。

delete

五、其它

看到这里,其实关于Virtuoso的安装和数据导入差不多就结束了。但是,Virtuoso的内容远不止于此。

1.virtuoso.ini设置

位于database文件夹下的virtuoso.ini文件是关于数据库的设置文件。主要用的就是DirsAllowed 、NumberOfBuffers 和 MaxDirtyBuffers
main

  • DirsAllowed是设置的允许访问的路径,如果要自己从某一个地方导入一个数据的话,要先把这个数据的位置加入到DirsAllowed里面去。
  • NumberOfBuffers 和 MaxDirtyBuffers 设置的是分配给virtuoso的内存和其他系统资源。参照下图。

ref
假如你的的系统内存是16G,就需要把对应的NumberOfBuffers设置为1360000, MaxDirtyBuffers设置为1000000(数值设置宜小不宜大)。

2.References

如果你在安装过程中遇到任何问题,你可以在留言区告诉我,或者通过邮箱联系我,我会较快回复。

tangguo1280@163.com

  • 14
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值