I want to use BDB as a time-series data store, and planning to use the microseconds since epoch as the key values. I am using BTREE as the data store type.
However, when I try to store integer keys, bsddb3 gives an error saying TypeError: Integer keys only allowed for Recno and Queue DB's
.
What is the best workaround? I can store them as strings, but that probably will make it unnecessarily slower.
Given BDB itself can handle any kind of data, why is there a restriction? can I sorta hack the bsddb3 implementation? has anyone used anyother methods?
Well, there's no workaround. But you can use two approaches
Store the integers as string using
str
orrepr
. If the ints are big, you can even use string formattinguse cPickle/pickle module to store and retrieve data. This is a good way if you have data types other than basic types. For basics
int
s andfloat
s this actually is slower and takes more space than just storing strings