-
Notifications
You must be signed in to change notification settings - Fork 5
A library that implements sorted string tables with fixed size payload in Python.
License
toshic/python-sstable
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
A library that implements sorted string tables with fixed size payload in Python. Structure of SSTable file: * 16 bytes of header (see below) * Array of offsets. Each offset points to start of the string. For the first string offset = 0. * One extra offset equals points to the byte right after last string+payload * Strings. Each string is followed by payload, to calculate size of string calculate difference between current and next offsets and decrease by size of payload Header format: * 8 bytes: magic * 2 bytes: version * 2 bytes: size of extra structure * 4 bytes: number of strings inside All numbers inside are unsigned, all counters and offsets are integers EXAMPLE: # Create a string with 5 keys inside # payload size = 10 buf = struct.pack("8sHHIIIIIII15s15s15s15s15s", "YPySSTbl", 1, 10, 5, 0, 15, 30, 45, 60, 75, "AAkey0123456789", "FFKeyFFFFFFFFFf", "MMKey9876543210", "QQKeyQQQQQQQQQq", "zzKeyABCDEFGHIJ") s = sstable(buf) s.load() # Search for a key print s.search("zzKey") # Overwrite key s.insert("zzKey", "0011223344", True) print s.search("zzKey") # Reinitialize sstable, set payload size = 10 s.init(10) # Insert some keys s.insert("zzKey", "ABCDEFGHIJ") print s.search("zzKey") s.insert("QQKey", "QQQQQQQQQq") # Check keys inserted at the beginning print s.search("zzKey") print s.search("QQKey") # Delete it and check again s.delete("QQKey") print s.search("zzKey") try: print s.search("QQKey") except KeyError as e: print e try: s.delete("QQKey") except KeyError as e: print e
About
A library that implements sorted string tables with fixed size payload in Python.
Resources
License
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published