[ https://issues.apache.org/jira/browse/HBASE-21476?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16686071#comment-16686071 ]
Sean Busbey commented on HBASE-21476: ------------------------------------- Please write a scope document. Consider emailing dev@hbase to gather feedback once you have one. Important bits to cover: * What use cases this enables * How will this impact upgrades * How/where we'll document this * How we'll test this feature Some example scope documents: * [HBase Spark Integration|https://issues.apache.org/jira/secure/attachment/12878023/Apache%20HBase%20-%20Apache%20Spark%20Integration%20Scope%20-%20update%201.pdf] (HBASE-18405) * [Read Replica Clusters|https://issues.apache.org/jira/secure/attachment/12888376/HBase%20Read-Replica%20Clusters%20Scope%20doc_v2.pdf] (HBASE-18477) > Support for nanosecond timestamps > --------------------------------- > > Key: HBASE-21476 > URL: https://issues.apache.org/jira/browse/HBASE-21476 > Project: HBase > Issue Type: New Feature > Affects Versions: 2.1.1 > Reporter: Andrey Elenskiy > Assignee: Andrey Elenskiy > Priority: Major > Labels: features, patch > Attachments: nanosecond_timestamps_v1.patch > > > Introducing a new table attribute "NANOSECOND_TIMESTAMPS" to tell HBase to > handle timestamps with nanosecond precision. This is useful for applications > that timestamp updates at the source with nanoseconds and still want features > like column family TTL and "hbase.hstore.time.to.purge.deletes" to work. > The attribute should be specified either on new tables or on existing tables > which have timestamps only with nanosecond precision. There's no migration > from milliseconds to nanoseconds for already existing tables. We could add > this migration as part of compaction if you think that would be useful, but > that would obviously make the change more complex. > I've added a new EnvironmentEdge method "currentTimeNano()" that uses > [java.time.Instant|https://docs.oracle.com/javase/8/docs/api/java/time/Instant.html] > to get time in nanoseconds which means it will only work with Java 8. The > idea is to gradually replace all places where "EnvironmentEdge.currentTime()" > is used to have HBase working purely with nanoseconds (which is a > prerequisite for HBASE-14070). Also, I've refactored ScanInfo and > PartitionedMobCompactor to expect TableDescriptor as an argument which makes > code a little cleaner and easier to extend. > Couple more points: > - column family TTL (specified in seconds) and > "hbase.hstore.time.to.purge.deletes" (specified in milliseconds) options > don't need to be changed, those are adjusted automatically. > - Per cell TTL needs to be scaled by clients accordingly after > "NANOSECOND_TIMESTAMPS" table attribute is specified. > Looking for everyone's feedback to know if that's a worthwhile direction. > Will add more comprehensive tests in a later patch. -- This message was sent by Atlassian JIRA (v7.6.3#76005)