I have a table in which I need to store unique 32 byte cryptographic signatures for each row. I receive the column inputs via JSON as a 64 byte hex string. What's the best column definition for that data and how would I convert the string to that type? Are there any hex to byte vector and byte vector to hex routines built in to kdb?
If your table is splayed the overhead will be 8 bytes (sizeof(long)) per crypto signature, here's why: http://code.kx.com/wiki/JB:KdbplusForMortals/splayed_tables#1.2.7_Splayed_Tables_with_Compound_Columns
There will be some performance degradation, too. You can use GUID's, but since a GUID is 16 bytes long you will need to split a crypto hash into 2 halves and store them in two separate GUID columns (and combine them during retrieval). I doesn't look like a very elegant solution to me unless you really need to save some space.
List of lists is structured as a two-level index in q. The first level serves as an index to the second level, where the latter stores the flatten list of all bytes. You may consider the first level data as storage overhead in this sense.