Uploaded image for project: 'HBase'
  1. HBase
  2. HBASE-8089 Add type support
  3. HBASE-8693

DataType: provide extensible type API

    XMLWordPrintableJSON

Details

    • Sub-task
    • Status: Closed
    • Blocker
    • Resolution: Fixed
    • None
    • 0.98.0, 0.95.2
    • Client
    • None
    • Reviewed
    • Hide
      This patch introduces an extensible data types API for HBase. It is inspired by the following systems:

       - PostgreSQL. Postgres has a user-extensible data type API, which has been used to great effect by it's user community (ie, PostGIS). The desire is for HBase to expose an equally extensible data type API. One aspect of the Postgres data type is the ability to provide equivalence functions for index operations. This appears to be of critical performance utility for its execution engine.
       - Orderly. Orderly handles the issue of compound rowkeys by providing convenience classes for handling these kinds of data types. This influence is reflected in the Struct and Union family of classes.
       - Phoenix. The PDataType enum used in Phoenix provides type hints, similar Postgres's equivalence functions. These appear to be used during query execution for numerical type promotion.

      This patch introduces an interface, DataType, along with a number of data type implementations based on the Bytes encoding. Also included are Struct and Union types, demonstrating simple implementations of compound types. Helper classes around the Struct implementation are also provided.

      This patch does not address the type compatibility concerns expressed by Phoenix's PDataType API (ie, isComparableTo, isCoercibleTo); these will be addressed in HBASE-8863.

      This patch also provides DataType implementations based on the OrderedBytes encoding from HBASE-8201.
      Show
      This patch introduces an extensible data types API for HBase. It is inspired by the following systems:  - PostgreSQL. Postgres has a user-extensible data type API, which has been used to great effect by it's user community (ie, PostGIS). The desire is for HBase to expose an equally extensible data type API. One aspect of the Postgres data type is the ability to provide equivalence functions for index operations. This appears to be of critical performance utility for its execution engine.  - Orderly. Orderly handles the issue of compound rowkeys by providing convenience classes for handling these kinds of data types. This influence is reflected in the Struct and Union family of classes.  - Phoenix. The PDataType enum used in Phoenix provides type hints, similar Postgres's equivalence functions. These appear to be used during query execution for numerical type promotion. This patch introduces an interface, DataType, along with a number of data type implementations based on the Bytes encoding. Also included are Struct and Union types, demonstrating simple implementations of compound types. Helper classes around the Struct implementation are also provided. This patch does not address the type compatibility concerns expressed by Phoenix's PDataType API (ie, isComparableTo, isCoercibleTo); these will be addressed in HBASE-8863 . This patch also provides DataType implementations based on the OrderedBytes encoding from HBASE-8201 .
    • 0.96notable

    Attachments

      1. 0001-HBASE-8693-Extensible-data-types-API.patch
        136 kB
        Nick Dimiduk
      2. 0001-HBASE-8693-Extensible-data-types-API.patch
        136 kB
        Nick Dimiduk
      3. 0001-HBASE-8693-Extensible-data-types-API.patch
        131 kB
        Nick Dimiduk
      4. 0001-HBASE-8693-Extensible-data-types-API.patch
        127 kB
        Nick Dimiduk
      5. 0001-HBASE-8693-Extensible-data-types-API.patch
        128 kB
        Nicolas Liochon
      6. 0001-HBASE-8693-Extensible-data-types-API.patch
        128 kB
        Nick Dimiduk
      7. 0001-HBASE-8693-Extensible-data-types-API.patch
        100 kB
        Nick Dimiduk
      8. 0001-HBASE-8693-Extensible-data-types-API.patch
        137 kB
        Nick Dimiduk
      9. 0001-HBASE-8693-Extensible-data-types-API.patch
        130 kB
        Nick Dimiduk
      10. 0001-HBASE-8693-Extensible-data-types-API.patch
        127 kB
        Nick Dimiduk
      11. 0001-HBASE-8693-Extensible-data-types-API.patch
        93 kB
        Nick Dimiduk
      12. 0001-HBASE-8693-Extensible-data-types-API.patch
        50 kB
        Nick Dimiduk
      13. 0002-HBASE-8693-example-Use-DataType-API-to-build-regionN.patch
        9 kB
        Nick Dimiduk
      14. KijiFormattedEntityId.java
        2 kB
        Nick Dimiduk

      Issue Links

        Activity

          People

            ndimiduk Nick Dimiduk
            ndimiduk Nick Dimiduk
            Votes:
            0 Vote for this issue
            Watchers:
            15 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: