Skip to content

danmux/bouncy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Bouncy

Elasticsearch in Go

Distributed, replicated, full text search, using Bleve and FoundationDB

Design

Instead of considering the following hard problems:

  • Rebalancing strategy
  • Shard count/size for reasonable rebalances vs not too heavy scatter gather searches
  • Add a time based shard dimension for optimal time range limits (e.g. log searches)

We implement a Bleve KVStore backed by FoundationDB

We use the older of Bleve's index types upside_down as this is structured around a key value store model of persistence, which maps well to foundationDB's sorted key value behavior.

Development

Download FoundationDB including client libraries, and run the single default development node

Clone this repo, go install and run bouncy

Warnings

because FoundationDB client bindings for go use cgo, you may well get some linker warnings such as...

ld: warning: object file (...000025.o) was built for newer OSX version (10.14) than being linked (10.13)

Notes

Bleve provides a clean interface for its backing store, and this interface maps quite nicely to FoundationDB's API, which is provided by their go bindings https://github.com/apple/foundationdb/tree/master/bindings/go which are vendored into this repo, as is the whole of the blevesearch repo.

Vendoring is done with go dep

About

Distributed replicated full text search using Bleve and FoundationDB

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages