PowerPoint 演示文稿 - Lu Jiaheng's homepage

Download Report

Transcript PowerPoint 演示文稿 - Lu Jiaheng's homepage

百度商业产品市场部
隆重出品
08级计算机系
吴梦迪
百度商业产品市场部
隆重出品
08级计算机系
吴梦迪
信息学院08计算机系
吴梦迪
2008202358
百度商业产品市场部
隆重出品
08级计算机系
吴梦迪
研究意义背景

基 核 平
于 心 台
代 系
码 统
功 设
的 能 计
好 测 及
友 试 实
推
现
荐
代
码
总结&展望


ontents
可
行
性
分
析


图
存
数
据
库
Neo4j

当
前
数
据
处
理
技
术
及
其
不
足


社
交
网
络
中
的
数
据
关
系
Neo4j

国
内
外
社
交
网
络
发
展
情
况
核心代码&
系统实现
主
要
结
论
不
足
与
展
望
百度商业产品市场部 隆重出品
社交网络总是无处不在
百度商业产品市场部 隆重出品
国内外社交网络网站发展得如火如荼
MySpace.com
开辟了SNS网站新纪元
百度商业产品市场部 隆重出品
国内外社交网络网站发展得如火如荼
Facebook
已成为SNS网站大鳄
MySpace
百度商业产品市场部 隆重出品
国内外社交网络网站发展得如火如荼
Facebook
已成为SNS网站大鳄
MySpace
百度商业产品市场部 隆重出品
国内外社交网络网站发展得如火如荼
国内的人人网,
也风生水起
MySpace
Facebook
百度商业产品市场部 隆重出品
国内外社交网络网站发展得如火如荼
国内的人人网
也风生水起
MySpace
Facebook
搜索
以及很多其他时候
以及其他
各种网站
百度商业产品市场部 隆重出品
豆瓣
Facebook
社交网络中,数
据关系错综复杂,
非结构化!
人与人之间的关联很复杂
51.com
新浪微博
百度商业产品市场部 隆重出品
•
•
•
•
•
关系数据库
Berkeley DB Key-Value
社交网数据库系统
Cassandra
分布式存储系统
Dynamo
Facebook数据库查询
语言:FQL
现有SNS网站数据库架构技术
各
有
缺
陷
!
百度商业产品市场部 隆重出品
复
杂
性
影
响
可
扩
展
规
模
不
适
合
处
理
非
结
构
化
数
据
只
是
数
据
库
查
询
语
言
关系 Berkeley FQL
数据 DB、
库
Cassandr
a、
Dynamo
?
有没有一个靠谱的
社交网络数据库模型
百度商业产品市场部 隆重出品
有个靠谱的数据库架构像有个靠谱的老公一样重要
••••••••••••••••••••••••••••••••••
Neo4j图存数据库靠谱在哪儿
?
——可行性与优越性
百度商业产品市场部 隆重出品
1
可行性 :创新的数据结构
多种功能
图的基本概念
• 关系组织图形
• 通过遍历查询图
• 通过索引查找节点或
关系
基本操作
百度商业产品市场部 隆重出品
2
可行性 :性能优势
百万级数
据集测试
结果
性能测试
Neo4j VS. MySQL
X
250
倍差距
百度商业产品市场部 隆重出品
3
可行性 :可靠性&可用性
强大的支持
开
源
商业支持的开源图存数据库
REST
接
口
可作为单独的服务器API使用
绑
定
库
与JRuby/Ruby、Python等语言绑定
可靠才可用!
百度商业产品市场部 隆重出品
好友推荐系统核心代码
1
提取Gems
require "rubygems"
require "neography“
@neo =
Neography::Rest.new
def
create_person(name)
@neo.create_node("
name" => name)
end
2
编写函数
3
关联节点
百度商业产品市场部 隆重出品
好友推荐系统核心代码
及测试
4
好友推荐
def suggestions_for(node)
@neo.traverse(node,
"nodes",
{"order" => "breadth first",
"uniqueness" => "node global",
"relationships" => {"type"=>
"friends","direction" => "in"},
"return filter" => {"language" =>
"javascript","body" =>
"position.length() == 2;"},
"depth" => 2}).map{|n|
n["data"]["name"]}.join(", ")
end
5 测试数据
6
李琳= create_person(“李琳”)
陈山 = create_person(“陈山”)
沈彬 = create_person(“沈彬”)
张旭 = create_person(“张旭”)
刘岚 = create_person(“刘岚”)
make_mutual_friends(李琳, 陈山)
make_mutual_friends(陈山, 沈彬)
make_mutual_friends(陈山, 张旭)
make_mutual_friends(沈彬, 张旭)
make_mutual_friends(沈彬, 刘岚)
实验结果
puts “李琳 should become friends
with #{suggestions_for(李琳)}”
# RESULT
# 李琳 should become friends with
张旭, 沈彬
社交网络好友推荐系统的实现
•
•
•
•
百度商业产品市场部 隆重出品
开发环境:Netbeans IDE 6.9.1
(Ruby Bundles)
编程语言:Ruby/Jruby
项目性质:Ruby on Rails
服务器:内置Glassfish 3.0
开发平台
安装
Gems
将Neo4j添加
运行项
到项目构建路
目并适
径中
当调试
新建并
将任务添加到
导入项
rakefile中并启
目
动Neo4j
系统界面
百度商业产品市场部 隆重出品
社交网络好友推荐系统的实现
创建好友邀
请
注册
新用
户
发布
消息
创建好友
关系
系统
功能
推荐
好友
添加评
论
百度商业产品市场部
隆重出品
08级计算机系
吴梦迪
主要结论
1
2
当前数据库架构并不适用于社交网
络的数据量及数据结构,有改进和
扩展的空间;
图形数据库的图形存储模式十分贴合
社交网络模型中国的数据格式,且具
有高效性及高可用性的优势
主要结论
3
Neo4j具有稳定的版本和优秀的绑定
库,能够很好地满足社交网络网站
的数据处理要求,是非常合适的SNS
数据库候选者。
百度商业产品市场部
隆重出品
08级计算机系
吴梦迪
不足
•代码没有深入优化调
整
•网站功能尚在开发中
•实验所用数据集规模
较小
•系统无法插入
中文数据
展望
•深入优化代码
•完善网站功能
•设计更大规模的
测试数据集
不足与展望
百度商业产品市场部
隆重出品
08级计算机系
吴梦迪
The end