Nebula Graph is a distributed, fast open-source graph database featuring horizontal scalability and high availability

Overview


English | 中文
A distributed, scalable, lightning-fast graph database

build docker image workflow nebula star nebula fork

What is Nebula Graph?

Nebula Graph is an open-source graph database capable of hosting super large scale graphs with dozens of billions of vertices (nodes) and trillions of edges, with milliseconds of latency.

Compared with other graph database solutions, Nebula Graph has the following advantages:

  • Symmetrically distributed
  • Storage and computing separation
  • Horizontal scalability
  • Strong data consistency by RAFT protocol
  • OpenCypher-compatible query language
  • Role-based access control for higher level security

Notice of Release

The Nebula Graph team is glad to announce the Nebula Graph 2.0.0 GA. This is a brand new start with several important updates, and more of them are on the way. Welcome to join us.

Quick start

Read the Getting started article for a quick start.

Getting help

In case you encounter any problems playing around Nebula Graph, please reach out for help:

Documentation

Architecture

image

Contributing

Contributions are warmly welcomed and greatly appreciated. And here are a few ways you can contribute:

Licensing

Nebula Graph is under Apache 2.0 license, so you can freely download, modify, and deploy the source code to meet your needs. You can also freely deploy Nebula Graph as a back-end service to support your SaaS deployment.

In order to prevent cloud providers monetizing from the project without contributing back, we added Commons Clause 1.0 to the project. As mentioned above, we fully commit to the open source community. We would love to hear your thoughts on the licensing model and are willing to make it more suitable for the community.

Contact

