3.2 KiB
3.2 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
- Schema-less or schema-full tables
- Automatic data field sanitization
- Mandatory, readonly, and validated data fields
- Define embedded fields, and object arrays
- Advanced customisable indexing support
- Single-column indexes
- Multiple-column indexes
- Multiple-compound indexes
- Indexing of embedded data fields
- JS/LUA 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
Installation
go get github.com/abcum/surreal
Running
surreal start --port-web 8000
Clustering
surreal start --port-web 8000 --port-tcp 33693 --db-path boltdb://surreal-1.db --join localhost:33693 --log-level debug
surreal start --port-web 8001 --port-tcp 33694 --db-path boltdb://surreal-2.db --join localhost:33693 --log-level debug
surreal start --port-web 8002 --port-tcp 33695 --db-path boltdb://surreal-3.db --join localhost:33693 --log-level debug
Deployment
docker run --name surreal-1 abcum/surreal start --port-web 8000 --port-tcp 33693 --join localhost:33693 --log-level debug
docker run --name surreal-2 abcum/surreal start --port-web 8001 --port-tcp 33694 --join localhost:33693 --log-level debug
docker run --name surreal-3 abcum/surreal start --port-web 8002 --port-tcp 33695 --join localhost:33693 --log-level debug