All Projects → Ianleeclark → Olivia

Ianleeclark / Olivia

Licence: MIT license
Go: A distributed, in-memory key-value storage.

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to Olivia

Olric
Distributed cache and in-memory key/value data store. It can be used both as an embedded Go library and as a language-independent service.
Stars: ✭ 2,067 (+2098.94%)
Mutual labels:  distributed-database, distributed-hash-table
p2p-project
A peer-to-peer networking framework to work across languages
Stars: ✭ 68 (-27.66%)
Mutual labels:  distributed-database, distributed-hash-table
Nebuchadnezzar
High Performance Key-Value Store
Stars: ✭ 49 (-47.87%)
Mutual labels:  distributed-database
shardingsphere-ui
Distributed database middleware
Stars: ✭ 41 (-56.38%)
Mutual labels:  distributed-database
bloomfilter
bloomfilter.js ported to Go
Stars: ✭ 94 (+0%)
Mutual labels:  bloom-filters
docs
Source code of the ArangoDB online documentation
Stars: ✭ 18 (-80.85%)
Mutual labels:  distributed-database
libfilter
High-speed Bloom filters and taffy filters for C, C++, and Java
Stars: ✭ 23 (-75.53%)
Mutual labels:  bloom-filters
bloom
An in-memory bloom filter with persistence and HTTP interface
Stars: ✭ 31 (-67.02%)
Mutual labels:  bloom-filters
cnosdb
An Open Source Distributed Time Series Database with high performance, high compression ratio and high usability.
Stars: ✭ 858 (+812.77%)
Mutual labels:  distributed-database
nebula-graph
A distributed, fast open-source graph database featuring horizontal scalability and high availability. This is an archived repo for v2.5 only, from 2.6.0 +, NebulaGraph switched back to https://github.com/vesoft-inc/nebula
Stars: ✭ 833 (+786.17%)
Mutual labels:  distributed-database
bloomfilter
Bloom filters for Java
Stars: ✭ 53 (-43.62%)
Mutual labels:  bloom-filters
greycat
GreyCat - Data Analytics, Temporal data, What-if, Live machine learning
Stars: ✭ 104 (+10.64%)
Mutual labels:  distributed-database
Operational-Transformation
A collection of Algorithms to Synchronise changes across multiple clients using Operational Transformation
Stars: ✭ 25 (-73.4%)
Mutual labels:  distributed-database
bloom
Bloom filter for go, backed by redis
Stars: ✭ 37 (-60.64%)
Mutual labels:  bloom-filters
beaker
A distributed, transactional key-value store.
Stars: ✭ 63 (-32.98%)
Mutual labels:  distributed-database
bloofi
Bloofi: A java implementation of multidimensional Bloom filters
Stars: ✭ 68 (-27.66%)
Mutual labels:  bloom-filters
bloom
Go package implementing Bloom filters
Stars: ✭ 1,752 (+1763.83%)
Mutual labels:  bloom-filters
the-apache-ignite-book
All code samples, scripts and more in-depth examples for The Apache Ignite Book. Include Apache Ignite 2.6 or above
Stars: ✭ 65 (-30.85%)
Mutual labels:  distributed-database
awesome-bigdata
A curated list of awesome big data frameworks, ressources and other awesomeness.
Stars: ✭ 11,093 (+11701.06%)
Mutual labels:  distributed-database
go-schemaless
An open-source sharded database framework based on Uber's Schemaless
Stars: ✭ 79 (-15.96%)
Mutual labels:  distributed-database

Olivia

Build Status Go Report Card

Olivia is essentially a distributed hash table that I built to test out some weird ideas I've had about Go and distributed programming that I've had.

What is Olivia

Olivia is essentially just a distributed hash table with added goodies. From early on, I wanted to use bloomfilters to enhance lookup speed between different remote nodes and I'm fairly happy with how that's turned out. Bloom filters allow us to prioritize which nodes we'll request keys from, rather than blindly sending out requests to all known nodes.

What Olivia could become

I'm still not 100% sure on the end vision. When I originally started out building this thing, I just wanted three things:

  • Distribution
  • Remote key lookups (consistency between each node has never been huge)
  • Key Expiration

As I build it, however, my desired are changing. I now want consistency between nodes, but I haven't yet decided how I'll go about it. Olivia was originally intended to be part of a distributed torrent tracker network, but it is no longer a worthwhile pursuit, as distributed hash tables (as a part of the Bittorrent network) are able to be edited (upon BEP acceptance).

Running an Olivia Node

Real quick and easy steps to run a node:

  1. git clone https://github.com/GrappigPanda/Olivia
  2. cd Olivia
  3. go get ./...
  4. go build
  5. ./Olivia

These 5 commands will get a base level node running, where the node runs, accepts commands, and will allow incoming connections from other Olivia nodes. To run a network of nodes, please see the config file and change a grand total of 3 variables.

An example workflow.

  $ nc 127.0.0.1 5454
  SET key1:value1,key2:value2,key3:value3
  :SAT key1:value1,key2:value2,key3:value3
  GET key2
  :GOT key2:value2

This is a really simple workflow, but it shows that setting keys/retrieving keys is simple.

Contact Maintainer

open an issue

tweet me

or email me

License

The MIT License (MIT)

Copyright (c) 2016 Ian Clark

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].