docs: add notes
This commit is contained in:
parent
9bed137382
commit
40339f5db6
18
NOTES.md
18
NOTES.md
|
@ -120,22 +120,14 @@ http://blog.csdn.net/infoworld/article/details/8670951
|
||||||
|
|
||||||
# TODO
|
# TODO
|
||||||
|
|
||||||
保证通过测试:shape和warp数据集,插删查操作都要测,bbug一系列特殊的查询也要跑
|
Http通讯中answer的\n\t问题,可能是因为没有url encode的关系
|
||||||
要在单机支持到10亿triple,最坏情况下最多有20亿entity和20亿literal,目前的编号方式是不行的(int扩展为unsigned)
|
返回结果是否需要进行encode?如果是json是没有问题的
|
||||||
最好在单机100G内存上支持起freebase(2.5B triples)这个规模的数据集,就像jena和virtuoso一样,慢不要紧
|
但若一个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亿。
|
triple num改为unsigned long long,争取单机最大支持到100亿数据集,只要entity等数目不超过20亿。
|
||||||
|
triple数目的类型应该为long long
|
||||||
同时将ID的编码改为unsigned,无效标志-1改为最大值的宏, triple数目的类型也要改为unsigned
|
|
||||||
注意pre的ID还可以为-2,或者对于pre仍然用int,或者改函数的返回值为long long (还有一些没有用-1而是>=0)
|
|
||||||
---
|
---
|
||||||
将B+tree中叶节点的大的value分离出来,新建一套缓存,使用block机制,标记length为0表示未读取
|
|
||||||
类型bstr的length问题也需要解决(新建Istr类型)
|
|
||||||
如果把类型直接改成long long,空间开销一下子就上升了一倍
|
|
||||||
解决方法:对于ID2string,仍然用char*和unsigned,但对于s2xx p2xx o2xx,应该用long long*和unsigned来表示,这样最高可支持到40亿triple
|
解决方法:对于ID2string,仍然用char*和unsigned,但对于s2xx p2xx o2xx,应该用long long*和unsigned来表示,这样最高可支持到40亿triple
|
||||||
注意:在B+树中是以long long*的方式存,但读出后应该全部换成unsigned*和unsigned搭配的方式(最长支持20亿个po对)
|
注意:在B+树中是以long long*的方式存,但读出后应该全部换成unsigned*和unsigned搭配的方式(最长支持20亿个po对)
|
||||||
UBSTR: 类型bstr的length问题也需要解决 如果把类型直接改成long long,空间开销一下子就上升了一倍
|
UBSTR: 类型bstr的length问题也需要解决 如果把类型直接改成long long,空间开销一下子就上升了一倍
|
||||||
|
|
|
@ -198,6 +198,9 @@ typedef unsigned(*HashFunction)(const char*);
|
||||||
//type for the triple num
|
//type for the triple num
|
||||||
//NOTICE: this should use unsigned (triple num may > 2500000000)
|
//NOTICE: this should use unsigned (triple num may > 2500000000)
|
||||||
typedef unsigned TYPE_TRIPLE_NUM;
|
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
|
//TODO: use long if need to run 5B dataset
|
||||||
|
|
||||||
//type for entity/literal ID
|
//type for entity/literal ID
|
||||||
|
@ -251,6 +254,7 @@ public:
|
||||||
static const unsigned GB = 1073741824;
|
static const unsigned GB = 1073741824;
|
||||||
//static const int TRIPLE_NUM_MAX = 1000*1000*1000;
|
//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 = INVALID;
|
||||||
|
//static const TYPE_TRIPLE_NUM TRIPLE_NUM_MAX = (long long)10000*1000*1000;
|
||||||
static const char EDGE_IN = 'i';
|
static const char EDGE_IN = 'i';
|
||||||
static const char EDGE_OUT= 'o';
|
static const char EDGE_OUT= 'o';
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue