zoukankan      html  css  js  c++  java
  • Neo4j 初体验

    最新新功能中有知识图谱的功能。根据了解后,其数据的主要形式,是以数据、关系存储。

    这样比较符合 NOSQL 的,推荐使用的是图数据库 Neo4j 。

    这几天安装了环境,并实现基本的代码连接、操作功能。

    一、安装

    Neo4j 的安装还是挺方便快捷的,也比较简单。

    Windows 安装

    1、下载

    直接在官网下载,根据自己需求下载对应版本。

    下载安装官方地址。

      a、下载压缩包文件

      b、解译到对应目录

    2、启动服务

    1、Install service
    bin\neo4j install-service
    
    2、Update service
    bin\neo4j update-service
    
    3、Start service
    bin\neo4j start
    
    4、查看状态
    bin\neo4j status
    
    5、Restart service
    bin\neo4j restart

    Linux 安装

    Linux 的安装基本同 Windows 的安装,一样下载、解压、启动服务。

    在下载时会跳转到对应的安装帮助页面,在这里也有具体的操作指示。

    配置修改

    在安装目录下找到conf目录下的neo4j.conf文件,修改相应配置如下:
    # 修改第22行load csv时l路径,在前面加个#,可从任意路径读取文件 #dbms.directories.import
    =import
    # 修改54行,去掉改行的#,可以远程通过ip访问neo4j数据库 dbms.connectors.default_listen_address
    =0.0.0.0

    # 默认 bolt端口是7687,http端口是7474,https关口是7473,不修改下面3项也可以 # 修改71行,去掉#,设置http端口为7687,端口可以自定义,只要不和其他端口冲突就行 dbms.connector.bolt.listen_address=:7687 # 修改75行,去掉#,设置http端口为7474,端口可以自定义,只要不和其他端口冲突就行 dbms.connector.http.listen_address=:7474 # 修改79行,去掉#,设置http端口为7473,端口可以自定义,只要不和其他端口冲突就行 dbms.connector.https.listen_address=:7473

    # 修改245行,去掉#,允许从远程url来load csv dbms.security.allow_csv_import_from_file_urls=true

    # 修改265行,设置neo4j可读可写 dbms.read_only=false

    上面的行数只供参考,版本不一样行数不一样

    二、3.x 和 4.x 区别

    1、JDK 版本差异

    3.x 使用的的 JDK 8(1.8)

    4.x 使用的是 JDK11 

    所以在安装前查看已有环境的 JDK,再选择合适的版本。

    2、库差异

    3.x 版本只支持一个库

    4.x 版本可以是多库的

    三、.NET 连接操作

    .NET 官方开发简介

    .NET 开发官方有对应的驱动库使用。

    在 NuGet 上面搜索:Neo4j.Driver 

    在项目中引入即可,基本的使用如下:

        [Route("[controller]")]
        [ApiController]
        public class Neo4jTestController : ControllerBase
        {
            private readonly IDriver driver;
            private readonly string url = "bolt://localhost:7687";
            private readonly string userName = "neo4j";
            private readonly string password = "neo4j";
    
            public Neo4jTestController() 
            {
                driver = GraphDatabase.Driver(url,AuthTokens.Basic( userName, password));
            }
    
            // GET: api/<Neo4jTestController>
            [HttpGet]
            async public IAsyncEnumerable<string> Get()
            {
                List<string> result = new List<string>();
                using (IAsyncSession session = Neo4jDriverLifecycle.Driver.AsyncSession(o => o.WithDatabase("neo4j")))
                {
                    IResultCursor cursor = await session.RunAsync("MATCH (a:Person) RETURN a.name as name");
                    result = await cursor.ToListAsync(record => record["name"].As<string>());
                }
                yield return string.Join(",", result);
            }
        }

    Neo4j.Driver  是可以向下兼容的有一点需要注意。

    注意:数据库使用

    3.x 只要一个数据库,所以在使用是有一句需要修改

    IAsyncSession session = Neo4jDriverLifecycle.Driver.AsyncSession()

    把 WithDatabase 去掉,否则会报错:

    Neo4j.Driver.ClientException: Driver is connected to a server that does not support multiple databases.

    参考:

    官方操作手册

    官方开发文档

    Neo4j.Driver 源码

    Neo4j.Driver API(不是最新,更新到4.2)

  • 相关阅读:
    HDU 1240 Asteroids!【BFS】
    POJ 2251 Dungeon Master【BFS】
    HDU 1548 A strange lift【BFS】
    HDU 1171 Big Event in HDU【01背包】
    HDU 1505 City Game【DP】
    POJ 2386 Lake Counting【BFS】
    POJ 3278 Catch That Cow【BFS】
    HDU 1506 Largest Rectangle in a Histogram【DP】
    随想而已
    HDU 1285 确定比赛名次【拓扑排序】
  • 原文地址:https://www.cnblogs.com/zhurong/p/15727444.html
Copyright © 2011-2022 走看看