virtuoso装载大的rdf文件的方法
本文详细介绍了将一个比较大的rdf文件装载到virtuoso数据库的过程。参考virtuoso网站的文档说明,通过实践,将一个大约4.6G左右的nt文件装载到virtuoso数据库中,用了大概6个多小时。参考网站:http://vos.openlinksw.com/owiki/wiki/VOS/VirtBulkRDFLoader
以下是具体的步骤。
一 准备条件
1 virtuoso的版本要求。Open source version 6.1.3以上或者commercial version 06.02.3129以上,这些版本有大文件装载函数(方法)。
2 在virtuoso.ini中设置参数”DirsAllowed”,设置完成后需要重新启动virtuoso。
参考:http://docs.openlinksw.com/virtuoso/dbadm/
参数设置的格式如下:
DirsAllowed = <path> [, <path>]
DirsDenied = <path> [, <path>]
<path> := <absolute_path> or <relative_path>
可以用下面的命令查看,在cmd中,进入bin目录,然后运行isql,可以进入sql命令模式。
SQL> select server_root (), virtuoso_ini_path ();
上面的命令可以查看服务器的工作目录和ini文件名称。
用以下命令查看DirsAllowed参数的情况
SQL> select cfg_item_value (virtuoso_ini_path (), 'Parameters',
'DirsAllowed');
这一步,我没有设置DirsAllowed,通过命令可以查看到vad目录。
3 合理配置virtuoso.ini,保证有足够的内存和其他系统资源。
参考:http://vos.openlinksw.com/owiki/wiki/VOS/VirtRDFPerformanceTuning
主要设置两个参数,NumberOfBuffers 和 MaxDirtyBuffers。不同的系统内存对应设置不同的参数值。
如下表所示:
|
NumberOfBuffers? |
MaxDirtyBuffers? |
|
|
2 GB |
170000 |
130000 |
|
4 GB |
340000 |
250000 |
|
8 GB |
680000 |
500000 |
|
16 GB |
1360000 |
1000000 |
|
32 GB |
2720000 |
2000000 |
|
48 GB |
4000000 |
3000000 |
|
64 GB |
5450000 |
4000000 |
比如,我的系统是16G内存,就需要把对应的NumberOfBuffers设置为1360000, MaxDirtyBuffers设置为1000000。
4 文件格式要求。
Virtuoso只支持一下格式。
|
.grdf |
Geospatial RDF |
|
.nq |
|
|
.nt |
|
|
.owl |
|
|
.rdf |
|
|
.trig |
|
|
.ttl |
|
|
.xml |
二 大文件加载的过程
1 准备三个文件,放到vad目录(也就是DirsAllowed的目录)。一个是数据源文件,比如my_data.nt,一个是对应的图文件,和数据源文件的名称相同后面加.graph。比如my_data.nt.graph。一个是公共的图文件,用来处理那些没有对应的图文件的数据源文件,名称为global.graph。
标准格式:
<source-file>.<ext>
<source-file>.<ext>.graph
global.graph
举例:
myfile.n3 ;; RDF data
myfile.n3.graph ;; Contains Graph IRI name into which RDF data from myfile.n3 will be loaded
global.graph ;; Contains Graph IRI name into which RDF data from any files that do not have a specific graph name file will be loaded
2 把图的标识名(the graph IRI)写到*.graph中。比如,图的标识名为:http://dbpedia.org,把http://dbpedia.org写到*.graph中。
3 注册要加载的文件。使用isql,进入到SQL命令中,运行合适的方法。比如
SQL> ld_dir ('/path/to/files', '*.n3', 'http://dbpedia.org');
ld_dir() 里面的目录不包括子目录。ld_dir_all() 命令包括所有的子目录。
4 用DB.DBA.load_list来查看注册的数据集装载情况和图标识名正在加载还是已经加载。ll_state字段有三个值:0表示数据集还没有加载;1表示数据集正在加载中;2表示数据集已经加载完成。如下所示
SQL> select * from DB.DBA.load_list;
ll_file ll_graph ll_state ll_started ll_done ll_host ll_work_time ll_error
VARCHAR NOT NULL VARCHAR INTEGER TIMESTAMP TIMESTAMP INTEGER INTEGER VARCHAR
_____________________________________________________________________________________________________________________________
./dump/d1/file1.n3 http://file1 2 2010.10.20 9:21.18 0 2010.10.20 9:21.18 0 0 NULL NULL
./dump/d2/file2.n3 http://file2 2 2010.10.20 9:21.18 0 2010.10.20 9:21.18 0 0 NULL NULL
./dump/file.n3 http://file 2 2010.10.20 9:21.18 0 2010.10.20 9:21.18 0 0 NULL NULL
3 Rows. -- 1 msec.
SQL>
5 最后,通过rdf_loader_run()命令完成大文件数据的加载。
命令如下:
SQL> rdf_loader_run();
该命令执行后,如果文件比较大,会是一个漫长的等待过程,耐心等待,可以先不管他,做其他的工作去吧。
漫长等待之后,如果装载成功,会有一个花费时间的显示。
如果查看导入情况,可以另外打开一个cmd,然后进入isql,键入select * from DB.DBA.load_list;,可以查看导入正在进行(ll_state值为1),还是导入完成(ll_state值为2)。
通过以上操作,就可以完成数据的加载。
导入完成之后,需要清理一下load_list,否则下次装载其他文件时,load_list里面的文件还会导入。清理命令是delete from db.dba.load_list;。
virtuoso装载大的rdf文件的方法的更多相关文章
- Sqlserver2005日志文件太大,使其减小的方法
Sqlserver2005日志文件太大,使其减小的方法: 运行下面的三行 dbName为数据库名: backup log dbNamewith NO_LOG backup log dbNamewith ...
- 【原创】使用Nmon_Analyzer处理较大nmon文件的方法
1 编写目的 进行性能测试时,测试服务器使用的操作系统是Linux或Unix时,我们一般会使用Nmon工具进行操作系统资源监控数据的收集.Nmon工具是一款非常优秀的性能监控和分析工具,它能够实时地收 ...
- 关于小米手机USB传输稍大点的文件老中断的问题解决方法!
关于小米手机USB传输稍大点的文件老中断的问题解决方法! 这是一个很痛苦的事情,当你传输大文件的时候,传输到一半就会莫名其妙的中断,拔插数据线很多次以后,好不容易没准可以成功传输一次. 后来使用了36 ...
- 使用dd命令快速生成大文件或者小文件的方法
使用dd命令快速生成大文件或者小文件的方法 转载请说明出处:http://blog.csdn.net/cywosp/article/details/9674757 在程序的测试中有些场 ...
- Linux培训教程 linux系统下分割大文件的方法
在linux中分割大文件,比如一个5gb日志文件,需要把它分成多个小文件,分割后以利于普通的文本编辑器读取. 有时,需要传输20gb的大文件,Linux培训 教程件到另一台服务器,也需要把它分割成多个 ...
- php中读取大文件实现方法详解
php中读取大文件实现方法详解 来源: 时间:2013-09-05 19:27:01 阅读数:6186 分享到:0 [导读] 本文章来给各位同学介绍php中读取大文件实现方法详解吧,有需要了解 ...
- Javascript写入txt和读取txt文件的方法
文章主要介绍了Javascript写入txt和读取txt文件的方法,需要的朋友可以参考下1. 写入 FileSystemObject可以将文件翻译成文件流. 第一步: 例: 复制代码 代码如下: Va ...
- java读写Properties属性文件公用方法
Java中有个比较重要的类Properties(Java.util.Properties),主要用于读取Java的配置文件. 它提供了几个主要的方法: 1. getProperty ( String ...
- iOS之在webView中引入本地html,image,js,css文件的方法 - sky//////////////////////////////////////ZZZZZZZZZZZZZZZ
iOS之在webView中引入本地html,image,js,css文件的方法 2014-12-08 20:00:16CSDN-sky_2016-点击数:10292 项目需求 最近开发的项 ...
随机推荐
- Vuex- Action的 { commit }
Vuex 中 使用 Action 处理异步请求时,常规写法如下: getMenuAction:(context) =>{ context.commit('SET_MENU_LIST',['承保2 ...
- JAVA NIO学习四:Path&Paths&Files 学习
今天我们将学习NIO 的最后一章,前面大部分涉及IO 和 NIO 的知识都已经讲过了,那么本章将要讲解的是关于Path 以及Paths 和 Files 相关的知识点,以对前面知识点的补充,好了言归正传 ...
- Head First设计模式之适配器模式
一.定义 适配器模式把一个类的接口,变换成客户端所期待的另一种接口,使原本因接口不匹配的两个类能够在一起工作. 二.结构 角色: Client:用户类,使用新接口Target来完成某些特定的需求. T ...
- mysql存储过程 详细注释
原文:https://my.oschina.net/u/3582142/blog/1581929
- Tsung:开源多协议分布式负载&压力测试工具
Main features High Performance: the load can be distributed on a cluster of client machines Multi-pr ...
- javascript 之作用域链-10
前言 在<执行环境>文中说到,当JavaScript代码执行一段可执行代码时,会创建对应的执行上下文(execution context). 变量对象(Variable object,VO ...
- Mac下安装ant(利用brew)
安装ant最简单的方法就是通过brew.步骤如下:1. 安装brew(如果已经安装可以跳过这步). ruby -e "$(curl -fsSL https://raw.github.com/ ...
- CSS中的块级元素(block)与行内元素(inline)
css中有3种基本的定位机制:普通流(相对定位实际上看做普通流定位模型的一部分)浮动(float)绝对定位(固定定位是绝对定位的一种)所以在学习浮动之前,我们先要了解块级元素与内联元素(行内元素).块 ...
- 初学Vue之数量加减
效果图: HTML: <div class="count3"> <ul> <li v-for="(key,idx) in liList&qu ...
- ABP架构学习系列
ABP实践学习系列 ABP Zero 本地化语言的初始化和扩展 ABP Zero 导航菜单之角色权限 ABP Zero示例项目问题总结 ABP后台服务之作业调度Quartz.NET ABP架构学 ...