forked from BohuTANG/nessDB
-
Notifications
You must be signed in to change notification settings - Fork 0
A very fast key-value,embedded Database Storage Engine (Using log-structured-merge (LSM) trees) with Level-LRU, Bloom-Filter,and supports Redis-Protocol(PING,SET,MSET,GET,MGET,DEL,EXISTS,INFO,SHUTDOWN).
License
ccl0326/nessDB
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
================================================================ nessDB v1.8 with LSM-Tree Copyright (C) 2012 BohuTANG________________ _____________________________ __ \__ __ ) __ __ \ _ \_ ___/_ ___/_ / / /_ __ | _ / / / __/(__ )_(__ )_ /_/ /_ /_/ / /_/ /_/\___//____/ /____/ /_____/ /_____/ ================================================================ nessDB is a fast Key-Value database(embedded), supports Redis-Protocol(PING,SET,MSET,GET,MGET,DEL,EXISTS,INFO,SHUTDOWN). Which is written in ANSI C with BSD LICENSE and works in most POSIX systems without external dependencies. nessDB is very efficient on disk-based random access, since it's using log-structured-merge (LSM) trees. The 1.8 version is still under construction. LAYOUT ====== Doc -- Documentations bench -- Benchmark testing engine -- The kernel of storage server -- Database server interface -- Others binding of nessDB(python, lua) tools -- Some tools of nessDB V1.8 FEATURES ============= a. Better performances on Random-Read/Random-Write b. Log recovery c. Using LSM-Tree as storage engine d. Background detached-thread merging e. Level LRU f. Support billion data For more details, please refer to documentations which in 'Doc' folder. HOW TODO BENCHMARK ================== $make db-bench $./db-bench <write | read > <count> or $./db-bench readone <key> If you want delete all idnexes/db/logs, you should do: $make cleandb HOW TO USE AS DB ENGINE ======================= a. OPEN struct nessdb *db = db_open(bufferpool-size, db-path, is_log_recovery); //NOTICE: bufferpool-size is bytes b. ADD struct slice sk, sv; sk.len = 3; sk.data = "key"; sv.len = 5; sv.data = "value"; db_add(db, &sk, &sv); c. DELETE struct slice sk; sk.len = 3; sk.data = "key"; db_remove(db, &sk); d. READ struct slice sk, sv; sk.len = 3; sk.data = "key"; int ret = db_get(db, &sk, &sv); if (ret == 1) { printf("data is %s", sv.data); free(sv.data); } else print("Not found"); e. CLOSE db_close(db); HOW TO USE AS DB SERVER ======================= $make db-server $./db-server Now, you can connect it with anyone redis-client, even can use the redis-benchmark for performance testing(Note the db-server only support a few redis command). Thanks for your attention!
About
A very fast key-value,embedded Database Storage Engine (Using log-structured-merge (LSM) trees) with Level-LRU, Bloom-Filter,and supports Redis-Protocol(PING,SET,MSET,GET,MGET,DEL,EXISTS,INFO,SHUTDOWN).
Resources
License
Stars
Watchers
Forks
Packages 0
No packages published