FAQ

Q:使用更新版本的 gStore 系统查询原始数据库时,为什么会出错?

A:gStore 生产的数据库包含一些索引,其结构可能在新的 gStore 版本中发生了改变。所以,以防万一,请重新生成数据集。

 

Q:我试着写类似 Main/gconsole.cpp 的基于 gStore 的程序时,为什么会出错?

A:你需要在你的主程序开头加入这些语句,否则 gStore 无法正确运行:

//NOTICE:this is needed to ensure the fle path is the work path
chdir(dirname(argv[0]));
//NOTICE:this is needed to set several debug fles
Util util;

 

Q:使用 Java API 时,为什么 gStore 报告 “garbage collection failed” 错误?

A:你需要调整 jvm 参数,参见 url1 url2 获取更多细节。

 

Q:我在 ArchLinux 中编译代码时,为什么报告 “no-ltermcap” 错误?

A:ArchLinux 下,你只需要用 -lreadline 连接 readline 库。如果你要使用 ArchLinux ,请移除 gStore 根目录下 makefle 中的 -ltermcap

 

Q:为什么 gStore 报告错误称不支持一些 RDF 数据集的格式?

A:gStore 现在不支持所有的 RDF 格式,请参阅【如何使用】中的【数据格式】获取细节。

 

Q:我在 GitHub 上阅读的时候,为什么有一些文件打不开?

A:代码、 markdown、其他文本文件和图片可以直接在 GitHub 上阅读。如果你使用的是轻量级浏览器,例如 midori ,请将 pdf 文件下载后在电脑或其他设备上阅读。

 

Q:为什么使用 gStore 时有时候会出现奇怪的字符?

A:一些文件的名称是中文,你不需要担心这个问题。

 

Q:centos7 系统中,如果复制或压缩/解压 watdiv.db gbuild 生成的一个数据库),用 du -h 命令进行检查, watdiv.db 的大小会改变(通常会变得更大)?

A:watdiv/kv_store/ B+- 树大小的改变导致整个数据库大小的改变。原因是,在 storage/Storage.cpp 中,很多操作用 fseek 移动文件指针。大家都知道,文件是以块的形式组织的,如果我们请求新的块,文件指针可能移动到当前文件外( gStore 中的文件操作都用 C 实现,没有报告错误),然后内容将写入新的位置!

Unix 环境下的高级编程中,“文件洞”描述了这一现象。“文件洞”被 填充,也是文件的一部分。你可以用 ls -l 查看文件的大小(计算了洞的大小),du -h 命令显示目录 / 文件在系统中占用的块的大小。通常来说, du -h 的输出会比 du -h 更大,但如果“文件洞”存在,就会出现相反的结果,因为洞的大小被忽略了。

包含洞的文件的实际大小被修正,在一些操作系统中,拷贝时洞会被转变为内容(也是 0 )。如果不是在不同的设备间,操作 mv 不会影响大小(只需要调整文件树索引)。然而, cp 和各类压缩方法需要扫描文件并传输数据(考虑到是否忽略洞,有两种方法实现 cp 命令,但 ls -l 输出的大小不变)。

C 中使用“文件洞”是有效的,这不是一个错误,你可以继续使用 gStore

 

Q:gclient 控制台中, build 并查询了一个数据库,然后我退出了控制台。下次我进入控制台时, load 原来载入的数据库,但没有任何查询的输出(原始输出不为空?

A:在退出 gclient 控制台之前,你需要 unload 数据库,否则会出现错误。

 

Q:如果查询结果包括 null 值,我要怎么使用 full_test 程序?用制表符分隔的方法会造成问题,因为不能检测到 null 值!

A:你可使用其他编程语言(例如, Python )处理这种问题。例如,你可以在输出中将 null 值变为 ‘,’ 之类的特殊字符,然后你就可以使用 full_test 了。
 

Q:当我编译并运行 API 样例时,报告 “unable to connect to server” 错误?

A:请先用 ./gserver 命令启动 gStore 服务器,请注意服务器 ip 和端口号必须匹配。

 

Q:当我使用 Java API 写程序的时候,报告 “not found main class” 错误?

A:请确保你在 java的类路径中包含了你的程序的位置。完整的命令应该和 java -cp /home/bookug/project/devGstore/api/java/lib/GstoreJavaAPI.jar:.JavaAPIExample 类似,命令中的 “:.” 不能省略。