surrealpatch/README.md

77 lines
3 KiB
Markdown
Raw Normal View History

2016-07-05 18:46:22 +00:00
# Surreal
Surreal is a scalable, distributed, strongly-consistent, collaborative document-graph database.
2016-07-05 18:48:33 +00:00
[![](https://img.shields.io/circleci/token/adb5ca379a334a4011fa894275c312fe35833d6d/project/abcum/surreal/master.svg?style=flat-square)](https://circleci.com/gh/abcum/surreal) [![](https://img.shields.io/badge/status-alpha-ff00bb.svg?style=flat-square)](https://github.com/abcum/surreal) [![](https://img.shields.io/badge/godoc-reference-blue.svg?style=flat-square)](https://godoc.org/github.com/abcum/surreal) [![](https://goreportcard.com/badge/github.com/abcum/surreal?style=flat-square)](https://goreportcard.com/report/github.com/abcum/surreal) [![](https://img.shields.io/badge/license-Apache_License_2.0-00bfff.svg?style=flat-square)](https://github.com/abcum/surreal)
2016-07-05 18:46:22 +00:00
#### Features
- NoSQL document-graph database written in [Go](http://golang.org)
- 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
```bash
go get github.com/abcum/surreal
```
#### Running
```bash
surreal start --port-web 8000
```
#### Clustering
```bash
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
```bash
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
```