Ragedb
In Memory Property Graph Server using a Shared Nothing design
Install / Use
/learn @ragedb/RagedbREADME
RageDB
<p align="center"><img src="https://raw.githubusercontent.com/ragedb/ragedb.github.io/main/images/mascot-logo.webp" alt="ragedb mascot" width="660"/></p> <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=53459147-2981-4e5a-97bd-d40d0faa0954" />
In Memory Property Graph Server using the Shared Nothing design from Seastar.
- Faster than a speeding bullet train
- Connect from anywhere via HTTP
- Use the Lua programming language to query
- Apache License, version 2.0
Bring up the main website and documentation ragedb.com while you spin up an instance on docker right now:
Docker
docker pull dockerhub.ragedb.com/ragedb/ragedb
docker run -u 0 -p 127.0.0.1:7243:7243 --name ragedb -t dockerhub.ragedb.com/ragedb/ragedb:latest --cap-add=sys_nice
If you are running Docker on a Mac or Windows Host, you may see this error message:
WARNING: unable to mbind shard memory; performance may suffer:
Run Docker on a Linux host for the best performance.
Terraform
- This is work in progress, if you can make this better please help!
- Generate an SSH key if you don't already have one with
ssh-keygen -t rsa -b 4096. - Install Terraform
- Install the AWS CLI.
- Configure the AWS CLI with an access key ID and secret access key.
Variables
your_region
- Which AWS Region. The options are here.
- E.g.
eu-west-2.
your_public_key
- This will be in
~/.ssh/id_rsa.pubby default.
Steps
- Run
terraform init. - Run
terraform apply. - Wait a few minutes for the code to compile and the server to spin up.
- Copy the IP output by the previous command into your browser http://x.x.x.x:/7243
- Do Graphy Stuff.
- Irrecoverably shut everything down with
terraform destroy.
This will bring up an r5.2xlarge with 4 cores set to 1 thread per core with 100 GB of space.
HTTP API
Schema
Restore Graph
:POST /db/{graph}/restore
Delete Graph
:DELETE /db/{graph}/schema
Get Node Types
:GET /db/{graph}/schema/nodes
Get a Node Type
:GET /db/{graph}/schema/nodes/{type}
Create a Node Type
:POST /db/{graph}/schema/nodes/{type}
Delete a Node Type
:DELETE /db/{graph}/schema/nodes/{type}
Get Relationship Types
:GET /db/{graph}/schema/relationships
Get a Relationship Type
:GET /db/{graph}/schema/relationships/{type}
Create a Relationship Type
:POST /db/{graph}/schema/relationships/{type}
Delete a Relationship Type
:DELETE /db/{graph}/schema/relationships/{type}
RageDB currently supports booleans, 64-bit integers, 64-bit doubles, strings and lists of the preceding data types:
boolean, integer, double, string, boolean_list, integer_list, double_list, string_list
Get a Node Property Type
:GET /db/{graph}/schema/nodes/{type}/properties/{property}
Create a Node Property Type
:POST /db/{graph}/schema/nodes/{type}/properties/{property}/{data_type}
Delete a Node Property Type
:DELETE /db/{graph}/schema/nodes/{type}/properties/{property}
Get a Relationship Property Type
:GET /db/{graph}/schema/relationships/{type}/properties/{property}
Create a Relationship Property Type
:POST /db/{graph}/schema/relationships/{type}/properties/{property}/{data_type}
Delete a Relationship Property Type
:DELETE /db/{graph}/schema/relationships/{type}/properties/{property}
Nodes
Get All Nodes
:GET /db/{graph}/nodes?limit=100&skip=0
Get All Nodes of a Type
:GET /db/{graph}/nodes/{type}?limit=100&skip=0
Get A Node By Type and Key
:GET /db/{graph}/node/{type}/{key}
Get A Node By Id
:GET /db/{graph}/node/{id}
Create A Node
:POST /db/{graph}/node/{type}/{key}
JSON formatted Body: {properties}
Delete A Node By Type and Key
:DELETE /db/{graph}/node/{type}/{key}
Delete A Node By Id
:DELETE /db/{graph}/node/{id}
Find Nodes
:POST /db/{graph}/nodes/{type}/{property}/{operation}?limit=100&skip=0 {json value}
Node Properties
Get the Properties of a Node By Type and Key
:GET /db/{graph}/node/{type}/{key}/properties
Get the Properties of a Node By Id
:GET /db/{graph}/node/{id}/properties
Reset the Properties of a Node By Type and Key
:POST /db/{graph}/node/{type}/{key}/properties
JSON formatted Body: {properties}
Reset the Properties of a Node By Id
:POST /db/{graph}/node/{id}/properties
JSON formatted Body: {properties}
Set some Properties of a Node By Type and Key
:PUT /db/{graph}/node/{type}/{key}/properties
JSON formatted Body: {properties}
Set some Properties of a Node By Id
:PUT /db/{graph}/node/{id}/properties
JSON formatted Body: {properties}
Delete the Properties of a Node By Type and Key
:DELETE /db/{graph}/node/{type}/{key}/properties
Delete the Properties of a Node By Id
:DELETE /db/{graph}/node/{id}/properties
Get a Property of a Node By Type and Key
:GET /db/{graph}/node/{type}/{key}/property/{property}
Get a Property of a Node By Id
:GET /db/{graph}/node/{id}/property/{property}
Create a Property of a Node By Type and Key
:PUT /db/{graph}/node/{type}/{key}/property/{property}
JSON formatted Body: {property}
Create a Property of a Node By Id
:PUT /db/{graph}/node/{id}/property/{property}
JSON formatted Body: {property}
Delete a Property of a Node By Type and Key
:DELETE /db/{graph}/node/{type}/{key}/property/{property}
Delete a Property of a Node By Id
:DELETE /db/{graph}/node/{id}/property/{property}
Relationships
Get All Relationships
:GET /db/{graph}/relationships?limit=100&skip=0
Get All Relationships of a Type
:GET /db/{graph}/relationships/{type}?limit=100&skip=0
Get A Relationship
:GET /db/{graph}/relationship/{id}
Create A Relationship By Node Types
:POST /db/{graph}/node/{type_1}/{key_1}/relationship/{type_2}/{key_2}/{rel_type}
JSON formatted Body: {properties}
Create A Relationship By Node Ids
:POST /db/{graph}/node/{id_1}/relationship/{id_2}/{rel_type}
JSON formatted Body: {properties}
Delete A Relationship
:DELETE /db/{graph}/relationship/{id}
Find Relationships
:POST /db/{graph}/relationships/{type}/{property}/{operation}?limit=100&skip=0 {json value}
Get the Relationships of a Node By Node Type
:GET /db/{graph}/node/{type}/{key}/relationships
:GET /db/{graph}/node/{type}/{key}/relationships/{direction [all, in, out]}
:GET /db/{graph}/node/{type}/{key}/relationships/{direction [all, in, out]}/{type TYPE_ONE}
:GET /db/{graph}/node/{type}/{key}/relationships/{direction [all, in, out]}/{type(s) TYPE_ONE&TYPE_TWO}
Get the Relationships of a Node By Node Id
:GET /db/{graph}/node/{id}/relationships
:GET /db/{graph}/node/{id}/relationships/{direction [all, in, out]}
:GET /db/{graph}/node/{id}/relationships/{direction [all, in, out]}/{type TYPE_ONE}
:GET /db/{graph}/node/{id}/relationships/{direction [all, in, out]}/{type(s) TYPE_ONE&TYPE_TWO}
Relationship Properties
Get the Properties of a Relationship
:GET /db/{graph}/relationship/{id}/properties
Reset the Properties of a Relationship
:POST /db/{graph}/relationship/{id}/properties
JSON formatted Body: {properties}
Set some Properties of a Relationship
:PUT /db/{graph}/relationship/{id}/properties
JSON formatted Body: {properties}
Delete the Properties of a Relationship
:DELETE /db/{graph}/relationship/{id}/properties
Get a Property of a Relationship
:GET /db/{graph}/relationship/{id}/property/{property}
Related Skills
notion
344.1kNotion API for creating and managing pages, databases, and blocks.
feishu-drive
344.1k|
things-mac
344.1kManage Things 3 via the `things` CLI on macOS (add/update projects+todos via URL scheme; read/search/list from the local Things database)
clawhub
344.1kUse the ClawHub CLI to search, install, update, and publish agent skills from clawhub.com
