• 图数据库学习笔记(一)


    图(Graph)

    图论(Graph theory)

    数据库(Database)

    ● 节点,即前面提到的对象或实体:数学中通常称为顶点(vertices),而在本书或图数据库中,比如Neo4j,通常称为节点(nodes)。

    ● 节点之间的连接:数学中称为边(edges),而本书中称为关系(relationships)。

    ● 节点和关系相互连接构成一个图:许多重要的度量指标,例如连接到一个节点的边数(称之为度)就可以确定下来。许多其他度量指标也就自然形成。

    ● Dijkstra算法:这是一个最有名的算法,可用于计算图中两个节点之间的最短加权路径,图中边上可赋予权重或成本。

    ● A*(A-star)算法:Dijkstra算法的一个变种,使用启发式来更有效地预测最短路径搜索。当A*算法发现潜在的图路径时,将其保存到一个带排序的优先队列中作为备选路径段,并计算出路径搜索过程中不同参数条件下过去路径(past path)和将来路径(futurepath)可能的开销。

    ● PageRank算法

    大多数NoSQL数据库的基本理念是面向任务(task-oriented)的数据库管理系统。

    除SQL数据库外,其他的可以分成四类:

    ● 键值存储(key-value stores):键值存储的产品还有DynamoDB、Riak、Project Voldemort、Redis、Aerospike等。

    ● 列式存储(column-family stores):如Apache Cassandra和HBase。大多数情况下,这些系统可结合Map/Reduce批处理来处理高级查询

    ● 文档存储(document stores):文档存储中的关键概念——文档,是一个半结构化的信息单元,可以是XML、JSON、YAML、OpenOffice、MS Office,或者其他任何可用的文档。其存储和检索为简单的无模式方式。文档存储产品包括广受欢迎的MongoDB、Apache CouchDB、MarkLogic和Virtuoso等。

    ● 图数据库(graph databases):通常也归为NoSQL数据库,但与其他三类有着本质上的差异。图数据库所要解决的问题与图和图论相关。图数据库,例如Neo4j,其目的是为用户提供一种更好的方法用于管理结构复杂、呈网状分布的数据。

    节点标签(Label)是对图中节点进行语义分类的一种方法。一个节点可以拥有零个、一个或多个标签,其使用方式类似于Gmail收件箱中的标签。在图结构中,标签本质上是一个集合概念:允许在数据库中轻松有效地创建子图,这有很多用途,比如仅查询部分数据库内容。最重要的是,可以使用标签在数据库中直接创建某种类型结构或模式,而不用自己去实现(在Neo4j 2.0之前版本需要自行实现)。带有一个标签的节点可对应于关系数据库表中的一行,而有多个标签的节点就没有与之对应的。虽然没有强制,但节点应该至少有一个标签。

    关系类型(Type)功能上与节点标签相似,只是仅用在关系上,但目的完全不同。关系类型是关系上的强制性属性(每个关系必须有且仅有一个类型,但两个节点之间可以有多个关系),主要用于图的复杂深度遍历,一个特定的查询需指定一个节点到另一个节点的特定路径类型。

    使用图数据库的场景:

    1、复杂查询

    复杂查询本质上包含大量的复杂连接操作(join operations)。

    2、实时数据的点击流查询

    3、路径查询

       查找不同数据元素之间是如何相互关联的。换句话说,就是在图中不同节点之间查找路径。在其他数据库管理系统中,这类查询问题需要清楚地了解可能路径的结构,也就是说,必须告诉数据库如何从一个表跳到另一个表。而在图数据库中,通常不需要这样做,虽然还可以采用上述方法,只需告诉数据库采用何种图算法、起始节点和终止节点,系统就将自动完成查询。图数据库自行判定数据是否连接以及如何连接,并采用路径表达式返回结果。

  • 相关阅读:
    Chrome Extension 扩展程序 小白入门
    gulp 打包报错:ReferenceError: internalBinding is not defined
    error in static/js/xxx.js from UglifyJs Unpected token: punc() [static/js/xxx.js]
    ES6-
    浏览器的渲染原理(转载)
    nodeType、nodeName和nodeValue
    浏览器 HTTP 协议缓存机制详解
    JS函数的上下文环境
    ready和onload的区别
    自定义事件
  • 原文地址:https://www.cnblogs.com/cocoxu1992/p/12738463.html
Copyright © 2020-2023  润新知