这个问题,要追述到以前的一次爬虫。
以前需要做一个需求,就是去爬天眼查的企业信息。
当时有这么一个需求人物关系图,那时候还没有接触Neo4j用的还是关系型数据库来处理。
如果你用mysql这类关系型数据库处理数据也是非常麻烦的。
redis,monogod这类nosql数据库,虽然可以处理,可是处理起来还是相当麻烦!!
这个时候我们就要介绍我们的主角Neo4j
Neo4j是什么
首先我们要了解下什么是Neo4j。Neo4j是一个高性能的、NoSQL图形数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络(从数学角度叫做图)上而不是表中。Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。
程序员工作在一个面向对象的、灵活的网络结构下而不是严格、静态的表中——但是他们可以享受到具备完全的事务特性、企业级的数据库的所有好处。
上面的介绍比较正式,看了好像有点懵。其实,简单的说,Neo4j就是一个存储节点和边的图数据库,就类似树形结构一样,根节点—>子节点—>子节点。
为什么要用Neo4j
用MySQL存储的好好的,为啥要用Neo4j,相信很多人都有这个疑惑。
首先,正如上面所介绍的,Neo4j是一个NoSQL图形数据库。作为一个图形数据库,Neo4j具有以下优点:
灵活。不管有什么新的数据需要存储,Neo4j都是一律的节点和边,只需要考虑节点属性和边属性。但是在MySQL中存储的话需要很多表,并且表之间需要做join操作。
语句简单。相比SQL语句,CQL简单很多(CQL是什么?CQL代表Cypher查询语言,Neo4j将CQL作为查询语言,就像MySQL和SQL的关系一样)
数据库操作的速度并不会随着数据库的增大有明显的降低。这得益于Neo4j特殊的数据存储结构和专门优化的图算法。
什么场景使用
欺诈检测
通过图分析可以清楚地知道洗钱网络及相关嫌疑,例如对用户所使用的帐号、发生交易时的IP地址、MAC地址、手机IMEI号等进行关联分析。
推荐系统
比如你在淘宝上浏览了Thinkpad T480,它就在下面的猜你喜欢,推荐你Thinkpad E430,Thinkpad T580。
社交网络图
社区聚类分析,朋友朋友推荐(就像使用QQ的时候,王姨和你有32个共同好友),社交电商里面的绑定关系。
身份和访问管理
使用图形数据库进行身份和访问管理时,可以快速有效地跟踪用户,资产,关系和授权。
当然,使用场景远远不止这些,具体还要根据特定场景来判断,大数据的单商品数据销售渠道分析也可以用Neo4j来处理。
Neo4j - CQL简介
CQL代表Cypher查询语言。 像Oracle数据库具有查询语言SQL,Neo4j具有CQL作为查询语言。
Neo4j CQL -
它是Neo4j图形数据库的查询语言。
它是一种声明性模式匹配语言
它遵循SQL语法。
它的语法是非常简单且人性化、可读的格式。
如Oracle SQL -
Neo4j CQL 已命令来执行数据库操作。
Neo4j CQL 支持多个子句像在哪里,顺序等,以非常简单的方式编写非常复杂的查询。
NNeo4j CQL 支持一些功能,如字符串,Aggregation.In 加入他们,它还支持一些关系功能。
Neo4j CQL命令/条款
常用的Neo4j CQL命令/条款如下:
S.No. CQL命令/条 用法
1。 CREATE
创建 创建节点,关系和属性
2。 MATCH
匹配 检索有关节点,关系和属性数据
3。 RETURN
返回 返回查询结果
4。 WHERE
哪里 提供条件过滤检索数据
5。 DELETE
删除 删除节点和关系
6。 REMOVE
移除 删除节点和关系的属性
7。
ORDER BY
以…排序
排序检索数据
8。 SET
组 添加或更新标签
Neo4j CQL 函数
以下是常用的Neo4j CQL函数:
S.No. 定制列表功能 用法
1。 String
字符串 它们用于使用String字面量。
2。 Aggregation
聚合 它们用于对CQL查询结果执行一些聚合操作。
3。 Relationship
关系 他们用于获取关系的细节,如startnode,endnode等。
我们将在后面的章节中详细讨论所有Neo4j CQL命令,子句和函数语法,用法和示例。
Neo4j CQL数据类型
这些数据类型与Java语言类似。 它们用于定义节点或关系的属性
Neo4j CQL支持以下数据类型:
S.No. CQL数据类型 用法
- boolean 用于表示布尔文字:true,false。
- byte 用于表示8位整数。
- short 用于表示16位整数。
- int 用于表示32位整数。
- long 用于表示64位整数。
- float I用于表示32位浮点数。
- double 用于表示64位浮点数。
- char 用于表示16位字符。
- String 用于表示字符串。
当然有很多基础,这个就要大家去学习了