redcloud

package module
v0.0.0-...-5a82b97 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 8, 2020 License: MIT Imports: 5 Imported by: 0

README

Red Cloud

Red Cloud is a distributed database system implemented in the Go programming language. It mostly follows the design of the earlier versions of Apache Cassandra, but it is based on more modern technology (such as gRPC, etcd, protocol buffers and Prometheus monitoring). Like Cassandra 1.x, it offers an RPC interface to perform all kinds of operations, instead of having an SQL-like language as the later implementations of Apache Cassandra do.

Unlike Cassandra, Red Cloud does not come with its own replication. Instead, it relies on the underlying data store to be replicated. This can be achieved by running Red Cloud on top of a replicated basic file system which only has to be adapted to the filesystem interface in https://github.com/childoftheuniverse/filesystem. The required functions for the file system to be used for Red Cloud are:

  • Create/Delete
  • Append

Red Cloud is named in honor of Maȟpíya Lúta of the Oglala, who had the wisdom of understanding the importance of continuity in a world full of trouble.

Documentation

Overview

Red Cloud is a distributed database environment implemented using gRPC and protocol buffers.

Package redcloud is a generated protocol buffer package.

It is generated from these files:

caretaker_interface.proto
data_interface.proto
metadata.proto
node_interface.proto
types.proto

It has these top-level messages:

TableName
GetRequest
ColumnRange
GetRangeRequest
InsertRequest
SSTablePathDescription
ServerTabletMetadata
ColumnFamilyMetadata
TableMetadata
ServerTableMetadata
RangeServingRequest
RangeReleaseRequest
RangeReleaseResponse
ServerStatus
Empty
Column
ColumnSet
ColumnFamily

Index

Constants

This section is empty.

Variables

View Source
var Column_ColumnContentType_name = map[int32]string{
	0: "DATA",
	1: "TOMBSTONE",
}
View Source
var Column_ColumnContentType_value = map[string]int32{
	"DATA":      0,
	"TOMBSTONE": 1,
}
View Source
var DataUsage_name = map[int32]string{
	0: "UNKNOWN",
	1: "SENSITIVE_PERSONAL_INFORMATION",
	2: "INTERNAL_BUSINESS_DATA",
}
View Source
var DataUsage_value = map[string]int32{
	"UNKNOWN":                        0,
	"SENSITIVE_PERSONAL_INFORMATION": 1,
	"INTERNAL_BUSINESS_DATA":         2,
}

Functions

func RegisterAdminServiceServer

func RegisterAdminServiceServer(s *grpc.Server, srv AdminServiceServer)

func RegisterDataNodeMetadataServiceServer

func RegisterDataNodeMetadataServiceServer(s *grpc.Server, srv DataNodeMetadataServiceServer)

func RegisterDataNodeServiceServer

func RegisterDataNodeServiceServer(s *grpc.Server, srv DataNodeServiceServer)

Types

type AdminServiceClient

type AdminServiceClient interface {
	// Create a new table with the specified metadata.
	CreateTable(ctx context.Context, in *TableMetadata, opts ...grpc.CallOption) (*Empty, error)
	// Update an existing table with the specified metadata.
	UpdateTable(ctx context.Context, in *TableMetadata, opts ...grpc.CallOption) (*Empty, error)
	//
	// Delete a table; since this will unregister it from all data nodes,
	// this may take some time.
	DeleteTable(ctx context.Context, in *TableName, opts ...grpc.CallOption) (*Empty, error)
}

func NewAdminServiceClient

func NewAdminServiceClient(cc *grpc.ClientConn) AdminServiceClient

type AdminServiceServer

type AdminServiceServer interface {
	// Create a new table with the specified metadata.
	CreateTable(context.Context, *TableMetadata) (*Empty, error)
	// Update an existing table with the specified metadata.
	UpdateTable(context.Context, *TableMetadata) (*Empty, error)
	//
	// Delete a table; since this will unregister it from all data nodes,
	// this may take some time.
	DeleteTable(context.Context, *TableName) (*Empty, error)
}

type Column

