Class: Google::Apis::BigtableadminV2::Type

Inherits:
Object
  • Object
show all
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

Instance Method Summary collapse

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_typeGoogle::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_typeGoogle::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_typeGoogle::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