IndexedDB supports binary values as per the structured clone algorithm
as implemented in Chrome and Firefox.
IndexedDB needs to support binary keys (ArrayBuffer, TypedArrays).
Many popular KV stores accept binary keys (BDB, Tokyo, LevelDB). The
Chrome implementation of IDB is already serializing keys to binary.
JS is moving more and more towards binary data across the board
(WebSockets, TypedArrays, FileSystemAPI). IDB is not quite there if it
does not support binary keys.
Binary keys are more efficient than Base 64 encoded keys, e.g. a 128
bit key in base 256 is 16 bytes, but 22 bytes in base 64.
Am working on a production system storing 3 million keys in IndexedDB.
In about 6 months it will be storing 60 million keys in IndexedDB.
Without support for binary keys, that's 330mb wasted storage
(60,000,000 * (22 - 16)) not to mention the wasted CPU overhead spent
Base64 encoding and decoding keys.