超大规模图数据的存储是一个难题,常常要在使用的方便性,存储空间以及处理效率间做平衡。常见的公共图数据格式有文本格式,二进制格式和graph格式等。那么根据不同的需求转换图数据格式,是图计算研究和实践中不可避免的工作。
顶点和边是图的核心元素,所以图数据一般由顶点数据和边集数据组成。抽象的公共图数据集如Livejournal,twitter-2010和uk-2007-05,都会使用0,1,2…这样的自然数标识每个顶点,使用一个文件将顶点编号和顶点意义做映射,用源顶点编号和目的顶点编号标识一条边,或者再加一个权值。例如网页图为每个web页面的URL指定一个唯一的自然数编号,社交图中为每个用户ID指定一个唯一的自然数编号。可以通过单独的文件,存储编号和顶点属性的对应关系,也可以用一个二维表存储在关系数据库中。
由于自然图边的数量远远大于顶点数量,并且每条边至少是由两个顶点编号标识,所以边的存储是难点。当边的数量较少时可以用文本文件存储,每一行标识一条边,如下图twitter-2010[2]的格式,它有61,578,415个顶点和1,468,365,182条边,占用24.4GB的存储空间。

为了压缩存储空间和提高图计算系统读取数据的效率,常使用二进制格式存储边集。如果顶点的数量小于232,所以可以用4字节的int类型表示所有顶点。这样能大大节约存储空间,例如一个顶点编号是12345678,文本格式占8字节,而用二进制格式只占4字节,转换成二进制的twitter-2010边集文件仅11GB。同理更多的顶点(大于232)数量可采用8字节的long类型表示所有顶点。而文本格式和二进制格式间的相互转换可参考下面两个代码片段。

将文本格式的边以二进制格式写入文件

从二进制格式边集文件中读取一条边
另外,web图的边数量可达到几百个billion甚至trillion级别,使用文本格式或者二进制格式依然会占用上百GB的空间,使用或传播都极其不方便,于是根据图的特性,压缩成graph格式的数据,例如uk-2007-05[3][4]图数据集。在[4]中指出uk-2007-05有105,896,555个顶点代表不同的web页面的URL,相互的超链接关系多达3.7billion条边。顶点是文本格式数据,每行一个URL,编号从0至105,896,554,大概904MB。

边则是提供BV格式[5] 压缩的邻接列表文件,由uk-2007-05.graph,uk-2007-05.offsets和uk-2007-05.properties三个核心文件组成。数据的每个nodeIterator由三部分组成<源顶点编号,出度值,目的顶点编号数组>,因此将它转换为二进制或者文本格式使用WebGraph库即可完成。

在使用WebGraph库将graph格式数据转换为二进制格式时,需要注意Java和C/C++间存在"Little endian and Big endian(大端小端)"的差异问题。例如在测试A22D Graph时,使用java版本的代码将uk-2007-05 graph格式的数据直接转换为二进制格式,然后再作为A22D Graph(C/C++实现)的输入。


由于不同的图计算系统对输入的图数据格式有不同的要求,例如上篇的Chaos是用边集列表的二进制文件格式(与A22D Graph 相同),所以灵活的进行图数据的格式转换是很有必要的。
####
# # ll home/origin-data/uk-2007-05/
# -rwxr-xr-x. 1 root root 1259629243 Mar 29 07:21 uk-2007-05.graph
# -rwxr-xr-x. 1 root root 135345642 Mar 29 07:21 uk-2007-05.offsets
# -rwxr-xr-x. 1 root root 271 Mar 29 07:21 uk-2007-05.properties
# java -jar root/BV2Ascii.jar home/origin-data/uk-2007-05/uk-2007-05 home/origin-data/uk-2007-05/bin/uk-2007-05.bin
[1] LiveJournal social network, http://snap.stanford.edu/data/soc-LiveJournal1.html
[2] twitter-2010, http://an.kaist.ac.kr/traces/WWW2010.html
[3] uk-2007-05, http://law.di.unimi.it/webdata/uk-2007-05/
[4] uk-2007-05, http://chato.cl/webspam/datasets/uk2007/links/
[5] Boldi P, Vigna S. The Webgraph FrameworkI: Compression techniques. In: Proc. of the 13th Int’l Conf. on World Wide Web(WWW). New York: ACM, 2004. 595-602.
本文内容仅个人观点,如有错误和不足之处还望大家雅正,如果对您有所帮助则是我的荣幸,如需本文相关资料/源码请发邮件到zhangguoqingas@gmail.com或留言!




