Protocol Documentation
Table of Contents
Top
banyandb/common/v1/common.proto
Group
Group is an internal object for Group management
Field |
Type |
Label |
Description |
metadata |
Metadata |
|
metadata define the group's identity |
catalog |
Catalog |
|
catalog denotes which type of data the group contains |
resource_opts |
ResourceOpts |
|
resourceOpts indicates the structure of the underlying kv storage |
updated_at |
google.protobuf.Timestamp |
|
updated_at indicates when resources of the group are updated |
IntervalRule
IntervalRule is a structured duration
Metadata is for multi-tenant, multi-model use
Field |
Type |
Label |
Description |
group |
string |
|
group contains a set of options, like retention policy, max |
name |
string |
|
name of the entity |
id |
uint32 |
|
|
create_revision |
int64 |
|
readonly. create_revision is the revision of last creation on this key. |
mod_revision |
int64 |
|
readonly. mod_revision is the revision of last modification on this key. |
ResourceOpts
Field |
Type |
Label |
Description |
shard_num |
uint32 |
|
shard_num is the number of shards |
block_interval |
IntervalRule |
|
block_interval indicates the length of a block block_interval should be less than or equal to segment_interval |
segment_interval |
IntervalRule |
|
segment_interval indicates the length of a segment |
ttl |
IntervalRule |
|
ttl indicates time to live, how long the data will be cached |
Catalog
Name |
Number |
Description |
CATALOG_UNSPECIFIED |
0 |
|
CATALOG_STREAM |
1 |
|
CATALOG_MEASURE |
2 |
|
IntervalRule.Unit
Name |
Number |
Description |
UNIT_UNSPECIFIED |
0 |
|
UNIT_HOUR |
1 |
|
UNIT_DAY |
2 |
|
Top
banyandb/database/v1/database.proto
Node
Shard
Top
banyandb/database/v1/event.proto
EntityEvent
EntityEvent.TagLocator
Field |
Type |
Label |
Description |
family_offset |
uint32 |
|
|
tag_offset |
uint32 |
|
|
ShardEvent
Action
Name |
Number |
Description |
ACTION_UNSPECIFIED |
0 |
|
ACTION_PUT |
1 |
|
ACTION_DELETE |
2 |
|
Top
banyandb/model/v1/common.proto
FieldValue
Float
Field |
Type |
Label |
Description |
value |
double |
|
|
ID
Field |
Type |
Label |
Description |
value |
string |
|
|
Int
Field |
Type |
Label |
Description |
value |
int64 |
|
|
IntArray
Field |
Type |
Label |
Description |
value |
int64 |
repeated |
|
Str
Field |
Type |
Label |
Description |
value |
string |
|
|
StrArray
Field |
Type |
Label |
Description |
value |
string |
repeated |
|
TagFamilyForWrite
Field |
Type |
Label |
Description |
tags |
TagValue |
repeated |
|
TagValue
AggregationFunction
Name |
Number |
Description |
AGGREGATION_FUNCTION_UNSPECIFIED |
0 |
|
AGGREGATION_FUNCTION_MEAN |
1 |
|
AGGREGATION_FUNCTION_MAX |
2 |
|
AGGREGATION_FUNCTION_MIN |
3 |
|
AGGREGATION_FUNCTION_COUNT |
4 |
|
AGGREGATION_FUNCTION_SUM |
5 |
|
Top
banyandb/model/v1/query.proto
Condition
Condition consists of the query condition with a single binary operator to be imposed
For 1:1 BinaryOp, values in condition must be an array with length = 1,
while for 1:N BinaryOp, values can be an array with length >= 1.
Criteria
tag_families are indexed.
LogicalExpression
LogicalExpression supports logical operation
QueryOrder
QueryOrder means a Sort operation to be done for a given index rule.
The index_rule_name refers to the name of a index rule bound to the subject.
Field |
Type |
Label |
Description |
index_rule_name |
string |
|
|
sort |
Sort |
|
|
Tag
Pair is the building block of a record which is equivalent to a key-value pair.
In the context of Trace, it could be metadata of a trace such as service_name, service_instance, etc.
Besides, other tags are organized in key-value pair in the underlying storage layer.
One should notice that the values can be a multi-value.
TagFamily
Field |
Type |
Label |
Description |
name |
string |
|
|
tags |
Tag |
repeated |
|
TagProjection
TagProjection is used to select the names of keys to be returned.
TagProjection.TagFamily
Field |
Type |
Label |
Description |
name |
string |
|
|
tags |
string |
repeated |
|
TimeRange
TimeRange is a range query for uint64,
the range here follows left-inclusive and right-exclusive rule, i.e. [begin, end) if both edges exist
Condition.BinaryOp
BinaryOp specifies the operation imposed to the given query condition
For EQ, NE, LT, GT, LE and GE, only one operand should be given, i.e. one-to-one relationship.
HAVING and NOT_HAVING allow multi-value to be the operand such as array/vector, i.e. one-to-many relationship.
For example, "keyA" contains "valueA" and "valueB"
MATCH performances a full-text search if the tag is analyzed.
The string value applies to the same analyzer as the tag, but string array value does not.
Each item in a string array is seen as a token instead of a query expression.
Name |
Number |
Description |
BINARY_OP_UNSPECIFIED |
0 |
|
BINARY_OP_EQ |
1 |
|
BINARY_OP_NE |
2 |
|
BINARY_OP_LT |
3 |
|
BINARY_OP_GT |
4 |
|
BINARY_OP_LE |
5 |
|
BINARY_OP_GE |
6 |
|
BINARY_OP_HAVING |
7 |
|
BINARY_OP_NOT_HAVING |
8 |
|
BINARY_OP_IN |
9 |
|
BINARY_OP_NOT_IN |
10 |
|
BINARY_OP_MATCH |
11 |
|
LogicalExpression.LogicalOp
Name |
Number |
Description |
LOGICAL_OP_UNSPECIFIED |
0 |
|
LOGICAL_OP_AND |
1 |
|
LOGICAL_OP_OR |
2 |
|
Sort
Name |
Number |
Description |
SORT_UNSPECIFIED |
0 |
|
SORT_DESC |
1 |
|
SORT_ASC |
2 |
|
Top
banyandb/database/v1/schema.proto
Entity
Field |
Type |
Label |
Description |
tag_names |
string |
repeated |
|
FieldSpec
FieldSpec is the specification of field
Field |
Type |
Label |
Description |
name |
string |
|
name is the identity of a field |
field_type |
FieldType |
|
field_type denotes the type of field value |
encoding_method |
EncodingMethod |
|
encoding_method indicates how to encode data during writing |
compression_method |
CompressionMethod |
|
compression_method indicates how to compress data during writing |
IndexRule
IndexRule defines how to generate indices based on tags and the index type
IndexRule should bind to a subject through an IndexRuleBinding to generate proper indices.
Field |
Type |
Label |
Description |
metadata |
banyandb.common.v1.Metadata |
|
metadata define the rule's identity |
tags |
string |
repeated |
tags are the combination that refers to an indexed object If the elements in tags are more than 1, the object will generate a multi-tag index Caveat: All tags in a multi-tag MUST have an identical IndexType |
type |
IndexRule.Type |
|
type is the IndexType of this IndexObject. |
location |
IndexRule.Location |
|
location indicates where to store index. |
updated_at |
google.protobuf.Timestamp |
|
updated_at indicates when the IndexRule is updated |
analyzer |
IndexRule.Analyzer |
|
analyzer analyzes tag value to support the full-text searching for TYPE_INVERTED indices. |
IndexRuleBinding
IndexRuleBinding is a bridge to connect severalIndexRules to a subject
This binding is valid between begin_at_nanoseconds and expire_at_nanoseconds, that provides flexible strategies
to control how to generate time series indices.
Field |
Type |
Label |
Description |
metadata |
banyandb.common.v1.Metadata |
|
metadata is the identity of this binding |
rules |
string |
repeated |
rules refers to the IndexRule |
subject |
Subject |
|
subject indicates the subject of binding action |
begin_at |
google.protobuf.Timestamp |
|
begin_at_nanoseconds is the timestamp, after which the binding will be active |
expire_at |
google.protobuf.Timestamp |
|
expire_at_nanoseconds it the timestamp, after which the binding will be inactive expire_at_nanoseconds must be larger than begin_at_nanoseconds |
updated_at |
google.protobuf.Timestamp |
|
updated_at indicates when the IndexRuleBinding is updated |
Measure
Measure intends to store data point
Field |
Type |
Label |
Description |
metadata |
banyandb.common.v1.Metadata |
|
metadata is the identity of a measure |
tag_families |
TagFamilySpec |
repeated |
tag_families are for filter measures |
fields |
FieldSpec |
repeated |
fields denote measure values |
entity |
Entity |
|
entity indicates which tags will be to generate a series and shard a measure |
interval |
string |
|
interval indicates how frequently to send a data point valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h", "d". |
updated_at |
google.protobuf.Timestamp |
|
updated_at indicates when the measure is updated |
Stream
Stream intends to store streaming data, for example, traces or logs
Subject
Subject defines which stream or measure would generate indices
TagFamilySpec
Field |
Type |
Label |
Description |
name |
string |
|
|
tags |
TagSpec |
repeated |
tags defines accepted tags |
Field |
Type |
Label |
Description |
name |
string |
|
|
type |
TagType |
|
|
indexed_only |
bool |
|
indexed_only indicates whether the tag is stored True: It's indexed only, but not stored False: it's stored and indexed |
TopNAggregation
TopNAggregation generates offline TopN statistics for a measure's TopN approximation
CompressionMethod
Name |
Number |
Description |
COMPRESSION_METHOD_UNSPECIFIED |
0 |
|
COMPRESSION_METHOD_ZSTD |
1 |
|
EncodingMethod
Name |
Number |
Description |
ENCODING_METHOD_UNSPECIFIED |
0 |
|
ENCODING_METHOD_GORILLA |
1 |
|
FieldType
Name |
Number |
Description |
FIELD_TYPE_UNSPECIFIED |
0 |
|
FIELD_TYPE_STRING |
1 |
|
FIELD_TYPE_INT |
2 |
|
FIELD_TYPE_DATA_BINARY |
3 |
|
FIELD_TYPE_FLOAT |
4 |
|
IndexRule.Analyzer
Name |
Number |
Description |
ANALYZER_UNSPECIFIED |
0 |
|
ANALYZER_KEYWORD |
1 |
Keyword analyzer is a “noop” analyzer which returns the entire input string as a single token. |
ANALYZER_STANDARD |
2 |
Standard analyzer provides grammar based tokenization |
ANALYZER_SIMPLE |
3 |
Simple analyzer breaks text into tokens at any non-letter character, such as numbers, spaces, hyphens and apostrophes, discards non-letter characters, and changes uppercase to lowercase. |
IndexRule.Location
Name |
Number |
Description |
LOCATION_UNSPECIFIED |
0 |
|
LOCATION_SERIES |
1 |
|
LOCATION_GLOBAL |
2 |
|
IndexRule.Type
Type determine the index structure under the hood
Name |
Number |
Description |
TYPE_UNSPECIFIED |
0 |
|
TYPE_TREE |
1 |
|
TYPE_INVERTED |
2 |
|
TagType
Name |
Number |
Description |
TAG_TYPE_UNSPECIFIED |
0 |
|
TAG_TYPE_STRING |
1 |
|
TAG_TYPE_INT |
2 |
|
TAG_TYPE_STRING_ARRAY |
3 |
|
TAG_TYPE_INT_ARRAY |
4 |
|
TAG_TYPE_DATA_BINARY |
5 |
|
TAG_TYPE_ID |
6 |
|
Top
banyandb/database/v1/rpc.proto
GroupRegistryServiceCreateRequest
GroupRegistryServiceCreateResponse
GroupRegistryServiceDeleteRequest
Field |
Type |
Label |
Description |
group |
string |
|
|
GroupRegistryServiceDeleteResponse
Field |
Type |
Label |
Description |
deleted |
bool |
|
|
GroupRegistryServiceExistRequest
Field |
Type |
Label |
Description |
group |
string |
|
|
GroupRegistryServiceExistResponse
Field |
Type |
Label |
Description |
has_group |
bool |
|
|
GroupRegistryServiceGetRequest
Field |
Type |
Label |
Description |
group |
string |
|
|
GroupRegistryServiceGetResponse
GroupRegistryServiceListRequest
GroupRegistryServiceListResponse
GroupRegistryServiceUpdateRequest
GroupRegistryServiceUpdateResponse
IndexRuleBindingRegistryServiceCreateRequest
IndexRuleBindingRegistryServiceCreateResponse
IndexRuleBindingRegistryServiceDeleteRequest
IndexRuleBindingRegistryServiceDeleteResponse
Field |
Type |
Label |
Description |
deleted |
bool |
|
|
IndexRuleBindingRegistryServiceExistRequest
IndexRuleBindingRegistryServiceExistResponse
Field |
Type |
Label |
Description |
has_group |
bool |
|
|
has_index_rule_binding |
bool |
|
|
IndexRuleBindingRegistryServiceGetRequest
IndexRuleBindingRegistryServiceGetResponse
IndexRuleBindingRegistryServiceListRequest
Field |
Type |
Label |
Description |
group |
string |
|
|
IndexRuleBindingRegistryServiceListResponse
IndexRuleBindingRegistryServiceUpdateRequest
IndexRuleBindingRegistryServiceUpdateResponse
IndexRuleRegistryServiceCreateRequest
Field |
Type |
Label |
Description |
index_rule |
IndexRule |
|
|
IndexRuleRegistryServiceCreateResponse
IndexRuleRegistryServiceDeleteRequest
IndexRuleRegistryServiceDeleteResponse
Field |
Type |
Label |
Description |
deleted |
bool |
|
|
IndexRuleRegistryServiceExistRequest
IndexRuleRegistryServiceExistResponse
Field |
Type |
Label |
Description |
has_group |
bool |
|
|
has_index_rule |
bool |
|
|
IndexRuleRegistryServiceGetRequest
IndexRuleRegistryServiceGetResponse
Field |
Type |
Label |
Description |
index_rule |
IndexRule |
|
|
IndexRuleRegistryServiceListRequest
Field |
Type |
Label |
Description |
group |
string |
|
|
IndexRuleRegistryServiceListResponse
Field |
Type |
Label |
Description |
index_rule |
IndexRule |
repeated |
|
IndexRuleRegistryServiceUpdateRequest
Field |
Type |
Label |
Description |
index_rule |
IndexRule |
|
|
IndexRuleRegistryServiceUpdateResponse
MeasureRegistryServiceCreateRequest
Field |
Type |
Label |
Description |
measure |
Measure |
|
|
MeasureRegistryServiceCreateResponse
MeasureRegistryServiceDeleteRequest
MeasureRegistryServiceDeleteResponse
Field |
Type |
Label |
Description |
deleted |
bool |
|
|
MeasureRegistryServiceExistRequest
MeasureRegistryServiceExistResponse
Field |
Type |
Label |
Description |
has_group |
bool |
|
|
has_measure |
bool |
|
|
MeasureRegistryServiceGetRequest
MeasureRegistryServiceGetResponse
Field |
Type |
Label |
Description |
measure |
Measure |
|
|
MeasureRegistryServiceListRequest
Field |
Type |
Label |
Description |
group |
string |
|
|
MeasureRegistryServiceListResponse
Field |
Type |
Label |
Description |
measure |
Measure |
repeated |
|
MeasureRegistryServiceUpdateRequest
Field |
Type |
Label |
Description |
measure |
Measure |
|
|
MeasureRegistryServiceUpdateResponse
StreamRegistryServiceCreateRequest
Field |
Type |
Label |
Description |
stream |
Stream |
|
|
StreamRegistryServiceCreateResponse
StreamRegistryServiceDeleteRequest
StreamRegistryServiceDeleteResponse
Field |
Type |
Label |
Description |
deleted |
bool |
|
|
StreamRegistryServiceExistRequest
StreamRegistryServiceExistResponse
Field |
Type |
Label |
Description |
has_group |
bool |
|
|
has_stream |
bool |
|
|
StreamRegistryServiceGetRequest
StreamRegistryServiceGetResponse
Field |
Type |
Label |
Description |
stream |
Stream |
|
|
StreamRegistryServiceListRequest
Field |
Type |
Label |
Description |
group |
string |
|
|
StreamRegistryServiceListResponse
Field |
Type |
Label |
Description |
stream |
Stream |
repeated |
|
StreamRegistryServiceUpdateRequest
Field |
Type |
Label |
Description |
stream |
Stream |
|
|
StreamRegistryServiceUpdateResponse
TopNAggregationRegistryServiceCreateRequest
TopNAggregationRegistryServiceCreateResponse
TopNAggregationRegistryServiceDeleteRequest
TopNAggregationRegistryServiceDeleteResponse
Field |
Type |
Label |
Description |
deleted |
bool |
|
|
TopNAggregationRegistryServiceExistRequest
TopNAggregationRegistryServiceExistResponse
Field |
Type |
Label |
Description |
has_group |
bool |
|
|
has_top_n_aggregation |
bool |
|
|
TopNAggregationRegistryServiceGetRequest
TopNAggregationRegistryServiceGetResponse
TopNAggregationRegistryServiceListRequest
Field |
Type |
Label |
Description |
group |
string |
|
|
TopNAggregationRegistryServiceListResponse
TopNAggregationRegistryServiceUpdateRequest
TopNAggregationRegistryServiceUpdateResponse
GroupRegistryService
IndexRuleBindingRegistryService
IndexRuleRegistryService
MeasureRegistryService
StreamRegistryService
TopNAggregationRegistryService
Top
banyandb/measure/v1/query.proto
DataPoint
DataPoint is stored in Measures
DataPoint.Field
QueryRequest
QueryRequest is the request contract for query.
Field |
Type |
Label |
Description |
metadata |
banyandb.common.v1.Metadata |
|
metadata is required |
time_range |
banyandb.model.v1.TimeRange |
|
time_range is a range query with begin/end time of entities in the timeunit of milliseconds. |
criteria |
banyandb.model.v1.Criteria |
|
tag_families are indexed. |
tag_projection |
banyandb.model.v1.TagProjection |
|
tag_projection can be used to select tags of the data points in the response |
field_projection |
QueryRequest.FieldProjection |
|
field_projection can be used to select fields of the data points in the response |
group_by |
QueryRequest.GroupBy |
|
group_by groups data points based on their field value for a specific tag and use field_name as the projection name |
agg |
QueryRequest.Aggregation |
|
agg aggregates data points based on a field |
top |
QueryRequest.Top |
|
top limits the result based on a particular field. If order_by is specified, top sorts the dataset based on order_by's output |
offset |
uint32 |
|
offset is used to support pagination, together with the following limit. If top is specified, offset processes the dataset based on top's output |
limit |
uint32 |
|
limit is used to impose a boundary on the number of records being returned. If top is specified, limit processes the dataset based on top's output |
order_by |
banyandb.model.v1.QueryOrder |
|
order_by is given to specify the sort for a tag. |
QueryRequest.Aggregation
QueryRequest.FieldProjection
Field |
Type |
Label |
Description |
names |
string |
repeated |
|
QueryRequest.GroupBy
Field |
Type |
Label |
Description |
tag_projection |
banyandb.model.v1.TagProjection |
|
tag_projection must be a subset of the tag_projection of QueryRequest |
field_name |
string |
|
field_name must be one of fields indicated by field_projection |
QueryRequest.Top
Field |
Type |
Label |
Description |
number |
int32 |
|
number set the how many items should be returned |
field_name |
string |
|
field_name must be one of files indicated by the field_projection |
field_value_sort |
banyandb.model.v1.Sort |
|
field_value_sort indicates how to sort fields ASC: bottomN DESC: topN UNSPECIFIED: topN |
QueryResponse
QueryResponse is the response for a query to the Query module.
Field |
Type |
Label |
Description |
data_points |
DataPoint |
repeated |
data_points are the actual data returned |
Top
banyandb/measure/v1/topn.proto
TopNList
TopNList contains a series of topN items
TopNList.Item
TopNRequest
TopNRequest is the request contract for query.
TopNResponse
TopNResponse is the response for a query to the Query module.
Field |
Type |
Label |
Description |
lists |
TopNList |
repeated |
lists contain a series topN lists ranked by timestamp if agg_func in query request is specified, lists' size should be one. |
Top
banyandb/measure/v1/write.proto
DataPointValue
DataPointValue is the data point for writing. It only contains values.
InternalWriteRequest
WriteRequest
WriteRequest is the request contract for write
WriteResponse
WriteResponse is the response contract for write
Top
banyandb/measure/v1/rpc.proto
MeasureService
Top
banyandb/property/v1/property.proto
Metadata is for multi-tenant use
Property
Property stores the user defined data
Top
banyandb/property/v1/rpc.proto
ApplyRequest
Field |
Type |
Label |
Description |
property |
Property |
|
|
strategy |
ApplyRequest.Strategy |
|
strategy indicates how to update a property. It defaults to STRATEGY_MERGE |
ApplyResponse
Field |
Type |
Label |
Description |
created |
bool |
|
created indicates whether the property existed. True: the property is absent. False: the property existed. |
tags_num |
uint32 |
|
|
DeleteRequest
DeleteResponse
Field |
Type |
Label |
Description |
deleted |
bool |
|
|
tags_num |
uint32 |
|
|
GetRequest
GetResponse
Field |
Type |
Label |
Description |
property |
Property |
|
|
ListRequest
ListResponse
Field |
Type |
Label |
Description |
property |
Property |
repeated |
|
ApplyRequest.Strategy
Name |
Number |
Description |
STRATEGY_UNSPECIFIED |
0 |
|
STRATEGY_MERGE |
1 |
|
STRATEGY_REPLACE |
2 |
|
PropertyService
Top
banyandb/stream/v1/query.proto
Element
Element represents
(stream context) a Span defined in Google Dapper paper or equivalently a Segment in Skywalking.
(Log context) a log
Field |
Type |
Label |
Description |
element_id |
string |
|
element_id could be span_id of a Span or segment_id of a Segment in the context of stream |
timestamp |
google.protobuf.Timestamp |
|
timestamp represents a millisecond 1) either the start time of a Span/Segment, 2) or the timestamp of a log |
tag_families |
banyandb.model.v1.TagFamily |
repeated |
fields contains all indexed Field. Some typical names, - stream_id - duration - service_name - service_instance_id - end_time_milliseconds |
QueryRequest
QueryRequest is the request contract for query.
Field |
Type |
Label |
Description |
metadata |
banyandb.common.v1.Metadata |
|
metadata is required |
time_range |
banyandb.model.v1.TimeRange |
|
time_range is a range query with begin/end time of entities in the timeunit of milliseconds. In the context of stream, it represents the range of the startTime for spans/segments, while in the context of Log, it means the range of the timestamp(s) for logs. it is always recommended to specify time range for performance reason |
offset |
uint32 |
|
offset is used to support pagination, together with the following limit |
limit |
uint32 |
|
limit is used to impose a boundary on the number of records being returned |
order_by |
banyandb.model.v1.QueryOrder |
|
order_by is given to specify the sort for a field. So far, only fields in the type of Integer are supported |
criteria |
banyandb.model.v1.Criteria |
|
tag_families are indexed. |
projection |
banyandb.model.v1.TagProjection |
|
projection can be used to select the key names of the element in the response |
QueryResponse
QueryResponse is the response for a query to the Query module.
Field |
Type |
Label |
Description |
elements |
Element |
repeated |
elements are the actual data returned |
Top
banyandb/stream/v1/write.proto
ElementValue
Field |
Type |
Label |
Description |
element_id |
string |
|
element_id could be span_id of a Span or segment_id of a Segment in the context of stream |
timestamp |
google.protobuf.Timestamp |
|
timestamp is in the timeunit of milliseconds. It represents 1) either the start time of a Span/Segment, 2) or the timestamp of a log |
tag_families |
banyandb.model.v1.TagFamilyForWrite |
repeated |
the order of tag_families' items match the stream schema |
InternalWriteRequest
WriteRequest
WriteResponse
Top
banyandb/stream/v1/rpc.proto
StreamService
Scalar Value Types
.proto Type |
Notes |
C++ |
Java |
Python |
Go |
C# |
PHP |
Ruby |
double |
|
double |
double |
float |
float64 |
double |
float |
Float |
float |
|
float |
float |
float |
float32 |
float |
float |
Float |
int32 |
Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. |
int32 |
int |
int |
int32 |
int |
integer |
Bignum or Fixnum (as required) |
int64 |
Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. |
int64 |
long |
int/long |
int64 |
long |
integer/string |
Bignum |
uint32 |
Uses variable-length encoding. |
uint32 |
int |
int/long |
uint32 |
uint |
integer |
Bignum or Fixnum (as required) |
uint64 |
Uses variable-length encoding. |
uint64 |
long |
int/long |
uint64 |
ulong |
integer/string |
Bignum or Fixnum (as required) |
sint32 |
Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. |
int32 |
int |
int |
int32 |
int |
integer |
Bignum or Fixnum (as required) |
sint64 |
Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. |
int64 |
long |
int/long |
int64 |
long |
integer/string |
Bignum |
fixed32 |
Always four bytes. More efficient than uint32 if values are often greater than 2^28. |
uint32 |
int |
int |
uint32 |
uint |
integer |
Bignum or Fixnum (as required) |
fixed64 |
Always eight bytes. More efficient than uint64 if values are often greater than 2^56. |
uint64 |
long |
int/long |
uint64 |
ulong |
integer/string |
Bignum |
sfixed32 |
Always four bytes. |
int32 |
int |
int |
int32 |
int |
integer |
Bignum or Fixnum (as required) |
sfixed64 |
Always eight bytes. |
int64 |
long |
int/long |
int64 |
long |
integer/string |
Bignum |
bool |
|
bool |
boolean |
boolean |
bool |
bool |
boolean |
TrueClass/FalseClass |
string |
A string must always contain UTF-8 encoded or 7-bit ASCII text. |
string |
String |
str/unicode |
string |
string |
string |
String (UTF-8) |
bytes |
May contain any arbitrary sequence of bytes. |
string |
ByteString |
str |
[]byte |
ByteString |
string |
String (ASCII-8BIT) |