Skip to content

Latest commit

 

History

127 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Build Status

What is mintDS?

mintDS is a probabilistic data structures server.

What are the mintDS data structures?

➤ Bloom Filter is a space-efficient probabilistic data structure which is used to test whether an element is a member of a set. Membership query returns either "possibly in set" or "definitely not in set". The probability of false positives can be easily configured.

➤ Counting Bloom Filter Bloom Filter which supports deletions and counting.

➤ HyperLogLog is a space-efficient probabilistic data structure which is used to get the approximate number of distinct elements in a multiset. The accuracy can be easily configured.

➤ Count–min sketch is a space-efficient probabilistic data structure which is used to get the approximate frequencies of specific elements in a multiset. The accuracy can be easily configured.

Performance

mintDS is super fast. Here are some numbers based on aws c4.xlarge instance:

  • 16ms to asynchronously send 100K messages.
  • 1s to asynchronously send and receive 70K messages.

Want to try it out ?

Check out mintd-java and run -> java -Dconnections=100 -Dthreads=4 -Dhost=<minds-server-ip> -cp target/mintds-java-0.1.2-SNAPSHOT-all.jar com.arturmkrtchyan.mintds.benchmark.BloomFilterBenchmark

Playing with mintDS

To run mintDS server simply type:

 ./bin/mintds-start.sh conf/mintds.yaml

After starting the server you can use mintds-cli to play with mintDS.

./bin/mintds-cli.sh --host localhost --port 7657

####Bloom Filter

mintDS> create bloomfilter myfilter
SUCCESS

mintDS> exists bloomfilter myfilter
YES

mintDS> add bloomfilter myfilter myvalue
SUCCESS

mintDS> contains bloomfilter myfilter myvalue
YES

mintDS> contains bloomfilter myfilter mynewvalue
NO

mintDS> drop bloomfilter myfilter
SUCCESS

mintDS>

####Counting Bloom Filter

mintDS> create countingbloomfilter myfilter
SUCCESS

mintDS> exists countingbloomfilter myfilter
YES

mintDS> add countingbloomfilter myfilter myvalue
SUCCESS

mintDS> contains countingbloomfilter myfilter myvalue
YES

mintDS> contains countingbloomfilter myfilter mynewvalue
NO

mintDS> count countingbloomfilter myfilter myvalue
1

mintDS> add countingbloomfilter myfilter myvalue
SUCCESS

mintDS> count countingbloomfilter myfilter myvalue
2

mintDS> remove countingbloomfilter myfilter myvalue
SUCCESS

mintDS> count countingbloomfilter myfilter myvalue
1

mintDS> drop countingbloomfilter myfilter
SUCCESS

mintDS>

####HyperLogLog

mintDS> create hyperloglog mylog
SUCCESS

mintDS> exists hyperloglog mylog
YES

mintDS> add hyperloglog mylog myvalue
SUCCESS

mintDS> add hyperloglog mylog mynewvalue
SUCCESS

mintDS> count hyperloglog mylog
2

mintDS> drop hyperloglog mylog
SUCCESS

mintDS>

####Count-Min Sketch

mintDS> create countminsketch mysketch
SUCCESS

mintDS> exists countminsketch mysketch
YES

mintDS> add countminsketch mysketch myvalue
SUCCESS

mintDS> count countminsketch mysketch myvalue
1

mintDS> add countminsketch mysketch myvalue
SUCCESS

mintDS> count countminsketch mysketch myvalue
2

mintDS> drop countminsketch mysketch
SUCCESS

mintDS>

Client Implementations

Client Description
mintds-java Asynchronous Java client library for mintDS.

Check out the protocol description here.

Credits

Datastructures are based on addthis/stream-lib.

References

The list of related open-source projects and scientific papers which mintDS makes use of:

About

Probabilistic data structures server. The data model is key-value, where values are: Bloomfilters, LinearCounters, HyperLogLogs, CountMinSketches and StreamSummaries.

Resources

Stars

24 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages