Class: Google::Apis::BigtableadminV2::Type
- Inherits:
-
Object
- Object
- Google::Apis::BigtableadminV2::Type
- Includes:
- Core::Hashable, Core::JsonObjectSupport
- Defined in:
- lib/google/apis/bigtableadmin_v2/classes.rb,
lib/google/apis/bigtableadmin_v2/representations.rb,
lib/google/apis/bigtableadmin_v2/representations.rb
Overview
Type represents the type of data that is written to, read from, or stored in
Bigtable. It is heavily based on the GoogleSQL standard to help maintain
familiarity and consistency across products and features. For compatibility
with Bigtable's existing untyped APIs, each Type includes an Encoding
which describes how to convert to/from the underlying data. This might involve
composing a series of steps into an "encoding chain," for example to convert
from INT64 -> STRING -> raw bytes. In most cases, a "link" in the encoding
chain will be based an on existing GoogleSQL conversion function like CAST.
Each link in the encoding chain also defines the following properties: *
Natural sort: Does the encoded value sort consistently with the original typed
value? Note that Bigtable will always sort data based on the raw encoded value,
not the decoded type. - Example: STRING values sort in the same order as
their UTF-8 encodings. - Counterexample: Encoding INT64 to a fixed-width
STRING does not preserve sort order when dealing with negative numbers.
INT64(1) > INT64(-1), but STRING("-00001") > STRING("00001). - The overall
encoding chain sorts naturally if every link does. * Self-delimiting: If we
concatenate two encoded values, can we always tell where the first one ends
and the second one begins? - Example: If we encode INT64s to fixed-width
STRINGs, the first value will always contain exactly N digits, possibly
preceded by a sign. - Counterexample: If we concatenate two UTF-8 encoded
STRINGs, we have no way to tell where the first one ends. - The overall
encoding chain is self-delimiting if any link is. * Compatibility: Which
other systems have matching encoding schemes? For example, does this encoding
have a GoogleSQL equivalent? HBase? Java?
Instance Attribute Summary collapse
-
#aggregate_type ⇒ Google::Apis::BigtableadminV2::GoogleBigtableAdminV2TypeAggregate
A value that combines incremental updates into a summarized value.
-
#bytes_type ⇒ Google::Apis::BigtableadminV2::GoogleBigtableAdminV2TypeBytes
Bytes Values of type
Bytesare stored inValue.bytes_value. -
#int64_type ⇒ Google::Apis::BigtableadminV2::GoogleBigtableAdminV2TypeInt64
Int64 Values of type
Int64are stored inValue.int_value.
Instance Method Summary collapse
-
#initialize(**args) ⇒ Type
constructor
A new instance of Type.
-
#update!(**args) ⇒ Object
Update properties of this object.
Constructor Details
#initialize(**args) ⇒ Type
Returns a new instance of Type.
3207 3208 3209 |
# File 'lib/google/apis/bigtableadmin_v2/classes.rb', line 3207 def initialize(**args) update!(**args) end |
Instance Attribute Details
#aggregate_type ⇒ Google::Apis::BigtableadminV2::GoogleBigtableAdminV2TypeAggregate
A value that combines incremental updates into a summarized value. Data is
never directly written or read using type Aggregate. Writes will provide
either the input_type or state_type, and reads will always return the
state_type .
Corresponds to the JSON property aggregateType
3195 3196 3197 |
# File 'lib/google/apis/bigtableadmin_v2/classes.rb', line 3195 def aggregate_type @aggregate_type end |
#bytes_type ⇒ Google::Apis::BigtableadminV2::GoogleBigtableAdminV2TypeBytes
Bytes Values of type Bytes are stored in Value.bytes_value.
Corresponds to the JSON property bytesType
3200 3201 3202 |
# File 'lib/google/apis/bigtableadmin_v2/classes.rb', line 3200 def bytes_type @bytes_type end |
#int64_type ⇒ Google::Apis::BigtableadminV2::GoogleBigtableAdminV2TypeInt64
Int64 Values of type Int64 are stored in Value.int_value.
Corresponds to the JSON property int64Type
3205 3206 3207 |
# File 'lib/google/apis/bigtableadmin_v2/classes.rb', line 3205 def int64_type @int64_type end |
Instance Method Details
#update!(**args) ⇒ Object
Update properties of this object
3212 3213 3214 3215 3216 |
# File 'lib/google/apis/bigtableadmin_v2/classes.rb', line 3212 def update!(**args) @aggregate_type = args[:aggregate_type] if args.key?(:aggregate_type) @bytes_type = args[:bytes_type] if args.key?(:bytes_type) @int64_type = args[:int64_type] if args.key?(:int64_type) end |