type Column struct {
	//
	// Type of the data contained in the column. In journals and minor sstables,
	// this might be set to TOMBSTONE to represent that data in the column has
	// been deleted.
	Type Column_ColumnContentType `protobuf:"varint,1,opt,name=type,enum=redcloud.Column_ColumnContentType" json:"type,omitempty"`
	//
	// timestamp describes the exact point in time, encoded as milliseconds,
	// when the datum has been written. This will be used both for expiry (see
	// ttl) and to determine the most current datum in the column.
	//
	// Nonetheless, this field is filled in by the client because red-cloud
	// can't claim to know where the data came from.
	Timestamp int64 `protobuf:"varint,2,opt,name=timestamp" json:"timestamp,omitempty"`
	//
	// ttl describes the number of milliseconds this datum will be considered
	// valid. A compaction running after timestamp+ttl will discard this datum.
	// A ttl of 0 describes permanent data which will never expire.
	Ttl int64 `protobuf:"varint,3,opt,name=ttl" json:"ttl,omitempty"`
	// content contains the data actually written to the column.
	Content []byte `protobuf:"bytes,4,opt,name=content,proto3" json:"content,omitempty"`
}

Column contains information about data contained within a column.

func (*Column) Descriptor

func (*Column) Descriptor() ([]byte, []int)

func (*Column) GetContent

func (m *Column) GetContent() []byte

func (*Column) GetTimestamp

func (m *Column) GetTimestamp() int64

func (*Column) GetTtl

func (m *Column) GetTtl() int64

func (*Column) GetType

func (m *Column) GetType() Column_ColumnContentType

func (*Column) ProtoMessage

func (*Column) ProtoMessage()

func (*Column) Reset

func (m *Column) Reset()

func (*Column) String

func (m *Column) String() string

type ColumnFamily

