文章图片
一、什么是图
图是相互连接的事物及其关系的一种结构化表达 。 一般来讲信息读取是顺序的过程 , 读取之后要求阅读者能够在大脑中将信息串联 , 形成自己的认知 。 而复杂的信息则很有可能造成阅读者的理解障碍 , 像《红楼梦》里面的人物关系 , 很多人就一直也搞不清楚 。 有些人看了很多遍《红楼梦》还是不清楚薛宝钗和史湘云俩人之间是啥亲戚 。 宝玉和贾瑞又该怎么称呼之类的 。
而图则能够即时传达信息 , 易于提示复杂的模式 。 比如说 , 如果有个男人叫小帅 , 他有个弟弟叫小强 , 他们有个漂亮的邻居叫小美 , 他们三个是同一所学校的学生 。 小帅喜欢小美 , 小强也喜欢小美 , 但小美不喜欢小强 , 小美喜欢的人是小帅 。 这么一说是不是看起来很乱?但是用图表示一下就很清楚了 。 像下面这样 。
是不是看起来容易理解多了?这里就用了图结构来表达数据 。
所以图是节点和关系两个元素组成的 , 每个节点代表一个实体 , 例如人 , 地 , 事物 , 类别等 , 每个关系代表两个节点的关联方式 。 在数学里 , 又具体分为无向图(两个节点连接没有方向箭头)、有向图(两个节点之间有方向 , 像上图里面的小强单恋小美)、多重图(允许有多重边的图 , 像上面小强和小帅)、环等 。 在工程实践中 , 我们用到的多为有向多重图 。
数学上 , 图一般用一个顶点和边的集合G=(V , E)来表示 , 其中V指Vertexes(顶点)、E指Edges(边) 。
二、什么是图数据库
了解了图的概念之后 , 我们就可以想到所谓图数据库就是使用图的结构来表示和存储具有图语义数据的数据库了 。 与传统关系型数据库的区别在于 , 图数据库直接将节点与节点之间的关系也保存下来 , 这样在查询的时候 , 两个节点的数据可以直接进行关联 , 这样就会使得查询效率非常高 。 像阿里禁止三个表以上的关联查询 , 如果用图数据库进行查询的话 , 可能就不需要复杂的关联查询了 。
例如上面的三位同学 , 如果小帅想查询小美选了哪些课 , 以便在小美下课时创造偶遇的机会 , 那么在关系型数据库里 , 需要分3步:
第一步 , 通过学生信息表找到小美对应的学号;
第二步 , 使用学号去学生和课程对应关系表中找到小美选课的课程ID;
第三步 , 使用课程ID在课程信息表中找到对应的课程名称等信息 。
这样就需要多次查询或者应用三个表的关联查询 , 效率很低 。 而如果用图数据库的话 , 就不用这么麻烦 , 因为图数据库与关系型数据库的建模方式不同 。 在图数据库里 , 学生和课程都在一张图中 , 小美和三门课程都是节点 , 分别带有标签Student和Course , 他们之间通过属性为选课的边建立关联关系 。 那么在图数据库里 , 小帅查找小美选课时就是这样处理:
第一步 , 通过在学生标签student上建立的索引来找到小美对应的节点;
第二步 , 再通过节点保存的标签为选课的边来找到对应的课程;
第三步 , 读取选课课程信息 。
这样 , 第一步和关系型数据库一样 , 第二步则无需查找 , 直接可以通过数据获取 , 因为一个学生选的课程数量很少 , 而学生和课程对应关系则会很多 , 像一万个学生和一百门课的关系 , 假设每个学生只选5门课 , 那就是五万条数据 , 而在图数据库里则只是一个节点的5个边 。 因些 , 在海量数据的情况下 , 图数据库进行数据查询与分析的速度比关系型数据库 , 快了不止一个数量级 。
- 数据库|卓品智能李大明:中国的工程师红利正在成为科技强国的红利
- MySQL|程序员一句话,穷则思变,你穷就要反思自己穷的原因
- 美团买菜|广州蓝景技术分享——程序员就业需要必备的3个“软技能”
- 数据库|毕业3年被阿里裁员:赔偿款到手30万,有车有房有老婆,底气十足
- 程序员|程序员一句话,穷则思变,你穷就要反思自己穷的原因
- 金融校招季!有人说银行科技岗是程序员最好的就业选择,对吗?
- |程序员应知应会之二进制小数的计算
- 数据库|苹果iPhone最强散热配件来了!看看269元魅族磁吸散热背夹强在哪
- 数据库|余承东:华为的一个细节让美钻了“空子”,但基本解决了
- 5G|一个月 5000元 的公务员和一个月 15000元的程序员,你会选择哪一个?