3 KiB
3 KiB
Surreal
Surreal is a scalable, distributed, strongly-consistent, collaborative document-graph database.
Features
- NoSQL document-graph database written in Go
- Administrative database tools
- Easily import data into a cluster
- Easily export data from a cluster
- Accessible and intuitive web interface
- Multiple connection methods
- Connect using REST
- Connect using JSON-RPC
- Connect using Websockets
- Multiple data querying methods
- Use advanced SQL queries
- Query using REST url endpoints
- Query using Websocket methods
- Customisable authentication access
- Specify public or private access
- Admin access to all database data
- Token access to all database data
- End-user multi-tenancy authentication
- Flexible data manipulation queries
- Automatic creation of tables
- Sceha-less or schema-full tables
- Automatic data field sanitization
- Mandatory, and readonly data fields
- Define embedded fields, and object arrays
- Advanced customisable indexing support
- Single-column indexs
- Multiple-column indexes
- Indexing of embedded data fields
- LUA/JS scripting for custom indexes
- Full-text indexing of all data by default
- Collaborative editing and manipulation of data
- Live realtime queries
- Publish data changes
- Subscribe to data changes
- Built-in concurrency control
- Pub/sub over websocket for data updates
- Encryption out-of-the-box as standard
- End-to-end intra-cluster communications
- End-user SSL encryption for http endpoints
- Encryption of all data at rest using AES-256
- Encryption of individual data items using AES-256
Installation
go get github.com/abcum/surreal
Running
surreal start --port-web 8000
Clustering
surreal start --port-web 8000 --port-tcp 33693 --join localhost:33693
surreal start --port-web 8001 --port-tcp 33694 --join localhost:33693
surreal start --port-web 8002 --port-tcp 33695 --join localhost:33693
Deployment
docker run --name surreal-1 abcum/surreal start --port-web 8000 --port-tcp 33693 --join localhost:33693
docker run --name surreal-2 abcum/surreal start --port-web 8001 --port-tcp 33694 --join localhost:33693
docker run --name surreal-3 abcum/surreal start --port-web 8002 --port-tcp 33695 --join localhost:33693