[
https://issues.apache.org/jira/browse/CASSANDRA-6108?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14040646#comment-14040646
]
Sylvain Lebresne commented on CASSANDRA-6108:
---------------------------------------------
bq. How do we safely manage the life cycle of the ids?
Not easily for sure. I suppose we could add a per-client "I'm out" message in
the protocol and say that if your clients are not well-behaved and don't send
those messages, then well, fix them, but that's clearly not ideal. But in fact,
when I mentioned this idea (which was in no way a well though thing), I was
really thinking of ID per-connections, not per clients, but that would require
a lot more ID than is necessary for correctness which is definitively far from
ideal.
All that said, I think it's worth taking a step back on this ticket, on what we
need and what are our constraints. Typically, this ticker per-se, to have a
time64 CQL type, is not, imho, the most important thing we care about. What we
need is a way to make our cell timestamp cluster-wide unique both for
CASSANDRA-6123 and for CASSANDRA-7056, and we obviously want that new "better"
timestamp to not be overly big. This ticket is more a "by the way, if we add
that and it's more compact that a timeuuid, then let's expose it for columns
too".
In particular, I don't think the fact that it's a 64bits ID should be an
absolute strong requirement.
And in fact, I would suggest that we *seriously* consider just using a
timeuuid. Yes, a timeuuid is 128bits long which at face falue feels excessive
for a per-cell thing. However, we can relatively easily optimize their storage
(at least on disk, but probably in memory some additional efforts): the "clock
and sequence" part of the timeuuid will basically be our per-client unique ID
and a per-sstable dictionary should be reasonably efficient, and the timestamp
can be stored as a delta from a per-sstable epoch. Overall, it should be
relatively easy to get something more compact than what we currently have,
which is imo a good bar for "acceptable" in term of compactness.
But a bonus is that if we do that systematically for timeuuid, we'll get
compaction of existing tables using timeuuid. Basically, instead of inventing
something new and ask everyone to use that from now on (which is pretty painful
for users), let's reuse what we have and is somewhat standard and optimize it.
The big advantage being simplicity: for drivers that won't have to implement
new potentially complex schemes (all drivers have a timeuuid generator
already), for users that won't have to use a new type and probably for us too
as that's probably the simper route. As far as I'm concerned, those advantages
out-weight the downside of having a slightly less compact representation than
if we were to hand-craft something custom.
> Create timeid64 type
> --------------------
>
> Key: CASSANDRA-6108
> URL: https://issues.apache.org/jira/browse/CASSANDRA-6108
> Project: Cassandra
> Issue Type: New Feature
> Components: API, Core
> Reporter: Jonathan Ellis
> Assignee: Sylvain Lebresne
> Priority: Minor
> Fix For: 2.1.1
>
>
> As discussed in CASSANDRA-6106, we could create a 64-bit type with 48 bits of
> timestamp and 16 bites of unique coordinator id. This would give us a
> unique-per-cluster value that could be used as a more compact replacement for
> many TimeUUID uses.
--
This message was sent by Atlassian JIRA
(v6.2#6252)