type ColumnFamily struct {
	// Row key to identify the row this ColumnFamily pertains to.
	Key []byte `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
	// Many ColumnSets make a ColumnFamily.
	ColumnSet []*ColumnSet `protobuf:"bytes,2,rep,name=column_set,json=columnSet" json:"column_set,omitempty"`
}

ColumnFamily contains all ColumnSet objects associated with a single row which belong to a single column family.

func (*ColumnFamily) Descriptor

func (*ColumnFamily) Descriptor() ([]byte, []int)

func (*ColumnFamily) GetColumnSet

func (m *ColumnFamily) GetColumnSet() []*ColumnSet

func (*ColumnFamily) GetKey

func (m *ColumnFamily) GetKey() []byte

func (*ColumnFamily) ProtoMessage

func (*ColumnFamily) ProtoMessage()

func (*ColumnFamily) Reset

func (m *ColumnFamily) Reset()

func (*ColumnFamily) String

func (m *ColumnFamily) String() string

type ColumnFamilyMetadata

type ColumnFamilyMetadata struct {
	// Name of the column family registered.
	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
}

ColumnFamilyMetadata holds metadata for an individual column family. Only column families which have a ColumnFamilyMetadata record will be considered as existent.

func (*ColumnFamilyMetadata) Descriptor

func (*ColumnFamilyMetadata) Descriptor() ([]byte, []int)

func (*ColumnFamilyMetadata) GetName

func (m *ColumnFamilyMetadata) GetName() string

func (*ColumnFamilyMetadata) ProtoMessage

func (*ColumnFamilyMetadata) ProtoMessage()

func (*ColumnFamilyMetadata) Reset

func (m *ColumnFamilyMetadata) Reset()

func (*ColumnFamilyMetadata) String

func (m *ColumnFamilyMetadata) String() string

type ColumnRange

type ColumnRange struct {
	// Name of the first column to be returned.
	StartColumn string `protobuf:"bytes,1,opt,name=start_column,json=startColumn" json:"start_column,omitempty"`
	//
	// Name of the first column that should not be returned anymore, or an empty
	// string to operate on all columns following StartColumn.
	EndColumn string `protobuf:"bytes,2,opt,name=end_column,json=endColumn" json:"end_column,omitempty"`
}

ColumnRange describes a range of column names to be operated on.

func (*ColumnRange) Descriptor

func (*ColumnRange) Descriptor() ([]byte, []int)

func (*ColumnRange) GetEndColumn

func (m *ColumnRange) GetEndColumn() string

func (*ColumnRange) GetStartColumn

func (m *ColumnRange) GetStartColumn() string

func (*ColumnRange) ProtoMessage

func (*ColumnRange) ProtoMessage()

func (*ColumnRange) Reset

func (m *ColumnRange) Reset()

func (*ColumnRange) String

func (m *ColumnRange) String() string

type ColumnSet

type ColumnSet struct {
	// name contains the name of the column being represented.
	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
	//
	// A ColumnSet consists of a number of Columns. They represent different
	// versions of the data contained in the column.
	Column []*Column `protobuf:"bytes,2,rep,name=column" json:"column,omitempty"`
}

ColumnSet is a list of data records for a single column within a single row.

func (*ColumnSet) Descriptor

func (*ColumnSet) Descriptor() ([]byte, []int)

func (*ColumnSet) GetColumn

func (m *ColumnSet) GetColumn() []*Column

func (*ColumnSet) GetName

func (m *ColumnSet) GetName() string

func (*ColumnSet) ProtoMessage

func (*ColumnSet) ProtoMessage()

func (*ColumnSet) Reset

func (m *ColumnSet) Reset()

func (*ColumnSet) String

func (m *ColumnSet) String() string

type Column_ColumnContentType

type Column_ColumnContentType int32
const (
	Column_DATA      Column_ColumnContentType = 0
	Column_TOMBSTONE Column_ColumnContentType = 1
)

func (Column_ColumnContentType) EnumDescriptor

func (Column_ColumnContentType) EnumDescriptor() ([]byte, []int)

func (Column_ColumnContentType) String

func (x Column_ColumnContentType) String() string

type DataNodeMetadataServiceClient

type DataNodeMetadataServiceClient interface {
	//
	// ServeRange requests to start serving a specific range of the table. May
	// fail, but otherwise it is assumed that the table/range will be served
	// from this node in the future.
	ServeRange(ctx context.Context, in *RangeServingRequest, opts ...grpc.CallOption) (*Empty, error)
	//
	// ReleaseRange requests to stop serving a specific range of a table and to
	// return pointers to all files associated with the range at the time
	// serving has stopped.
	ReleaseRange(ctx context.Context, in *RangeReleaseRequest, opts ...grpc.CallOption) (*RangeReleaseResponse, error)
	//
	// GetServerStatus determines and returns some information about the status
	// of the server.
	GetServerStatus(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*ServerStatus, error)
	//
	// Ping provides simple ping functionality to check node availability.
	Ping(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Empty, error)
}

func NewDataNodeMetadataServiceClient

func NewDataNodeMetadataServiceClient(cc *grpc.ClientConn) DataNodeMetadataServiceClient

type DataNodeMetadataServiceServer

type DataNodeMetadataServiceServer interface {
	//
	// ServeRange requests to start serving a specific range of the table. May
	// fail, but otherwise it is assumed that the table/range will be served
	// from this node in the future.
	ServeRange(context.Context, *RangeServingRequest) (*Empty, error)
	//
	// ReleaseRange requests to stop serving a specific range of a table and to
	// return pointers to all files associated with the range at the time
	// serving has stopped.
	ReleaseRange(context.Context, *RangeReleaseRequest) (*RangeReleaseResponse, error)
	//
	// GetServerStatus determines and returns some information about the status
	// of the server.
	GetServerStatus(context.Context, *Empty) (*ServerStatus, error)
	//
	// Ping provides simple ping functionality to check node availability.
	Ping(context.Context, *Empty) (*Empty, error)
}

type DataNodeServiceClient

type DataNodeServiceClient interface {
	//
	// Request an individual data cell from the database. If multiple versions of
	// the cell exist, only the latest version will be returned.
	Get(ctx context.Context, in *GetRequest, opts ...grpc.CallOption) (*Column, error)
	//
	// Request a range of data from the database. This will return all matching
	// versions of all matching data on the database.
	GetRange(ctx context.Context, in *GetRangeRequest, opts ...grpc.CallOption) (DataNodeService_GetRangeClient, error)
	// Set a very specific data cell to the specified value.
	Insert(ctx context.Context, in *InsertRequest, opts ...grpc.CallOption) (*Empty, error)
}

func NewDataNodeServiceClient

func NewDataNodeServiceClient(cc *grpc.ClientConn) DataNodeServiceClient

type DataNodeServiceServer

type DataNodeServiceServer interface {
	//
	// Request an individual data cell from the database. If multiple versions of
	// the cell exist, only the latest version will be returned.
	Get(context.Context, *GetRequest) (*Column, error)
	//
	// Request a range of data from the database. This will return all matching
	// versions of all matching data on the database.
	GetRange(*GetRangeRequest, DataNodeService_GetRangeServer) error
	// Set a very specific data cell to the specified value.
	Insert(context.Context, *InsertRequest) (*Empty, error)
}

type DataNodeService_GetRangeClient

type DataNodeService_GetRangeClient interface {
	Recv() (*ColumnSet, error)
	grpc.ClientStream
}

type DataNodeService_GetRangeServer

type DataNodeService_GetRangeServer interface {
	Send(*ColumnSet) error
	grpc.ServerStream
}

type DataUsage

type DataUsage int32

Declaration of the type of data contained in a table.

const (
	// Missing data usage declaration
	DataUsage_UNKNOWN DataUsage = 0
	// Table contains SPI
	DataUsage_SENSITIVE_PERSONAL_INFORMATION DataUsage = 1
	// Table contains internal business data that is not SPI
	DataUsage_INTERNAL_BUSINESS_DATA DataUsage = 2
)

func (DataUsage) EnumDescriptor

func (DataUsage) EnumDescriptor() ([]byte, []int)

func (DataUsage) String

func (x DataUsage) String() string

type Empty

type Empty struct {
}

Empty is an empty message. There's a similar definition in the protocol buffer base, but that doesn't seem to work with all protobuf compilers, so we have our own.

func (*Empty) Descriptor

func (*Empty) Descriptor() ([]byte, []int)

func (*Empty) ProtoMessage

func (*Empty) ProtoMessage()

func (*Empty) Reset

func (m *Empty) Reset()

func (*Empty) String

func (m *Empty) String() string

type GetRangeRequest

type GetRangeRequest struct {
	// Key of the first record to be returned.
	StartKey []byte `protobuf:"bytes,1,opt,name=start_key,json=startKey,proto3" json:"start_key,omitempty"`
	//
	// Key of the first record that shall no longer be returned; if empty, all
	// keys after the start key will be returned.
	EndKey []byte `protobuf:"bytes,2,opt,name=end_key,json=endKey,proto3" json:"end_key,omitempty"`
	// Name of the table which the data is being extracted from.
	Table string `protobuf:"bytes,3,opt,name=table" json:"table,omitempty"`
	//
	// Name of the column family the data is stored at. Data can only be
	// requested from a single column family at a time.
	ColumnFamily string `protobuf:"bytes,4,opt,name=column_family,json=columnFamily" json:"column_family,omitempty"`
	// List of the names of all columns affected.
	Column []string `protobuf:"bytes,5,rep,name=column" json:"column,omitempty"`
	//
	// Minimum timestamp to be taken into account for returning, or 0.
	// Please note that no number of affected timestamps filtering can be done
	// on the data node.
	MinTimestamp int64 `protobuf:"varint,6,opt,name=min_timestamp,json=minTimestamp" json:"min_timestamp,omitempty"`
	// Maximum timestamp to be taken into account, or 0.
	MaxTimestamp int64 `protobuf:"varint,7,opt,name=max_timestamp,json=maxTimestamp" json:"max_timestamp,omitempty"`
	//
	// Maximum number of results which will be returned from each data node.
	// There will be no ordering of results, probably, so this is mostly a
	// sanity check mechanism to prevent excessive load. Setting this to 0
	// will disable any limits.
	MaxResults int64 `protobuf:"varint,8,opt,name=max_results,json=maxResults" json:"max_results,omitempty"`
}

GetRangeRequest describes a request for data for a key range from a number (or range) of columns. All data matching the criteria will be streamed back to the client.

func (*GetRangeRequest) Descriptor

func (*GetRangeRequest) Descriptor() ([]byte, []int)

func (*GetRangeRequest) GetColumn

func (m *GetRangeRequest) GetColumn() []string

func (*GetRangeRequest) GetColumnFamily

func (m *GetRangeRequest) GetColumnFamily() string

func (*GetRangeRequest) GetEndKey

func (m *GetRangeRequest) GetEndKey() []byte

func (*GetRangeRequest) GetMaxResults

func (m *GetRangeRequest) GetMaxResults() int64

func (*GetRangeRequest) GetMaxTimestamp

func (m *GetRangeRequest) GetMaxTimestamp() int64

func (*GetRangeRequest) GetMinTimestamp

func (m *GetRangeRequest) GetMinTimestamp() int64

func (*GetRangeRequest) GetStartKey

func (m *GetRangeRequest) GetStartKey() []byte

func (*GetRangeRequest) GetTable

func (m *GetRangeRequest) GetTable() string

func (*GetRangeRequest) ProtoMessage

func (*GetRangeRequest) ProtoMessage()

func (*GetRangeRequest) Reset

func (m *GetRangeRequest) Reset()

func (*GetRangeRequest) String

func (m *GetRangeRequest) String() string

type GetRequest

type GetRequest struct {
	// Key of the row to be fetched from the database.
	Key []byte `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
	// Name of the table which data is being extracted from.
	Table string `protobuf:"bytes,2,opt,name=table" json:"table,omitempty"`
	// Name of the column family the data is stored at.
	ColumnFamily string `protobuf:"bytes,3,opt,name=column_family,json=columnFamily" json:"column_family,omitempty"`
	// Name of the specific column being referred to.
	Column string `protobuf:"bytes,4,opt,name=column" json:"column,omitempty"`
}

