第26卷第3期 2013年9月 山西青年管理干部学院学报 Journal of Shanxi College for Youth Administrators Vo1.26 No.3 Sep.,2013 【计算机应用】 移动社交网络中的数据库应用 尤惠芬 (山西青年职业学院,山西太原030032) 摘要:数据库在移动社交网络中发挥着重要的作用。在移动社交网络中,常见的数据库管理系统有MySQL、SQLLite和 Neo4j等,它们各自在移动社交网络中,既有优势又有不足。只采用其中一种单一的数据库,无法满足移动社交网络对大量 数据的处理需求,因此可以采取多数据库融合的思路解决这一问题。 关键词:移动社交网络;SQLite;MySQL;Hash—map;Neo4j;数据库 中图分类号:TP311.13 文献标识码:A 文章编号:1008—8997(2013)03—0106—03 一、国内社交网络的发展状况与趋势 (注册)个人资料 Name:jane Pro:student Sex:man Age:20 社交网络一sNs,英文全称为Social Network Site,专指旨在 帮助人们建立社会性网络的互联网应用服务。其理论基础是哈 佛大学的理学教授Stamley Milgram创立的六度分割理论。按该 Like:dog 理论引述,每个个体的社交圈都可以不断放大,最后形成一个大 型网络一社会网络(Social NetWorking)。随着计算机网络技术的 发展,网络用户迅猛递增,以Facebook为代表的国外SNS如雨 后春笋般纷纷涌现,迅速风靡全球。受此影响,国内以交友为主 的博客社区一51.com和学生社区--xiaonei.com为开端,先后涌 现出开心网、豆瓣网、同学网、占座网以及QQ空间等大型SNS 聊天记录 Jance:hetlo everyone Smith:welcome Nancy: ‘‘。‘。 成员列表, Jance Marty Smith Nanev 天室一 社区。同时,国内移动通信技术的飞速发展,以及手机用户的爆 炸式增长,又促使通过手机上网的方式得到普及,使社交网络借 助移动终端设备的发展,转变为移动社交网络,迎来了自身发展 的黄金阶段。 天室二 图1数据结构与关系模型 管理需求。但是,对于稀疏矩阵数据值为空的属性项,MySQL需 要开辟同样的内存空间,不能有效地优化内存。同时,MySQL对 二、移动社交网中的数据关系 移动社交网络作为社交网络新的发展阶段,同样是大量数 据的载体,通过其主要的业务功能分析,我们可以得到最广泛的 数据,以及复杂的数据关系(如图l所示)。 1.MySQL 于网络数据模型的操作,也显得不够灵活。例如:采用单向关系 对用户进行好友推荐,其SQL语句如下: ——select distinct friendld from tablefriends _where userId in(select fiendlrd from table_friends where userld=Jane) ——select distinct userId from tablefirends _在移动社交网络中,数据量不仅庞大,而且结构多异,不仅 需要处理结构化的数据,还需要处理非结构化、半结构化的数 据。 where friendld in(select userld from table_friends where friendld=Jane) 使用关系型数据库管理系统MySQL存储数据快速、灵活, 由于采用了单向朋友关系存储好友,指定的ID可能在 userId列中,也可能在friendld列中,因此需要进行两次查询才 允许用户存储记录文件和图像,足以满足移动社交网络的信息 收稿日期:2013—06—25 作者简介:尤惠芬(1984一),女,山西忻州人,山西青年职业学院讲师。 106 能完成好友推荐。其间进行了多次的全表遍历和条件判断,若需 要根据好友关系权值来进行推荐,还需要进行多表连接查询,这 样操作繁琐,耗时较多。 2.NoSQL数据库——Neo4i 关系型数据库管理系统MySQL( ̄H图2所示),使用结构化 查询语言SQL进行查询等操作,用户非常方便。但在处理半结 构化及网络图形数据时还存在很大的不足。 \ / 、 ■ -_-___/ 图2 Neo4j的简单结构 NoSQL是非关系型数据存储的广义定义,存储数据不需要 固定格式的表结构,不存在类似多表连接的操作,存取超大型数 据时具有关系型数据库无法比拟的性能优势。Neo4j作为 NoSQL中的一员,是面向网络的数据库,将结构化数据存储在 网络上而不是表中。网络是一个灵活的数据结构,可以应用更加 敏捷和快速的开发模式。 Neo4j的基元是节点(nodes)、关系(relationships)、属性 (properties),通过这3个基元可以完整的描述任意一个用户的 情况。在关系(relationships)上赋予属性,可以灵活扩展其网络模 型;对于节点(nodes)的属性,可以随时增删,从而有效地解决存 储半结构化、非结构化数据时浪费内存的问题,通过其独有的深 度(deep)遍历接13,可以快速找到不同关系关联下的任意深度 节点。 下面,以近百万级的数据集为例,测试Neo4j的性能优势: 该数据集有节点:265214关系边:420045,以0—1表示节 点0、1之间的存在关系。分别将数据集导入MySQL和Neo4j 中形成数据表格和网络数据模型(如表1所示)。 表1关系表与非关系的网络模型 outV intV 始点 终点 0 1 0 =>> 1 O 4 0 =>> 4 O 5 0 =>> 5 O 8 O =>> 8 O 11 0 =>> 11 0 20 0 =>> 20 0 48 0 =>> 48 1 0 130 O =>> 130 导人数据库后,分别对两者进行深度遍历(等同于查找好友 的好友等),截取0-249这250个节点进行测试研究,得到的结 果(如表2所示)。 表2 Neo4j与MySQL测试结果对比 Neo4j Depth 用时/ms 返回节点数节点/ms 节点/ms l 172 12l9 7.087 2 235 2741 11.664 3 375 6307 16.819 4 650 13014 20.022 MySQL Depth 用时/ms 返回节点数节 K/ms MySQL 1 24579 1219 0.O45 2 94030 2741 0.029 3 166311 6307 0.038 4 242325 13014 0.054 通过上表可以看到,对于大型数据集,Neo4j有着关系数据 库无法比拟的优势:遍历速度快,结构简单,可优化半结构化、非 结构化数据的存储,节约内存,同时可对网络数据进行复杂的操 作,代码简单,灵活性大,可扩展性强。 3.SQLite SQLite,是一款轻型的数据库,是遵守ACID的关联式数据 库管理系统,它的设计目标是嵌入式的,目前在很多嵌入式产品 中已应用。SQLite它占用资源非常低,在嵌入式设备中,只需要 几百KB的内存,与MySQL相比,它的运行速度更快,这对于像 手机终端这种对内存要求极高的移动设备来说非常适合。目前, 在Andfiod、Windows Moble、Symbian、Palm等知名手机操作系统 都支持SQLite。 在移动社交网络中,无论在服务端还是客户移动终端, SQLite都能高效的处理、存储数据。终端将SQLite作为数据容 器可以充分发挥SQLite单一数据文件的优势,有效地提高了运 行效率,节省了内存,精简了代码。假设注册或是登陆操作相应 的数据为{用户名,密码},有以下三种处理方式: - 方法一:特殊数据格式处理。创建数据格式,以JSON为例, 佣户名:admin;密码:admin;1,则可方便的通过JSON格式的 get()方法获取用户名、密码等信息,再将JSON数据以文件方式 存储。 方法二:文件处理。从文件中读取数据,按约定规则使用正 则表达式解析字符串,例如以空格分隔开字符串“admin admin”, 分别获得了用户名和密码等信息。 方法三:SQLite数据库处理。虽然连接数据库需要消耗时 间,但是文件的打开、读取同样消耗时间,数据格式有创建和处 理的麻烦,SQLite直接提取、存储需要的数据属性,不需要创建 数据格式,大大简便了操作,也节约了内存。 随着移动终端操作系统的发展,更多的数据处理、存储将会 移至终端设备,SQLite将会处理更多更复杂的数据,减轻服务端 的负载,缩短请求一响应的间隔。 4.Hash—map Hash—map作为实现iava.util.Map接口的实现类,按“键一 值”进行快速存取,与关系型数据库模型表中的“字段一属性”关 系有着类似的功能。由于这种特性,开辟一个新的map内存空 107 间,以“key—value”关系存取数据,相当于在关系数据库中建立单 属性数据表。与数据库相比,它的缺点是只能是单一的“键一值” 对,没有良好的扩展性和灵活性,同时不能保证数据的持久性, 一表4 Hash—map中的存储 a・user-map b.room-map 旦该片内存区域被新的对象覆盖,数据将丢失。其优点是操作 Key Jane Nancy Candy value Room1 Rooml Room2 Key Room1 Value(1ist) Jane Smith Nancy 简单、快速,对于简单的操作可节省连接数据库的时间。在移动 社交网络中,若没有对数据的持久性做要求,可以使用Hash— map,从而提高响应速率,简化操作。如前面描述的聊天组成员 Smith Room1 Marry 管理,没有持久性要求,数据量小,按一般的数据库处理,则需要 建立对应的数据库表格(如表3所示)。 表3数据库中的表格 6le rooml Marrv Smith Nancy l Tom Room2 Room2 Tbm l…・ ; Candy Steven le room2 Steven Candy Room—map中key=rooml的value增加“Jane”,在Room—map中 索引key获得value(List),为该组当前聊天成员列表。 三、多数据库综合运用,改善数据处理 随着移动社交网络发展阶段的来临,用户量几何递增,如何 选择数据库管理系统高效地处理大量的复杂数据就成为制约移 动社交网络发展的关键。通过以上对MySQL、SQLite、Neo4j和 聊天者加入、退出聊天组,都需要连接数据库相应的数据 表,进行增删的处理,聊天组取消、建立同样需要连接数据库建 立、删除相应表格。而采用Hash—map形式进行处理,以key作 Hash—map四种数据库分析比较,发现以上四种数据库在不同的 场景下,能够体现出各自不同的优点,只要开发人员综合、灵活 索引,只需一次建立两片map内存区域,根据相应的key索引 对value进行数据的处理(如表4所示)。 地加以运用,一定能够有效地改善移动社交网络中的数据处理。 当加入聊天组时,在User—map中插入“Jane—room1”,同时 [参[1]吴考文献] 昕.中国SNS社交网络服务的经营现状及商业前景[J].商场现代化,2010,24卷 [2]丁艺明.社交网数据库技术分析[J].程序员,2010(7). [3]MySQL VS Neo4j on a Large—Scale Graph Traversa1.Marko A.Rodriguez,March 29,2010. [4]SQLite中文社区[EB/0L].http://www.sqlite.conr.cn. [5]杨丰盛.ANDROID应用开发揭秘[M].北京:机械工业出版社,2010. The Application of Database in Mobile Social Network YOU Hui-fen (Shanxi Youth Vocational College,Taiyuan,030032,China) Abstract:Database plays an important role in Mobile Social Network.The usually used database management systems include MySQL, SQLLite,Neo4j,and SO on.All these systems have both advantages and disadvantages.By applying any single one system,we can not process SO many data Oll Mobile Social Network.Therefore,we can combine them together to solve the problem. Key words:Mobile Social Network;SQLLite;MySQL;Hash-map;Neo4j;database (责任编辑:刘伟) 108