(no title)
halayli | 4 months ago
on the other hand most database decisions are about finding the sweet spot compromise tailored toward the common use case they are aiming for, but your comment sound like you are expecting a magic trick.
halayli | 4 months ago
on the other hand most database decisions are about finding the sweet spot compromise tailored toward the common use case they are aiming for, but your comment sound like you are expecting a magic trick.
jerf|4 months ago
Sticking data into the keys is definitely a thing I've seen.
One I've done personally is dump large portions of a Redis DB into a JSON object. I could guarantee for my use case it would fit into the relevant memory and resource constraints but I would also have been able to guarantee it would exceed 64K keys by over an order of magnitude. "Best practices" didn't matter to me because this wasn't an API call result or something.
There are other things like this you'll find in the wild. Certainly some sort of "keyed by user" dump value is not unheard of and you can easily have more than 64K users, and there's nothing a priori wrong with that. It may be a bad solution for some specific reason, and I think it often is, but it is not automatically a priori wrong. I've written streaming support for both directions, so while JSON may not be optimal it is not necessarily a guarantee of badness. Plus with the computers we have nowadays sometimes "just deserialize the 1GB of JSON into RAM" is a perfectly valid solution for some case. You don't want to do that a thousand times per second, but not every problem is a "thousand times per second" problem.
Groxx|4 months ago
pests|4 months ago
FoundationDB makes extensive use of this pattern, sometimes with no data on the key at all.
kevincox|4 months ago
mpweiher|4 months ago
SICK: Streams of Independent Constant Keys
And "maps" seems to be a use case it is deliberately not aiming at.
zarzavat|4 months ago
You could store this as two columnar arrays but that is annoying and hardly anyone does that.
duped|4 months ago
mpweiher|4 months ago
xienze|4 months ago
The whole point of this project is to handle efficiently parsing "huge" JSON documents. If 65K keys is considered outrageously large, surely you can make do with a regular JSON parser.
pshirshov|4 months ago
You can split it yourself. If you can't, replace Shorts with Ints in the implementation and it would just work, but I would be very happy to know your usecase.
Just bumping the pointer size to cover relatively rare usecases is wasteful. It can be partially mitigated with more tags and tricks, but it still would be wasteful. A tiny chunking layer is easy to implement and I don't see any downsides in that.
paulddraper|4 months ago
What is the difference?
pshirshov|4 months ago
The limitation comes with benefits.
jiggawatts|4 months ago
MangoToupe|4 months ago