Issues
  • expand logic expression for index scan

    expand logic expression for index scan

    Analyze complex expression and expand the expression for index scan. for example : (t1.c1 == 1 or t1.c2 == 2) and (t1.c3 == 3 or t1.c4 == 4) Will be converted to: (t1.c1==1 AND t1.c3==3) OR (t1.c1==1 AND t1.c4==4) OR (t1.c2==2 AND t1.c3==3) OR (t1.c2==2 AND t1.c4==4)

    ready-for-testing 
    opened by bright-starry-sky 13
  • Crash occurs when the OR operator is used in the WHERE clause of the MATCH query.

    Crash occurs when the OR operator is used in the WHERE clause of the MATCH query.

    Describe the bug

    I ran the query below with the console, and there was a crash.

    ([email protected]) [test]> MATCH (s:user)-[:follow]->(t:user) \
                       -> WHERE s.id == "u00000000000000000000000000000001" OR s.id == "u00000000000000000000000000000002" \
                       -> RETURN s.id AS sid, t.id AS tid
    2021/04/13 22:41:40 [ERROR] Failed to reconnect, Failed to open transport, error: dial tcp 127.0.0.1:9669: connect: connection refused
    2021/04/13 22:41:40 Loop error, Failed to open transport, error: dial tcp 127.0.0.1:9669: connect: connection refused
    
    Bye root!
    Tue, 13 Apr 2021 22:41:40 JST
    
    panic: Loop error, Failed to open transport, error: dial tcp 127.0.0.1:9669: connect: connection refused
    
    goroutine 1 [running]:
    log.Panicf(0x624b08, 0xe, 0xc000047e78, 0x1, 0x1)
            /usr/local/go/src/log/log.go:361 +0xc5
    main.main()
            /home1/irteamsu/nebula-console/main.go:386 +0x4f3
    

    Environments

    • OS
    Linux nebula001-dev 3.10.0-1160.11.1.el7.x86_64 #1 SMP Fri Dec 18 16:34:56 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
    
    • Nebula Version: Nebula RPM package
    nebula-graph-2.0.0.el7.x86_64.rpm
    
    • CPU Info
    Architecture:          x86_64
    CPU op-mode(s):        32-bit, 64-bit
    Byte Order:            Little Endian
    CPU(s):                4
    ...
    Model name:            Intel(R) Xeon(R) Silver 4210 CPU @ 2.20GHz
    ...
    
    • Service Architecture
      • metad: 3ea
      • graphd: 3ea
      • storaged: 3ea

    How To Reproduce

    1. Create tag & edge type
    CREATE TAG user(id fixed_string(33), type int, region fixed_string(2), crtm timestamp);
    CREATE TAG INDEX user_idx_id on user(id);
    REBUILD TAG INDEX user_idx_id
    
    CREATE EDGE follow(crtm int);
    
    1. Insert vertex & edge
    INSERT VERTEX user (id, type, region, crtm) VALUES "u00000000000000000000000000000001":("u00000000000000000000000000000001", 1, "JP", now()); /* 1 million data inserts */
    INSERT EDGE follow(crtm) VALUES "u00000000000000000000000000000001"->"u00000000000000000000000000000002":(now()) /* 1 million data inserts */
    
    1. Execute Match Query
    MATCH (s:user)-[:follow]->(t:user) \
    WHERE s.id == "u00000000000000000000000000000001" OR s.id == "u10002" OR s.id == "u00000000000000000000000000000002" \
    RETURN s.id AS sid, t.id AS tid
    

    Expected behavior The results of the query shall be as follows:

    +-------------------------------------+-------------------------------------+
    | sid                                 | tid                                 |
    +-------------------------------------+-------------------------------------+
    | "u00000000000000000000000000000001" | "u00000000000000000000000000000002" |
    +-------------------------------------+-------------------------------------+
    | "u00000000000000000000000000000001" | "u00000000000000000000000000000003" |
    +-------------------------------------+-------------------------------------+
    | "u00000000000000000000000000000001" | "u00000000000000000000000000000004" |
    +-------------------------------------+-------------------------------------+
    ... more ...
    
    opened by RenmanKang 12
  • `toLower()` does not support in `lookup`

    `toLower()` does not support in `lookup`

    In Nebula Graph version v2.5.0, the following statement is not supported:

    ([email protected]) [basketballplayer]> LOOKUP ON player WHERE player.name CONTAINS toLower("L") \
                                   ->         YIELD player.name, player.age;
    [ERROR (-1009)]: SemanticError: Expression (player.name CONTAINS toLower("L")) not supported yet
    

    But in the previous version, the statement has a return value as follows:

    nebula> LOOKUP ON player WHERE player.name CONTAINS toLower("L") \
            YIELD player.name, player.age;
    +-------------+---------------------+------------+
    | VertexID    | player.name         | player.age |
    +-------------+---------------------+------------+
    | "player145" | "JaVale McGee"      | 31         |
    +-------------+---------------------+------------+
    | "player144" | "Shaquille O'Neal"  | 47         |
    +-------------+---------------------+------------+
    | "player102" | "LaMarcus Aldridge" | 33         |
    +-------------+---------------------+------------+
    
    bug incompatible 
    opened by foesa-yang 10
  • No schema found

    No schema found

    Describe the bug (must be provided) No schema found

    Your Environments (must be provided)

    • OS: Linux linux-MacBook 5.4.0-73-generic #82-Ubuntu SMP Wed Apr 14 17:39:42 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
    • Compliler: g++ (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0 Copyright (C) 2019 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. n or clang version 10.0.0-4ubuntu1 Target: x86_64-pc-linux-gnu Thread model: posix InstalledDir: /usr/bin
    • CPU: Arquitetura: x86_64 Modo(s) operacional da CPU: 32-bit, 64-bit Ordem dos bytes: Little Endian Address sizes: 36 bits physical, 48 bits virtual CPU(s): 2 Lista de CPU(s) on-line: 0,1 Thread(s) per núcleo: 1 Núcleo(s) por soquete: 2 Soquete(s): 1 Nó(s) de NUMA: 1 ID de fornecedor: GenuineIntel Família da CPU: 6 Modelo: 15 Nome do modelo: Intel(R) Core(TM)2 Duo CPU T7500 @ 2.20GHz Step: 11 CPU MHz: 1014.089 CPU MHz máx.: 2200,0000 CPU MHz mín.: 800,0000 BogoMIPS: 4388.79 Virtualização: VT-x cache de L1d: 64 KiB cache de L1i: 64 KiB cache de L2: 4 MiB CPU(s) de nó0 NUMA: 0,1 Vulnerability Itlb multihit: KVM: Mitigation: Split huge pages Vulnerability L1tf: Mitigation; PTE Inversion; VMX EPT disabled Vulnerability Mds: Vulnerable: Clear CPU buffers attempted, no microcode; SMT disabled Vulnerability Meltdown: Mitigation; PTI Vulnerability Spec store bypass: Vulnerable Vulnerability Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization Vulnerability Spectre v2: Mitigation; Full generic retpoline, STIBP disabled, RSB filling Vulnerability Srbds: Not affected Vulnerability Tsx async abort: Not affected Opções: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good nopl cpuid aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtp r pdcm lahf_lm pti tpr_shadow vnmi flexpriority dtherm
    • Commit id (e.g. a3ffc7d8)

    How To Reproduce(must be provided)

    Steps to reproduce the behavior:

    ([email protected]) [test]> create tag usuario(nome string); [ERROR (-8)]: Existed!

    Sun, 13 Jun 2021 09:47:00 -03

    ([email protected]) [test]> insert vertex usuario (nome) values "Bob":("Bob"); [ERROR (-12)]: SemanticError: No schema found for `usuario'

    Sun, 13 Jun 2021 09:47:03 -03

    ([email protected]) [test]>

    Expected behavior

    after you have restarted and the errors below!

    ([email protected]) [test]> insert vertex usuario (nome) values "Bob":("Bob"); Execution succeeded (time spent 103936/56524 us)

    Sun, 13 Jun 2021 10:01:20 -03

    ([email protected]) [test]> Additional context

    [email protected]:~/Downloads$ sudo /usr/local/nebula/scripts/nebula.service restart all [sudo] senha para linux:
    [WARN] The maximum files allowed to open might be too few: 1024 [INFO] Stopping nebula-metad... [INFO] Done [INFO] Starting nebula-metad... [INFO] Done [INFO] Stopping nebula-graphd... [INFO] Done [INFO] Starting nebula-graphd... [INFO] Done [INFO] Stopping nebula-storaged... [INFO] Done [INFO] Starting nebula-storaged... [INFO] Done [email protected]:~/Downloads$ ./nebula-console-v2.0.0-ga -addr=127.0.0.1 -port=9669 -u admin -p admin 2021/06/13 10:00:01 [INFO] connection pool is initialized successfully

    Welcome to Nebula Graph!

    ([email protected]) [(none)]> use test; Execution succeeded (time spent 760237/733622 us)

    Sun, 13 Jun 2021 10:00:06 -03

    ([email protected]) [test]> insert vertex usuario (nome) values "Bob":("Bob"); [ERROR (-8)]: Storage Error: part: 81, error: E_RPC_FAILURE(-3).

    Sun, 13 Jun 2021 10:00:08 -03

    ([email protected]) [test]> insert vertex usuario (nome) values "Bob":("Bob"); [ERROR (-8)]: Storage Error: part: 81, error: E_RPC_FAILURE(-3).

    Sun, 13 Jun 2021 10:00:15 -03

    ([email protected]) [test]>

    question 
    opened by Robson96 10
  • Add opt rules to delete redundant dedup and project plan node

    Add opt rules to delete redundant dedup and project plan node

    1. Merge GetVertices and Dedup: GetVertices(dedup=true)
    2. Merge GetNeighbors and Dedup: GetNeighbors(dedup=true)
    3. Merge GetVertices and Project: GetVertices(srcExpr=projectExpr)
    4. Merge GetNeighbors and Project: GetNeighbors(srcExpr=projectExpr)

    depends on #679

    ready-for-testing 
    opened by yixinglu 8
  • Mixing AND and OR in WHERE in LOOKUP causes strange errors

    Mixing AND and OR in WHERE in LOOKUP causes strange errors

    At first I ran the following statement:

    LOOKUP ON player WHERE player.age < 30 AND player.name == "Yao Ming"
    OR (player.name == "Yao Ming" OR player.name == "Tim Duncan")
    YIELD player.name, player.age;

    The result is as follows:

    image

    Then I tried a shorter statement:

    LOOKUP ON player WHERE player.age < 30 AND player.name == "Yao Ming" OR player.name == "Tim Duncan" YIELD player.name, player.age;

    The result is as follows:

    image

    The results look different. Please take a look at them.

    bug wontfix med-pri 
    opened by randomJoe211 6
  • Find path between two vertex over edges with specific attribute

    Find path between two vertex over edges with specific attribute

    I have create a graph that some attributes on its edges. I am wondering to find path between two vertex over edges filtered on its attribute. To do so I try this query FIND ALL PATH FROM <vertex_id1> TO <vertex_id2> OVER edge.attribute1 == "text";

    but I faced 'SyntaxError'

    Is it possible to filter edges with attribute on path queries?

    opened by hamidehhhs 6
  • update/upsert when statement improves

    update/upsert when statement improves

    create space y2(partition_num=1, replica_factor=1, vid_type=int64);
    use y2
    create tag tag2(col1 int,col2 bool,col3 string);
    insert vertex tag2(col1,col2,col3) values 1:(1,true,"aaa");
    
    ([email protected]) [y2]> fetch prop on tag2 1
    +----------+-----------+-----------+-----------+
    | VertexID | tag2.col1 | tag2.col2 | tag2.col3 |
    +----------+-----------+-----------+-----------+
    | 1        | 1         | true      | "aaa"     |
    +----------+-----------+-----------+-----------+
    Got 1 rows (time spent 3783/4221 us)
    
    update vertex on tag2 1 set col3="bbb" when col1;  
    

    update vertex on tag2 1 set col3="bbb" when col1; This statement should report a syntax error

    opened by panda-sheep 6
  • Alter User to change default root password not working

    Alter User to change default root password not working

    Hello guys, i have create docker nebula with nebula-up. And i access this database with nebula studio. Everything work well create space, node, etc. But i want to change default password for user root with nGQL :

    ALTER USER root WITH PASSWORD 'NerwPassword';
    

    Show success result with green notifications. image

    For check this, i am logout and login again with user = root and pass = nebula --> Still success login and password valid. Any clue about it ?

    opened by Jayuda 5
  • Delete tag

    Delete tag

    https://github.com/vesoft-inc/nebula-storage/pull/541 https://github.com/vesoft-inc/nebula-common/pull/603

    Supported syntax:

    # single tag
    DELETE TAG t1 FROM "a";
    # multiple tag
    DELETE TAG t1,t2 FROM"a" ;
    # all tag
    DELETE TAG * FROM "a";
    
    # delete multiple vertices's tag 
    DELETE TAG t1 FROM "a", "b";
    

    Pipe and var is supported as well.

    doc affected ready-for-testing depend on storage depend on common 
    opened by critical27 5
  • Suggestions for SHOW STATS

    Suggestions for SHOW STATS

    1. SUBMIT JOB STATS and SHOW STATS is a combined workflow, instead of running them separately, why not make them one statement?
    2. If a user has never run SUBMIT JOB STATS but tries to run SHOW STATS directly, the error Key not existed is returned. This error message is confusing. Maybe it should say something like "To make statistics of the graph space, run SUBMIT JOB STATS first, and then run SHOW STATS." And if suggestion 1 is adapted, there would be no such issue. image
    question 
    opened by randomJoe211 5
Releases(v2.5.1)
  • v2.5.1(Sep 17, 2021)

    bug fix:

    • Fixed the performance reduction problems caused by the sessions will update at the next upload period when use space. https://github.com/vesoft-inc/nebula-graph/pull/1355

    • Fixed the performance problems of k8s caused by processing logic of the remote address in connection requests. https://github.com/vesoft-inc/nebula-common/pull/615

    download:

    • CN: https://nebula-graph.com.cn/download/
    • EN: https://nebula-graph.io/download/
    Source code(tar.gz)
    Source code(zip)
  • v2.5.0(Aug 23, 2021)

    feature

    • Support management of session. https://github.com/vesoft-inc/nebula-graph/pull/280
    • Support terminate the slow queries, know issue: there is a delay in querying and terminating the query due to the implementation. https://github.com/vesoft-inc/nebula-graph/pull/1152
    • Enhance the ability to extract the indices from expressions for Lookup statement. https://github.com/vesoft-inc/nebula-graph/pull/1188
    • Supports configuring machine memory watermarks to alleviate OOM issues to some extent. https://github.com/vesoft-inc/nebula-graph/pull/1067
    • Support filter the edges in FindPath statement. https://github.com/vesoft-inc/nebula-graph/pull/1091
    • Support return structure of a graph without properties in Subgraph statement. https://github.com/vesoft-inc/nebula-graph/pull/1134
    • Improve the usage of timestamp function. https://github.com/vesoft-inc/nebula-common/pull/515
    • Support for querying the version of each service. https://github.com/vesoft-inc/nebula-graph/pull/944
    • Index and TTL can be supported together. #382
    • Support the creation of full-text indexes on specified properties. #460
    • Support make comment when create space or schema. https://github.com/vesoft-inc/nebula-graph/pull/895
    • Support for full-text index rebuild. https://github.com/vesoft-inc/nebula-graph/pull/1123

    bug fix

    • Fixed multiple statement execution problems caused by permissions. https://github.com/vesoft-inc/nebula-graph/pull/1165
    • Fixed unwinding causing no results. https://github.com/vesoft-inc/nebula-graph/pull/1018
    • Fixed crash problems caused by aggregation functions in some scenarios. https://github.com/vesoft-inc/nebula-graph/pull/1015
    • Fixed index matching problems with OR expressions. https://github.com/vesoft-inc/nebula-graph/pull/1005
    • Fixed case sensitivity of functions. https://github.com/vesoft-inc/nebula-graph/issues/927
    • Fixed issue where query index creation information was not checked for Tag/Edge type. https://github.com/vesoft-inc/nebula-graph/pull/933
    • Fixed a bug in the Substring function. https://github.com/vesoft-inc/nebula-common/pull/491
    • Fixed meta not returning leader change correctly. #423
    • Fixed an issue with 'LIMIT', 'ORDER', 'GROUP' statements using variables. https://github.com/vesoft-inc/nebula-graph/pull/1314
    • Fixed issue with db_dump tool printing VID of int type. https://github.com/vesoft-inc/nebula-storage/pull/533
    • Fixed the issue that FAILE is still displayed after the Balance task is recovered. https://github.com/vesoft-inc/nebula-storage/pull/528

    enhancement

    • The Listener interface is optimized to support full data acquisition. #465#484
    • The leader table of the meta is reorganized. #439
    • Add a DiskManager to check disk capacity. #461
    • Improve heartbeat of raft to avoid leader change. #438
    • Support concurrently go/fetch/lookup in storage. #503
    • Enhanced for the EXISTS function to the MAP. https://github.com/vesoft-inc/nebula-graph/pull/973
    • Enforce the use of aggregate functions, such as COUNT(v)+AVG(v). https://github.com/vesoft-inc/nebula-graph/pull/968

    change

    • A little bit grammar change of Subgraph
    # Add the WITH PROP keyword to the output property
    GET SUBGRAPH WITH PROP FROM <vids>
    
    # The original syntax will only output the graph structure without properties
    GET SUBGRAPH FROM <vids>
    
    • we must use the symbol $-. in ‘ORDER BY’. But in earlier versions, there is no need. Example:
    Before:
    ([email protected]) [basketballplayer]> LOOKUP ON player \
                                   ->         YIELD player.age As playerage \
                                   ->         | GROUP BY $-.playerage \
                                   ->         YIELD $-.playerage as age, count(*) AS number \
                                   ->         | ORDER BY number DESC, age DESC;
    
    
    From v2.5.0
    ([email protected]) [basketballplayer]> LOOKUP ON player \
                                   ->         YIELD player.age As playerage \
                                   ->         | GROUP BY $-.playerage \
                                   ->         YIELD $-.playerage as age, count(*) AS number \
                                   ->         | ORDER BY $-.number DESC, $-.age DESC;
    
    Source code(tar.gz)
    Source code(zip)
    nebula-graph-2.5.0.el7.x86_64.rpm(70.66 MB)
    nebula-graph-2.5.0.el7.x86_64.rpm.sha256sum.txt(123 bytes)
    nebula-graph-2.5.0.el8.x86_64.rpm(70.07 MB)
    nebula-graph-2.5.0.el8.x86_64.rpm.sha256sum.txt(123 bytes)
    nebula-graph-2.5.0.ubuntu1604.amd64.deb(93.43 MB)
    nebula-graph-2.5.0.ubuntu1604.amd64.deb.sha256sum.txt(129 bytes)
    nebula-graph-2.5.0.ubuntu1804.amd64.deb(93.46 MB)
    nebula-graph-2.5.0.ubuntu1804.amd64.deb.sha256sum.txt(129 bytes)
    nebula-graph-2.5.0.ubuntu2004.amd64.deb(93.42 MB)
    nebula-graph-2.5.0.ubuntu2004.amd64.deb.sha256sum.txt(129 bytes)
  • v2.0.1(Apr 14, 2021)

    Improvements

    • Optimize the performance of StorageClient https://github.com/vesoft-inc/nebula-common/pull/468
    • HTTP GetFlags interface adds support for Unsigned Integers https://github.com/vesoft-inc/nebula-common/pull/469
    • Add check for Raft Listener and Storage Service IP/Port conflicts https://github.com/vesoft-inc/nebula-graph/pull/875, https://github.com/vesoft-inc/nebula-common/pull/470

    Bugfix

    • Fix the issue that the GO statement fails to yield the source vertex properties https://github.com/vesoft-inc/nebula-graph/pull/859
    • Fix the issue that the services may fail to start when the logs directory does not exist https://github.com/vesoft-inc/nebula-graph/pull/873 https://github.com/vesoft-inc/nebula-storage/pull/403
    • Fix the issue that FIND SHORTEST PATH xxx UPTO N STEPS return N+1 steps' path when N is an odd number.https://github.com/vesoft-inc/nebula-graph/pull/912
    • Fix the issue when taking the output of a query as the input of the DELETE statement, SementicError is returned https://github.com/vesoft-inc/nebula-graph/pull/917
    • Fix the issue that the return value of the aggregation function is inconsistence with openCypher if no item is found https://github.com/vesoft-inc/nebula-graph/pull/901 https://github.com/vesoft-inc/nebula-common/pull/480
    • Fix the issue that GetNeighborsIter() may return partial results in cluster mode. https://github.com/vesoft-inc/nebula-graph/pull/922
    • Fix the issue that illegal filtering of aggregate functions in the MATCH ... WHERE clause makes graphd crash. https://github.com/vesoft-inc/nebula-graph/pull/919
    • Fix SemanticError problem when seeking by negative vid https://github.com/vesoft-inc/nebula-graph/pull/932
    • Fix the issue that the TAG/EDGE specification does not work in SHOW CREATE TAG/EDGE INDEX clauses https://github.com/vesoft-inc/nebula-graph/pull/933 https://github.com/vesoft-inc/nebula-storage/pull/426
    • Fix the issue that REBUILD INDEX returns succeed even if failed sometimes. https://github.com/vesoft-inc/nebula-storage/pull/405
    • Fix the issue that the indexes of newly inserted data may fail to update during the rebuilding index process. https://github.com/vesoft-inc/nebula-storage/pull/408
    • Fix the issue that using NULL in substr() or substring() makes graphd crash https://github.com/vesoft-inc/nebula-common/pull/491
    Source code(tar.gz)
    Source code(zip)
    nebula-graph-2.0.1.el7.x86_64.rpm(69.69 MB)
    nebula-graph-2.0.1.el7.x86_64.rpm.sha256sum.txt(123 bytes)
    nebula-graph-2.0.1.el8.x86_64.rpm(69.54 MB)
    nebula-graph-2.0.1.el8.x86_64.rpm.sha256sum.txt(123 bytes)
    nebula-graph-2.0.1.ubuntu1604.amd64.deb(94.57 MB)
    nebula-graph-2.0.1.ubuntu1604.amd64.deb.sha256sum.txt(129 bytes)
    nebula-graph-2.0.1.ubuntu1804.amd64.deb(94.60 MB)
    nebula-graph-2.0.1.ubuntu1804.amd64.deb.sha256sum.txt(129 bytes)
    nebula-graph-2.0.1.ubuntu2004.amd64.deb(94.56 MB)
    nebula-graph-2.0.1.ubuntu2004.amd64.deb.sha256sum.txt(129 bytes)
  • v2.0.0(Mar 23, 2021)

    New Features

    • vertexID supports both Integer and String.
    • New data types:
      • NULL: the property can be set to NULL. NOT NULL constraint is also supported
      • Composite types: LIST, SET, and MAP(Cannot be set as property types)
      • Temporal types: DATE and DATETIME.
      • FIXED_STRING: a fixed size String
    • Full-text indexes are supported to do prefix, wildcard, regex, and fuzzy search on a string property.
    • Explain & Profile outputs the execution plan of an nGQL statement and execution profile.
    • Subgraph to retrieve vertices and edges reachable from the start vertices.
    • Support to collect statistics of the graph space.
    • OpenCypher compatibility
      • Partially support the MATCH clause
      • Support RETURN, WITH, UNWIND, LIMIT & SKIP clauses
    • More built-in functions
      • Predicate functions
      • Scalar functions
      • List functions
      • Aggregating functions
      • Mathematical functions
      • String functions
      • Temporal functions

    Improvements

    • Optimize the performance of inserting, updating, and deleting data with indexes.
    • LOOKUP ON filtering data supports OR and AND operators.
    • FIND PATH supports finding paths with or without regard to direction, and also supports excluding cycles in paths.
    • SHOW HOSTS graph/meta/storage supports to retrieve the basic information of graphd/metad/storaged hosts.

    Changelog

    • The data type of vertexID must be specified when creating a graph space.
    • FETCH PROP ON returns a composite object if not specify the result set.
    • Changed the default port numbers of metad, graphd, and storaged.
    • Refactor metrics counters.

    Nebula-graph Console

    Supports local commands mode. :set csv outputs the query results to the console and the specified CSV file. For more information, please refer to https://github.com/vesoft-inc/nebula-console.

    Clients

    Support connection pool and load balance.

    • cpp client https://github.com/vesoft-inc/nebula-cpp
    • java client https://github.com/vesoft-inc/nebula-java
    • python client https://github.com/vesoft-inc/nebula-python
    • go client https://github.com/vesoft-inc/nebula-go

    Nebula Graph Studio

    With Studio, you can create a graph schema, load data, execute nGQL statements, and explore graphs in one stop. For more information, please refer to https://github.com/vesoft-inc/nebula-web-docker.

    Known Issues

    • https://github.com/vesoft-inc/nebula-graph/issues/860
    Source code(tar.gz)
    Source code(zip)
    nebula-graph-2.0.0.el6.x86_64.rpm(72.92 MB)
    nebula-graph-2.0.0.el7.x86_64.rpm(69.66 MB)
    nebula-graph-2.0.0.el8.x86_64.rpm(69.51 MB)
    nebula-graph-2.0.0.ubuntu1604.amd64.deb(94.53 MB)
    nebula-graph-2.0.0.ubuntu1804.amd64.deb(94.56 MB)
    nebula-graph-2.0.0.ubuntu2004.amd64.deb(94.51 MB)
  • v2.0.0-rc1(Jan 6, 2021)

    New Features

    • Add Integer vertexID support #496 https://github.com/vesoft-inc/nebula-common/pull/351, https://github.com/vesoft-inc/nebula-storage/pull/246, https://github.com/vesoft-inc/nebula-docs/pull/264
    • FIND PATH supports to find paths with or without regard to direction #464, and also supports to exclude cycles in paths #461.
    • SHOW HOSTS graph/meta/storage supports to retrieve the basic information of graphd/metad/storaged hosts. https://github.com/vesoft-inc/nebula-graph/pull/437 https://github.com/vesoft-inc/nebula-common/pull/325 https://github.com/vesoft-inc/nebula-storage/pull/223
    • BALANCE DATA RESET PLAN supports resetting the last failed plan https://github.com/vesoft-inc/nebula-common/pull/342 https://github.com/vesoft-inc/nebula-storage/pull/232.
    • Enhance MATCH clause support, for more information please visit Match doc.
    • Add path manipulation support https://github.com/vesoft-inc/nebula-common/pull/306, https://github.com/vesoft-inc/nebula-common/pull/358

    Changelog

    • Changed the default port numbers of metad, graphd, storaged. #474, https://github.com/vesoft-inc/nebula-storage/pull/239
    Source code(tar.gz)
    Source code(zip)
    nebula-graph-2.0.0-rc1.el6.x86_64.rpm(72.69 MB)
    nebula-graph-2.0.0-rc1.el7.x86_64.rpm(69.41 MB)
    nebula-graph-2.0.0-rc1.el8.x86_64.rpm(69.26 MB)
    nebula-graph-2.0.0-rc1.ubuntu1604.amd64.deb(94.26 MB)
    nebula-graph-2.0.0-rc1.ubuntu1804.amd64.deb(94.30 MB)
    nebula-graph-2.0.0-rc1.ubuntu2004.amd64.deb(94.25 MB)
  • v2.0.0-beta(Nov 30, 2020)

    Nebula Graph

    Note: Schema & data are not compatible with 1.0 yet. Still working on the compatibility.

    Compatibility with more nGQL 1.x queries

    • DESCRIBE TAG/EDGE INDEX is to obtain information about the index.
    • REBUILD TAG/EDGE INDEX is to rebuild an index.
    • SHOW TAG/EDGE INDEXES is to list the created indexes.
    • SHOW TAG/EDGE INDEXES STATUS is to return the created index status.

    New Features

    • full-text search, allows users to write queries that match terms anywhere within the indexed string properties.
    • LOOKUP ON TAG/EDGE is to get all vertices of a tag or edges of an edge type.
    • SUBMIT JOB STATS & SHOW STATS is to get all vertices and edges in the current space.
    • Support more openCypher Clauses.
      • Partially supported MATCH clause
      • RETURN & DISTINCT
      • LIMIT & SKIP
    • Add more built-in functions
      • Predicate functions
      • Scalar functions
      • List functions
      • Aggregating functions
      • Mathematical functions
      • String functions
      • Temporal functions

    Clients

    Nebula Graph Studio

    • Compatible with Nebula Graph 2.x,refer to Studio.

    Tools

    Source code(tar.gz)
    Source code(zip)
    nebula-graph-2.0.0-beta.el6.x86_64.rpm(70.21 MB)
    nebula-graph-2.0.0-beta.el7.x86_64.rpm(67.08 MB)
    nebula-graph-2.0.0-beta.el8.x86_64.rpm(66.92 MB)
    nebula-graph-2.0.0-beta.ubuntu1604.amd64.deb(90.80 MB)
    nebula-graph-2.0.0-beta.ubuntu1804.amd64.deb(90.83 MB)
    nebula-graph-2.0.0-beta.ubuntu2004.amd64.deb(90.79 MB)
  • v2.0.0-alpha(Oct 30, 2020)

    Nebula Graph

    Note: Schema & data are not compatible with 1.0 yet. Still working on the compatibility.

    New Features

    • Support String vertex ID
    • New data types
      • NULL, the property for vertices or edges can be set to NULL. NOT NULL constraint is supported to ensure the property values are not NULL.
      • Composite types: list, set and map(Cannot be stored as properties).
      • Temporal types like DATE and DATETIME.
    • New Functions
      • size() returns the number of items in a list
      • time() returns the current Time
      • date() or datetime() Returns the current Date or DateTime
      • id() returns the id of a vertex
      • tags() and labels() return the tags of the vertex
      • collect(), an aggregation function, returns a list containing the values returned by an expression
      • collect_set(), aggregation function, returns a set containing the values returned by an expression
      • properties() returns a map containing all the properties of a vertex or an edge
      • type() returns the edge type of an edge
      • src() returns the src id of an edge
      • dst() returns the dst id of an edge
      • rank() returns the rank of an edge
    • New Operators
      • IN checks if a specified value matches any value in a list.
      • CONTAINS performs a case-sensitive match regardless of location within a string.
      • STARTS WITH performs a case-sensitive match for the beginning of a string.
      • ENDS WITH performs a case-sensitive match for the ending of a string.
    • Explain & Profile. EXPLAIN displays the execution plan of a nGQL statement without executing the statement. PROFILE executes the statement, then outputs the execution plan as well as the execution profile.
    • Subgraph. GET SUBGRAPH statement retrieves information of vertices and edges reachable from the start vertices over the specified edges to the maximum number of hops.
    • Partially supported MATCH statement.
    • A DELETE statement can have an input from the pipeline |.

    Features different from 1.0

    • CREATE SPACE supports specifying the type of vertex ID. The type fixed_string( int64 will be supported in the next release).
    • Simplify UPDATE/UPSERT statement.
    • UPSERT ... SET the unspecified properties will be set to the default value when inserting a new vertex/edge. If no default value is set, they will be set to NULL. If the NOT NULL constraint is set on the property, an error will return.
    • $- in the pipeline statement is not equal to $-.id anymore.
    • The expression specified in the default value will be computed when the data inserted instead of schema defined.

    Upcoming Soon (Work in process)

    • DESCRIBE TAG/EDGE INDEX
    • REBUILD TAG/EDGE INDEX
    • SHOW TAG/EDGE INDEXES
    • SHOW TAG/EDGE INDEX STATUS
    • FETCH PROP ON multiple tags
    • Compatible with 1.0 Integer vertex ID
    • Support more OpenCypher statements
    • Backup & Restore
    • Fulltext search

    Console

    • Nebula-console supports local commands now. For example, :set csv outputs the query results to the console and the specified CSV file. For more information, please refer to nebula-console.

    Clients

    • Java
    • Python
    • Golang

    Clients support connection pooling and load balancing. For more information, please refer to nebula-clients.

    Studio

    • Not Compatible with Nebula Graph 2.0 yet (Working in progress).

    Document

    Source code(tar.gz)
    Source code(zip)
    nebula-graph-2.0.0-alpha.el6.x86_64.rpm(67.85 MB)
    nebula-graph-2.0.0-alpha.el7.x86_64.rpm(64.85 MB)
    nebula-graph-2.0.0-alpha.el8.x86_64.rpm(64.69 MB)
    nebula-graph-2.0.0-alpha.ubuntu1604.amd64.deb(87.60 MB)
    nebula-graph-2.0.0-alpha.ubuntu1804.amd64.deb(87.62 MB)
    nebula-graph-2.0.0-alpha.ubuntu2004.amd64.deb(87.58 MB)
dqlite is a C library that implements an embeddable and replicated SQL database engine with high-availability and automatic failover

dqlite dqlite is a C library that implements an embeddable and replicated SQL database engine with high-availability and automatic failover. The acron

Canonical 3.1k Aug 10, 2022
MySQL Server, the world's most popular open source database, and MySQL Cluster, a real-time, open source transactional database.

Copyright (c) 2000, 2021, Oracle and/or its affiliates. This is a release of MySQL, an SQL database server. License information can be found in the

MySQL 8.1k Aug 16, 2022
Kunlun distributed DBMS is a NewSQL OLTP relational distributed database management system

Kunlun distributed DBMS is a NewSQL OLTP relational distributed database management system. Application developers can use Kunlun to build IT systems that handles terabytes of data, without any effort on their part to implement data sharding, distributed transaction processing, distributed query processing, crash safety, high availability, strong consistency, horizontal scalability. All these powerful features are provided by Kunlun.

zettadb 105 Aug 3, 2022
YugabyteDB is a high-performance, cloud-native distributed SQL database that aims to support all PostgreSQL features

YugabyteDB is a high-performance, cloud-native distributed SQL database that aims to support all PostgreSQL features. It is best to fit for cloud-native OLTP (i.e. real-time, business-critical) applications that need absolute data correctness and require at least one of the following: scalability, high tolerance to failures, or globally-distributed deployments.

yugabyte 6.8k Aug 13, 2022
DB Browser for SQLite (DB4S) is a high quality, visual, open source tool to create, design, and edit database files compatible with SQLite.

DB Browser for SQLite What it is DB Browser for SQLite (DB4S) is a high quality, visual, open source tool to create, design, and edit database files c

null 16.9k Aug 8, 2022
GridDB is a next-generation open source database that makes time series IoT and big data fast,and easy.

Overview GridDB is Database for IoT with both NoSQL interface and SQL Interface. Please refer to GridDB Features Reference for functionality. This rep

GridDB 1.8k Aug 10, 2022
BaikalDB, A Distributed HTAP Database.

BaikalDB supports sequential and randomised realtime read/write of structural data in petabytes-scale. BaikalDB is compatible with MySQL protocol and it supports MySQL style SQL dialect, by which users can migrate their data storage from MySQL to BaikalDB seamlessly.

Baidu 967 Aug 15, 2022
GalaxyEngine is a MySQL branch originated from Alibaba Group, especially supports large-scale distributed database system.

GalaxyEngine is a MySQL branch originated from Alibaba Group, especially supports large-scale distributed database system.

null 235 Jul 28, 2022
FoundationDB - the open source, distributed, transactional key-value store

FoundationDB is a distributed database designed to handle large volumes of structured data across clusters of commodity servers. It organizes data as

Apple 11.6k Aug 11, 2022
A mini database for learning database

A mini database for learning database

Chuckie Tan 4 Jul 21, 2022
MillenniumDB is a graph oriented database management system

Millennium DB MillenniumDB is a graph oriented database management system developed by the Millennium Institute for Foundational Research on Data (IMF

null 22 Jul 9, 2022
PGSpider: High-Performance SQL Cluster Engine for distributed big data.

PGSpider: High-Performance SQL Cluster Engine for distributed big data.

PGSpider 130 Jul 31, 2022
TimescaleDB is an open-source database designed to make SQL scalable for time-series data.

An open-source time-series SQL database optimized for fast ingest and complex queries. Packaged as a PostgreSQL extension.

Timescale 13.4k Aug 7, 2022
PolarDB for PostgreSQL (PolarDB for short) is an open source database system based on PostgreSQL.

PolarDB for PostgreSQL (PolarDB for short) is an open source database system based on PostgreSQL. It extends PostgreSQL to become a share-nothing distributed database, which supports global data consistency and ACID across database nodes, distributed SQL processing, and data redundancy and high availability through Paxos based replication. PolarDB is designed to add values and new features to PostgreSQL in dimensions of high performance, scalability, high availability, and elasticity. At the same time, PolarDB remains SQL compatibility to single-node PostgreSQL with best effort.

Alibaba 2.4k Aug 12, 2022
The open-source database for the realtime web.

RethinkDB What is RethinkDB? Open-source database for building realtime web applications NoSQL database that stores schemaless JSON documents Distribu

RethinkDB 25.6k Aug 15, 2022
ObjectBox C and C++: super-fast database for objects and structs

ObjectBox Embedded Database for C and C++ ObjectBox is a superfast C and C++ database for embedded devices (mobile and IoT), desktop and server apps.

ObjectBox 137 Aug 7, 2022
SiriDB is a highly-scalable, robust and super fast time series database

SiriDB is a highly-scalable, robust and super fast time series database. Build from the ground up SiriDB uses a unique mechanism to operate without a global index and allows server resources to be added on the fly. SiriDB's unique query language includes dynamic grouping of time series for easy analysis over large amounts of time series.

SiriDB 464 Jun 13, 2022
A very fast lightweight embedded database engine with a built-in query language.

upscaledb 2.2.1 Fr 10. Mär 21:33:03 CET 2017 (C) Christoph Rupp, [email protected]; http://www.upscaledb.com This is t

Christoph Rupp 539 Aug 12, 2022
libmdbx is an extremely fast, compact, powerful, embedded, transactional key-value database, with permissive license

One of the fastest embeddable key-value ACID database without WAL. libmdbx surpasses the legendary LMDB in terms of reliability, features and performance.

Леонид Юрьев (Leonid Yuriev) 1k Apr 13, 2022