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: BYTES values sort in the same order as
their raw 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
has this property 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 has this property
if any link does. * 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
Bytes
are stored inValue.bytes_value
. -
#int64_type ⇒ Google::Apis::BigtableadminV2::GoogleBigtableAdminV2TypeInt64
Int64 Values of type
Int64
are 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 |