forked from radareorg/sdb
-
Notifications
You must be signed in to change notification settings - Fork 0
/
TODO
63 lines (56 loc) · 1.72 KB
/
TODO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
* do we want to specify the maximum depth of nested namespaces?
BUGS
----
* expire time may be affected by timezone and system time change (NOTE)
* verify return 0/1 everywhere
TODO
----
* Add disk database file checksum to verify if its broken or valid file
* ht->ls is wrong! dups appear
* support plain text databases
* implement mmap for w32
* implement sdb_ainc/sdb_adec
* implement io filters for load/save databases (io wrap)
* support json 2.0 ({foo:"bar"}) <- no need for quotes in name
* create string pool for a list of sizes
newpool (sizeof (char), 10, 100, 1000);
* Add api to store serialized in memory
* Add api for raw bytes
* Add api and syntax for json_length()
* Add comparision stuff
* Add support for socket file for memcached api
* add api to create db without caching it before
* remove buffer
Syncronization
--------------
- each key/value have a timestamp of creation/modification
- sdb_diff() must check both databases and look for removed entries
- syncronization between hosts - realtime storage
- run sync every N seconds? every N keys in cache?
- sdb_log to dump to a file descriptor all sets.. as a stream
Optimization
------------
* remove endian conversions
* use slices instead of mallocs
* use strstore
* accelerate get ops with cached results (const char* instead of strdup)
* implement udp protocol for memcache
* rewrite mcsdb in luvit
* use 16 bit key and 16 bit value // dont think so
* use kernel's linked list? it should be faster..
BUGS
----
* hashtable is not cleaned up when sync
- must honor expire time entries
* key and value boundaries are probably not properly handled
StringPool
----------
string types:
readonly
numeric
array
word
string
char *hugestring;
int hugestring_size;
{type;}