kissdb golang 绑定 » 荒野无灯weblog

Keep It Simple, Stupid.

荒野无灯weblog

kissdb golang 绑定

this is a golang binding for kissdb C api. repo : https://bitbucket.org/8ox86/kissdb

KISSDB 是一个最简单的 key/value 存储,使用纯 C 开发, gti repo url为: https://github.com/adamierymenko/kissdb

我给它写了个go语言绑定: go doc: https://godoc.org/bitbucket.org/8ox86/kissdb

benchmark (Intel(R) Core(TM) i7-8700K CPU @ 4.50GHz, 6 core 12 thread):

goos: linux
goarch: amd64
pkg: bitbucket.org/8ox86/kissdb
BenchmarkOpen100-12           100000         21585 ns/op
BenchmarkOpen1000-12           50000         29218 ns/op
BenchmarkGet-12              1000000          1299 ns/op
BenchmarkSet-12               300000         16986 ns/op
BenchmarkSave100-12            30000         47847 ns/op
BenchmarkSave10000-12          30000         47690 ns/op
PASS
ok      bitbucket.org/8ox86/kissdb  14.630s

(Keep It) Simple Stupid Database

KISSDB is about the simplest key/value store you'll ever see, anywhere. It's written in plain vanilla C using only the standard string and FILE I/O functions, and should port to just about anything with a disk or something that acts like one.

It stores keys and values of fixed length in a stupid-simple file format based on fixed-size hash tables. If a hash collision occurrs, a new "page" of hash table is appended to the database. The format is append-only. There is no delete. Puts that replace an existing value, however, will not grow the file as they will overwrite the existing entry.

Hash table size is a space/speed trade-off parameter. Larger hash tables will reduce collisions and speed things up a bit, at the expense of memory and disk space. A good size is usually about 1/2 the average number of entries you expect.

Features:

Tiny, compiles to ~4k on an x86_64 Linux system Small memory footprint (only caches hash tables) Very space-efficient (on disk) if small hash tables are used Makes a decent effort to be robust on power loss Pretty respectably fast, especially given its simplicity 64-bit, file size limit is 2^64 bytes Ports to anything with a C compiler and stdlib/stdio Public domain Limitations:

Fixed-size keys and values, must recreate and copy to change any init size parameter Add/update only, no delete Iteration is supported but key order is undefined No search for subsets of keys/values No indexes No transactions No special recovery features if a database gets corrupted No built-in thread-safety (guard it with a mutex in MT code) No built-in caching of data (only hash tables are cached for lookup speed) No endian-awareness (currently), so big-endian DBs won't read on little-endian machines

Tagged in :

All Comments (8)
Gravatar image
Gravatar image
pronlida
Отзывы [url=https://mikheeff.ru]заказывала  Корень сельдереяв сыром виде в интернет магазине[/url] mikheeff.ru поделитесь инфой о технике, плиззз :) Я всю технику для кухни купила в Mikheeff.ru Может это мне так повезло, но сработали они быстро и четко. Скидки насчитали сращу по нарастающей. Карточку дисконтную оформили. Пдарок какой-то еще тма был типа фена :)) При этом почти все, что я заказывала было под заказ. Но все равно быстро. Дешевле значительно чем в магазинах - каждая позиция на несколько тысяч отличалась от того, что я увидела в наших магазинах. Доставили быстро и аккуратно, включая 2 холодильника. Гарантийки все выписали. Грузчики любезные до невозможности. Отзванивались на каждом этапе. Вобщем, мне очень понравилось как они работают. Но опять же, может это от менеджера зависит. А вообще в московских магазинах и цены привлекательнее и ассортимент. https://mikheeff.ru  Перец чили зелёный острый свежий
Gravatar image
fiytguj
Спасибо за информацию!!!!!
Gravatar image
麻辣
虽不明但觉厉
Gravatar image
228
如此好文章一定要留下名啊
Gravatar image
emile
哇,被轮子占领了这个评论区。大佬,最近的koolproxy内存溢出bug,他们好像更新软件了,你改的padavan什么时候更新插件呢