FUCKING PATCHED SURREALDB BECAUSE TOKIO GUHHHHH
36e7d8ed3a
Websocket notifications were cleared/flushed regardless of whether individual statements were successful or not. Now notifications are shifted onto the stack, or removed if the statement is unsuccessful. Once the full query has been processed, all pending notifications are flushed to all websockets (ignoring the current connection frin which th query originated). |
||
---|---|---|
.circleci | ||
build | ||
cli | ||
cnf | ||
db | ||
doc | ||
kvs | ||
log | ||
mem | ||
sql | ||
tcp | ||
util | ||
web | ||
.dockerignore | ||
.editorconfig | ||
.gitignore | ||
Dockerfile | ||
glide.lock | ||
glide.yaml | ||
LICENSE | ||
main.go | ||
Makefile | ||
README.md |
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 file://surreal-1.db --join localhost:33693 --log-level debug
surreal start --port-web 8001 --port-tcp 33694 --db-path file://surreal-2.db --join localhost:33693 --log-level debug
surreal start --port-web 8002 --port-tcp 33695 --db-path file://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