Bin Name -- Wondering why we have the limitations of "Maximum 14 characters of any single byte. Double-byte characters are not allowed." for bin names?


#1

Curious why bin names have the limitations of “Maximum 14 characters of any single byte. Double-byte characters are not allowed.”?

Unicode (double byte) for strings in middle layer and UTF-8 (multibyte) for strings in databases (to save storage) are two popular choices since long time, hence the reason to ask this question as we don’t have such limitation for namespace names or set names. Obviously this makes bin naming cryptic to keep bin names with in 14 character bounds.

Aerospike server item | limits

bin-names <= 14 characters set-names <= 63 characters namespace-names <= 31 characters


#2

Bin-names are used for differentiating the components of the records, from a programmatic interface. We picked a size that we think allowed for enough practical variation while not overdoing the reservation;

For other boundary conditions, please see “what are the limits of…” in http://www.aerospike.com/docs/guide/FAQ.html


#3

Hi Wei,

I appreciate your response to my query.

This 14 char single byte limit on bin names is very limiting and it does not make much sense when unicode is the way to go in middle layer architecture since 1991 (ages gone by since then).

An application developer will now have to do special processing to keep just bin names “14 chars single byte” while everything else is unicode. One can certainly do workarounds to overcome this, no big deal in that.

I humbly request revisiting original assumptions in that regard because it is limiting.

Thanks, Deepak Jain


#4

I humbly request also revisiting the original assumptions. I kept hitting this error message and then realising the issue. 14 characters? At least make it something like 32 or 64.


#5

The limitations have not changed since last year and we also find it very limiting for the same arguments that have been mentioned before. It makes our software more complex and harder to reason about.


#6

Is there any chance on increasing the bin name character limit? Using Aerospike as a transaction store for some of the messages from our partners can be tricky (to say the least).


#7

Aerospike is schemaless. Each record is self describing. Bin name is stored on SSD with each record. The bin name allocation is 15 bytes - allows 14 characters + null termination max. If bin name length is increased, storage on SSD will go up accordingly. That may upset a lot of other folks! Wondering if you can use the map data type and use a key - value pair to get around the bin name limit and use the key string.


#8

Thanks for the reply - This makes perfect sense.


#9

This is a problem that has stuck us too. Bins are extremely important to our use case. That was the whole reason why I pitched for Aerospike over Redis. However, on later stages, I found out that the bin names have a 14 char limit. This has forced me to have a complex application design where actual field names are Converted to valid bin names before querying, and also vice versa during result processing. This could have been a fairly simple application.