GetRequest formulates a request for fetching a single individual key.

func (*GetRequest) Descriptor

func (*GetRequest) Descriptor() ([]byte, []int)

func (*GetRequest) GetColumn

func (m *GetRequest) GetColumn() string

func (*GetRequest) GetColumnFamily

func (m *GetRequest) GetColumnFamily() string

func (*GetRequest) GetKey

func (m *GetRequest) GetKey() []byte

func (*GetRequest) GetTable

func (m *GetRequest) GetTable() string

func (*GetRequest) ProtoMessage

func (*GetRequest) ProtoMessage()

func (*GetRequest) Reset

func (m *GetRequest) Reset()

func (*GetRequest) String

func (m *GetRequest) String() string

type InsertRequest

type InsertRequest struct {
	// Key of the row which shall be updated.
	Key []byte `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
	// Name of the table to mutate.
	Table string `protobuf:"bytes,2,opt,name=table" json:"table,omitempty"`
	// Name of the column family to mutate.
	ColumnFamily string `protobuf:"bytes,3,opt,name=column_family,json=columnFamily" json:"column_family,omitempty"`
	// Name of the column to insert.
	ColumnName string `protobuf:"bytes,4,opt,name=column_name,json=columnName" json:"column_name,omitempty"`
	// Column value to insert into the data stream.
	Column *Column `protobuf:"bytes,5,opt,name=column" json:"column,omitempty"`
}

InsertRequest describes a request to insert a specific value for the specified key; the timestamp and TTL will be preserved.

func (*InsertRequest) Descriptor

func (*InsertRequest) Descriptor() ([]byte, []int)

func (*InsertRequest) GetColumn

func (m *InsertRequest) GetColumn() *Column

func (*InsertRequest) GetColumnFamily

func (m *InsertRequest) GetColumnFamily() string

func (*InsertRequest) GetColumnName

func (m *InsertRequest) GetColumnName() string

func (*InsertRequest) GetKey

func (m *InsertRequest) GetKey() []byte

func (*InsertRequest) GetTable

func (m *InsertRequest) GetTable() string

func (*InsertRequest) ProtoMessage

func (*InsertRequest) ProtoMessage()

func (*InsertRequest) Reset

func (m *InsertRequest) Reset()

func (*InsertRequest) String

func (m *InsertRequest) String() string

type RangeReleaseRequest

type RangeReleaseRequest struct {
	// table is the name of the table whose data is supposed to be unloaded.
	Table string `protobuf:"bytes,1,opt,name=table" json:"table,omitempty"`
	//
	// start_key is the first valid key which is covered by the range which is
	// being loaded.
	StartKey []byte `protobuf:"bytes,2,opt,name=start_key,json=startKey,proto3" json:"start_key,omitempty"`
	//
	// end_key is the first key which is no longer covered by the range which is
	// being loaded. If this is empty, it represents the end of the table.
	EndKey []byte `protobuf:"bytes,3,opt,name=end_key,json=endKey,proto3" json:"end_key,omitempty"`
}

RangeReleaseRequest describes a request to a data node to stop serving a given range of a given table.

func (*RangeReleaseRequest) Descriptor

func (*RangeReleaseRequest) Descriptor() ([]byte, []int)

func (*RangeReleaseRequest) GetEndKey

func (m *RangeReleaseRequest) GetEndKey() []byte

func (*RangeReleaseRequest) GetStartKey

func (m *RangeReleaseRequest) GetStartKey() []byte

func (*RangeReleaseRequest) GetTable

func (m *RangeReleaseRequest) GetTable() string

func (*RangeReleaseRequest) ProtoMessage

func (*RangeReleaseRequest) ProtoMessage()

func (*RangeReleaseRequest) Reset

func (m *RangeReleaseRequest) Reset()

func (*RangeReleaseRequest) String

func (m *RangeReleaseRequest) String() string

type RangeReleaseResponse

type RangeReleaseResponse struct {
	// Relevant paths for all sstables which have been unloaded.
	Paths []*SSTablePathDescription `protobuf:"bytes,1,rep,name=paths" json:"paths,omitempty"`
}

RangeReleaseResponse is sent in response to a RangeReleaseRequest and describes the sstables and journals of the unloaded tablet(s).

func (*RangeReleaseResponse) Descriptor

func (*RangeReleaseResponse) Descriptor() ([]byte, []int)

func (*RangeReleaseResponse) GetPaths

func (*RangeReleaseResponse) ProtoMessage

func (*RangeReleaseResponse) ProtoMessage()

func (*RangeReleaseResponse) Reset

func (m *RangeReleaseResponse) Reset()

func (*RangeReleaseResponse) String

func (m *RangeReleaseResponse) String() string

type RangeServingRequest

type RangeServingRequest struct {
	// table is the name of the table which is supposed to be loaded.
	Table string `protobuf:"bytes,1,opt,name=table" json:"table,omitempty"`
	//
	// start_key is the first valid key which is covered by the range which is
	// being loaded.
	StartKey []byte `protobuf:"bytes,2,opt,name=start_key,json=startKey,proto3" json:"start_key,omitempty"`
	//
	// end_key is the first key which is no longer covered by the range which is
	// being loaded. If this is empty, it represents the end of the table.
	EndKey []byte `protobuf:"bytes,3,opt,name=end_key,json=endKey,proto3" json:"end_key,omitempty"`
	// Relevant paths for all sstables which should be loaded.
	Paths []*SSTablePathDescription `protobuf:"bytes,4,rep,name=paths" json:"paths,omitempty"`
}

RangeServingRequest describes a request to a data node to start serving a given range of a given table.

func (*RangeServingRequest) Descriptor

func (*RangeServingRequest) Descriptor() ([]byte, []int)

func (*RangeServingRequest) GetEndKey

func (m *RangeServingRequest) GetEndKey() []byte

func (*RangeServingRequest) GetPaths

func (*RangeServingRequest) GetStartKey

func (m *RangeServingRequest) GetStartKey() []byte

func (*RangeServingRequest) GetTable

func (m *RangeServingRequest) GetTable() string

func (*RangeServingRequest) ProtoMessage

func (*RangeServingRequest) ProtoMessage()

func (*RangeServingRequest) Reset

func (m *RangeServingRequest) Reset()

func (*RangeServingRequest) String

func (m *RangeServingRequest) String() string

type SSTablePathDescription

type SSTablePathDescription struct {
	// Name of the column family which is covered.
	ColumnFamily string `protobuf:"bytes,1,opt,name=column_family,json=columnFamily" json:"column_family,omitempty"`
	//
	// Path to the major sstable holding the current compacted version of the
	// column family in the specified table.
	MajorSstablePath string `protobuf:"bytes,2,opt,name=major_sstable_path,json=majorSstablePath" json:"major_sstable_path,omitempty"`
	//
	// Path to the minor sstable holding the current amended data of the column
	// family in the specified table.
	MinorSstablePath string `protobuf:"bytes,3,opt,name=minor_sstable_path,json=minorSstablePath" json:"minor_sstable_path,omitempty"`
	//
	// Path to all journal files containing further amendments of the minor
	// sstable which have not been (fully) compacted yet.
	RelevantJournalPaths []string `protobuf:"bytes,4,rep,name=relevant_journal_paths,json=relevantJournalPaths" json:"relevant_journal_paths,omitempty"`
	// Size of the major sstable on the most recent compaction.
	MajorSstableSize int64 `protobuf:"varint,5,opt,name=major_sstable_size,json=majorSstableSize" json:"major_sstable_size,omitempty"`
	// Size of the minor sstable on the most recent compaction.
	MinorSstableSize int64 `protobuf:"varint,6,opt,name=minor_sstable_size,json=minorSstableSize" json:"minor_sstable_size,omitempty"`
}

SSTablePathDescription describes all paths holding data for the given table/key range.

func (*SSTablePathDescription) Descriptor

func (*SSTablePathDescription) Descriptor() ([]byte, []int)

func (*SSTablePathDescription) GetColumnFamily

func (m *SSTablePathDescription) GetColumnFamily() string

func (*SSTablePathDescription) GetMajorSstablePath

func (m *SSTablePathDescription) GetMajorSstablePath() string

func (*SSTablePathDescription) GetMajorSstableSize

func (m *SSTablePathDescription) GetMajorSstableSize() int64

func (*SSTablePathDescription) GetMinorSstablePath

func (m *SSTablePathDescription) GetMinorSstablePath() string

func (*SSTablePathDescription) GetMinorSstableSize

func (m *SSTablePathDescription) GetMinorSstableSize() int64

func (*SSTablePathDescription) GetRelevantJournalPaths

func (m *SSTablePathDescription) GetRelevantJournalPaths() []string

func (*SSTablePathDescription) ProtoMessage

func (*SSTablePathDescription) ProtoMessage()

func (*SSTablePathDescription) Reset

func (m *SSTablePathDescription) Reset()

func (*SSTablePathDescription) String

func (m *SSTablePathDescription) String() string

type ServerStatus

type ServerStatus struct {
	// Number of currently allocated bytes of heap memory.
	HeapSize uint64 `protobuf:"varint,1,opt,name=heap_size,json=heapSize" json:"heap_size,omitempty"`
	// Status port for looking at the web interface.
	StatusPort uint32 `protobuf:"varint,2,opt,name=status_port,json=statusPort" json:"status_port,omitempty"`
}

ServerStatus contains detailed information about the server load etc.

func (*ServerStatus) Descriptor

func (*ServerStatus) Descriptor() ([]byte, []int)

func (*ServerStatus) GetHeapSize

func (m *ServerStatus) GetHeapSize() uint64

func (*ServerStatus) GetStatusPort

func (m *ServerStatus) GetStatusPort() uint32

func (*ServerStatus) ProtoMessage

func (*ServerStatus) ProtoMessage()

func (*ServerStatus) Reset

func (m *ServerStatus) Reset()

func (*ServerStatus) String

func (m *ServerStatus) String() string

type ServerTableMetadata

type ServerTableMetadata struct {
	// The name of the table, for identifying it.
	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
	// Table metadata associated with the table.
	TableMd *TableMetadata `protobuf:"bytes,2,opt,name=table_md,json=tableMd" json:"table_md,omitempty"`
	//
	// List of all tablets associated with this table and the servers they
	// are loaded on.
	Tablet []*ServerTabletMetadata `protobuf:"bytes,3,rep,name=tablet" json:"tablet,omitempty"`
}

ServerTableMetadata holds Server-side table metadata for redcloud tables.

func (*ServerTableMetadata) Descriptor

func (*ServerTableMetadata) Descriptor() ([]byte, []int)

func (*ServerTableMetadata) GetName

func (m *ServerTableMetadata) GetName() string

func (*ServerTableMetadata) GetTableMd

func (m *ServerTableMetadata) GetTableMd() *TableMetadata

func (*ServerTableMetadata) GetTablet

func (m *ServerTableMetadata) GetTablet() []*ServerTabletMetadata

func (*ServerTableMetadata) ProtoMessage

func (*ServerTableMetadata) ProtoMessage()

func (*ServerTableMetadata) Reset

func (m *ServerTableMetadata) Reset()

func (*ServerTableMetadata) String

func (m *ServerTableMetadata) String() string

type ServerTabletMetadata

type ServerTabletMetadata struct {
	// The first key of the tablet.
	StartKey []byte `protobuf:"bytes,1,opt,name=start_key,json=startKey,proto3" json:"start_key,omitempty"`
	//
	// The first key after the end of the tablet, or an empty byte string
	// if this is the last tablet of the table.
	EndKey []byte `protobuf:"bytes,2,opt,name=end_key,json=endKey,proto3" json:"end_key,omitempty"`
	//
	// host currently holding the tablet. Please note that this may change
	// at any time.
	Host string `protobuf:"bytes,3,opt,name=host" json:"host,omitempty"`
	//
	// Port the host currently holding the tablet is exporting the database
	// service on.
	Port int32 `protobuf:"varint,4,opt,name=port" json:"port,omitempty"`
	//
	// Optional path to the sstable file holding the table data, so future
	// data nodes can pick it up.
	SstablePath []*SSTablePathDescription `protobuf:"bytes,5,rep,name=sstable_path,json=sstablePath" json:"sstable_path,omitempty"`
}

ServerTabletMetadata holds metadata for tablets, i.e. individual pieces of tables living on specific servers.

func (*ServerTabletMetadata) Descriptor

func (*ServerTabletMetadata) Descriptor() ([]byte, []int)

func (*ServerTabletMetadata) GetEndKey

func (m *ServerTabletMetadata) GetEndKey() []byte

func (*ServerTabletMetadata) GetHost

func (m *ServerTabletMetadata) GetHost() string

func (*ServerTabletMetadata) GetPort

func (m *ServerTabletMetadata) GetPort() int32

func (*ServerTabletMetadata) GetSstablePath

func (m *ServerTabletMetadata) GetSstablePath() []*SSTablePathDescription

func (*ServerTabletMetadata) GetStartKey

func (m *ServerTabletMetadata) GetStartKey() []byte

func (*ServerTabletMetadata) ProtoMessage

func (*ServerTabletMetadata) ProtoMessage()

func (*ServerTabletMetadata) Reset

func (m *ServerTabletMetadata) Reset()

func (*ServerTabletMetadata) String

func (m *ServerTabletMetadata) String() string

type TableMetadata

type TableMetadata struct {
	// The name of the table.
	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
	//
	// Desired size after which tablets should be split.
	// If unspecified, defaults to 128 MB.
	SplitSize int64 `protobuf:"varint,2,opt,name=split_size,json=splitSize" json:"split_size,omitempty"`
	//
	// Maximum number of versions to keep of each cell. If 0, cells will never
	// be expired automatically based on the number of them.
	MaxVersions int64 `protobuf:"varint,3,opt,name=max_versions,json=maxVersions" json:"max_versions,omitempty"`
	//
	// Maximum age, in milliseconds, of older versions of cells, i.e. the ones
	// which do not have the highest insertion time stamp. If 0, old versions
	// are not expired based on age.
	MaxVersionAge int64 `protobuf:"varint,4,opt,name=max_version_age,json=maxVersionAge" json:"max_version_age,omitempty"`
	//
	// Path the files will be stored under. Changes to this value will only take
	// effect gradually when tablets are reloaded.
	PathPrefix string `protobuf:"bytes,5,opt,name=path_prefix,json=pathPrefix" json:"path_prefix,omitempty"`
	//
	// List of all column families configured for the table.
	ColumnFamily []*ColumnFamilyMetadata `protobuf:"bytes,6,rep,name=column_family,json=columnFamily" json:"column_family,omitempty"`
	//
	// Declaration of the type of data contained in the table.
	DataUsage DataUsage `protobuf:"varint,7,opt,name=data_usage,json=dataUsage,enum=redcloud.DataUsage" json:"data_usage,omitempty"`
}

TableMetadata holds table metadata for redcloud tables. This is the user-specified part of the table metadata.

func (*TableMetadata) Descriptor

func (*TableMetadata) Descriptor() ([]byte, []int)

func (*TableMetadata) GetColumnFamily

func (m *TableMetadata) GetColumnFamily() []*ColumnFamilyMetadata

func (*TableMetadata) GetDataUsage

func (m *TableMetadata) GetDataUsage() DataUsage

func (*TableMetadata) GetMaxVersionAge

func (m *TableMetadata) GetMaxVersionAge() int64

func (*TableMetadata) GetMaxVersions

func (m *TableMetadata) GetMaxVersions() int64

func (*TableMetadata) GetName

func (m *TableMetadata) GetName() string

func (*TableMetadata) GetPathPrefix

func (m *TableMetadata) GetPathPrefix() string

func (*TableMetadata) GetSplitSize

func (m *TableMetadata) GetSplitSize() int64

func (*TableMetadata) ProtoMessage

func (*TableMetadata) ProtoMessage()

func (*TableMetadata) Reset

func (m *TableMetadata) Reset()

func (*TableMetadata) String

func (m *TableMetadata) String() string

type TableName

type TableName struct {
	// Name of the table the operation is performed on.
	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
}

TableName contains just the name of a table.

func (*TableName) Descriptor

func (*TableName) Descriptor() ([]byte, []int)

func (*TableName) GetName

func (m *TableName) GetName() string

func (*TableName) ProtoMessage

func (*TableName) ProtoMessage()

func (*TableName) Reset

func (m *TableName) Reset()

func (*TableName) String

func (m *TableName) String() string

Directories

Path Synopsis
wc_cli is a command line client for red-cloud.
wc_cli is a command line client for red-cloud.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL