From 40339f5db6e07370fcdf4213a3afcae15b8bd784 Mon Sep 17 00:00:00 2001 From: bookug Date: Mon, 17 Jul 2017 21:04:45 +0800 Subject: [PATCH] docs: add notes --- NOTES.md | 18 +++++------------- Util/Util.h | 4 ++++ 2 files changed, 9 insertions(+), 13 deletions(-) diff --git a/NOTES.md b/NOTES.md index ea01f5f..3f3e683 100644 --- a/NOTES.md +++ b/NOTES.md @@ -120,22 +120,14 @@ http://blog.csdn.net/infoworld/article/details/8670951 # TODO -保证通过测试:shape和warp数据集,插删查操作都要测,bbug一系列特殊的查询也要跑 -要在单机支持到10亿triple,最坏情况下最多有20亿entity和20亿literal,目前的编号方式是不行的(int扩展为unsigned) -最好在单机100G内存上支持起freebase(2.5B triples)这个规模的数据集,就像jena和virtuoso一样,慢不要紧 +Http通讯中answer的\n\t问题,可能是因为没有url encode的关系 +返回结果是否需要进行encode?如果是json是没有问题的 +但若一个string中本身就含有空格或\t,还能正确传输么? +因为返回的结果不是URL,所以可以不处理 -type分支中query过程可能还有问题,需要修改Query/里面的类型,另外stringindex中也要修改,分界线已经是20亿且非法不再是-1 -remove signature.binary, 合并两个分支type value -vstree在build和query时可以用不同大小的缓存,来加速build过程 -vstree建立太耗时,严重拖了build过程的后腿 triple num改为unsigned long long,争取单机最大支持到100亿数据集,只要entity等数目不超过20亿。 - -同时将ID的编码改为unsigned,无效标志-1改为最大值的宏, triple数目的类型也要改为unsigned -注意pre的ID还可以为-2,或者对于pre仍然用int,或者改函数的返回值为long long (还有一些没有用-1而是>=0) +triple数目的类型应该为long long --- -将B+tree中叶节点的大的value分离出来,新建一套缓存,使用block机制,标记length为0表示未读取 -类型bstr的length问题也需要解决(新建Istr类型) -如果把类型直接改成long long,空间开销一下子就上升了一倍 解决方法:对于ID2string,仍然用char*和unsigned,但对于s2xx p2xx o2xx,应该用long long*和unsigned来表示,这样最高可支持到40亿triple 注意:在B+树中是以long long*的方式存,但读出后应该全部换成unsigned*和unsigned搭配的方式(最长支持20亿个po对) UBSTR: 类型bstr的length问题也需要解决 如果把类型直接改成long long,空间开销一下子就上升了一倍 diff --git a/Util/Util.h b/Util/Util.h index b520ab9..4bc03a0 100644 --- a/Util/Util.h +++ b/Util/Util.h @@ -198,6 +198,9 @@ typedef unsigned(*HashFunction)(const char*); //type for the triple num //NOTICE: this should use unsigned (triple num may > 2500000000) typedef unsigned TYPE_TRIPLE_NUM; +//NOTICE: we do not use long long because it will consume more spaces in pre2num of Database +//For single machines, we aim to support 4.2B triples, and that's enough +//typedef long long TYPE_TRIPLE_NUM; //TODO: use long if need to run 5B dataset //type for entity/literal ID @@ -251,6 +254,7 @@ public: static const unsigned GB = 1073741824; //static const int TRIPLE_NUM_MAX = 1000*1000*1000; static const TYPE_TRIPLE_NUM TRIPLE_NUM_MAX = INVALID; + //static const TYPE_TRIPLE_NUM TRIPLE_NUM_MAX = (long long)10000*1000*1000; static const char EDGE_IN = 'i'; static const char EDGE_OUT= 'o';