docs: add notes

This commit is contained in:
bookug 2017-07-17 21:04:45 +08:00
parent 9bed137382
commit 40339f5db6
2 changed files with 9 additions and 13 deletions

View File

@ -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空间开销一下子就上升了一倍

View File

@ -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';