Keywords: Golang, go, document database, NoSQL, JSON
tiedot - Your NoSQL database powered by Golang
tiedot is a document database engine that uses JSON as document notation; it has a powerful query processor that supports advanced set operations; it can be embedded into your program, or run a stand-alone server using HTTP for an API on most *nix and Windows operating systems.
tiedot has fault-tolerant data structures that put your data safety first, while considering scalability in design.
Did you know? The largest known tiedot deployment powers a personal offline Wikipedia indexing project, it has 5.9 million documents and over 73GB of data.
tiedot is a very small project in the large open source community - it is growing fast thanks to the 500+ stars and watchers, as well as many contributors for their feedback, comments, ideas and code. Your contribution matters a lot!
Pull requests/forks all welcome, and please share your thoughts, questions and feature requests in Issues section.
... and more
- Performance tuning and benchmarks
- Data structures
- Query processor and index
- Concurrency and networking
tiedot is distributed under the Simplified BSD license.
The newest version 2.0 (branch 2.0) is a complete re-write aiming to bring a much cleaner codebase. Please check out Version History for change logs and historical version informaion.
Is tiedot "yet another NoSQL database"?
There are probably as many NoSQL database as there are Linux distributions.
tiedot is not as powerful (yet) - and does not intend to compete with mainstream NoSQL database engines such as CouchDB or Cassandra. However, tiedot performs reasonably well given its small size (around 3k LOC); and due to its simplicity, its performance may come close or even exceed those large brand NoSQL solutions (under certain workloads).
What is the motive behind this project?
Golang (Go) is a fascinating language - very easy to use, scalable and reasonably stable. I am very passionate about document database technologies (check out my other GitHub projects!) and enjoy seeing my code scaling well on SMP machines. This is my Golang exercise.
Why the name "tiedot"?
"tiedot" is a Finnish word standing for "data". I enjoy learning (natural and computer) languages, also enjoy listening to music in many languages. "Tiedot" sounds cute, doesn't it?
Benchmark of tiedot individual features and usages.
tiedot main entrance.
A tiedot collection is made of chunks, each chunk is independent fully featured collection.
|A tiedot collection is made of chunks, each chunk is independent fully featured collection.|
Document collection file.
|Document collection file.|
Common data file features.
|Common data file features.|
Coordination between a collection of chunks.
|Coordination between a collection of chunks.|
Package mmap allows mapping files into memory.
|Package mmap allows mapping files into memory.|
Collection management handlers.
|Collection management handlers.|