...

Package griddb_go

import "."
Overview
Index

Overview

Welcome to GO Client's documentation!

GO Client for GridDB is developed using GridDB C Client and SWIG (http://www.swig.org/)

Available Functions.

+ STRING, BOOL, BYTE, SHORT, INTEGER, LONG, FLOAT, DOUBLE, TIMESTAMP, BLOB, type for GridDB.

+ Put/get data.

+ Normal query, aggregation with TQL.

+ Multi-Put/Get/Query (batch processing).

Not available function.

+ ARRAY type for GridDB.

+ Timeseries compression.

+ Timeseries-specific function like gsAggregateTimeSeries, gsQueryByTimeSeriesSampling in C Client.

+ Trigger, affinity.

Note:

Nil is used to represent the absence of a value. Accuracy of TIMESTAMP for GridDB is in milliseconds. A value less than a millisecond will be ignored.

Constants

Represents the type(s) of indexes set on a Container. If DEFAULT is specified, the following types of indexes are selected depending on the Container type and corresponding Column type.

| (Column) Type  | Collection  | TimeSeries |
| STRING         |   TREE      |  TREE      |
| BOOL           |   TREE      |  TREE      |
| Numeric type   |   TREE      |  TREE      |
| TIMESTAMP      |   TREE      |  TREE      |
| BLOB           |    (-)      |  (-)       |
const (
    // Indicates a default index.
    INDEX_FLAG_DEFAULT = -1
    // Indicates a tree index. This index can be applied to STRING/BOOL/BYTE/SHORT/INTEGER/LONG/FLOAT/DOUBLE/TIMESTAMP types
    // of Columns of any type of Container, except the Column corresponding to the Row key of TimeSeries.
    INDEX_FLAG_TREE = 1
    // Indicates a hash index. This type of index can be set on STRING/BOOL/BYTE/SHORT/INTEGER/LONG/FLOAT/DOUBLE/TIMESTAMP types
    // of Columns in Collection. It cannot be set on Columns in TimeSeries.
    INDEX_FLAG_HASH = 2
)

Represents the type of a Container.

const (
    // Collection container
    CONTAINER_COLLECTION = 0
    // TimeSeries container
    CONTAINER_TIME_SERIES = 1
)

Represents the type of field values in GridDB.

const (
    // STRING type
    TYPE_STRING = 0
    // Boolean
    TYPE_BOOL = 1
    // BYTE type
    TYPE_BYTE = 2
    // SHORT type
    TYPE_SHORT = 3
    // INTEGER type
    TYPE_INTEGER = 4
    // LONG type
    TYPE_LONG = 5
    // FLOAT type
    TYPE_FLOAT = 6
    // DOUBLE type
    TYPE_DOUBLE = 7
    // TIMESTAMP type
    TYPE_TIMESTAMP = 8
    // BLOB type
    TYPE_BLOB = 10
)

Represents the type of content that can be extracted from RowSet.

const (
    // Row set in a Container
    ROW_SET_CONTAINER_ROWS = 0
    // Aggregation result
    ROW_SET_AGGREGATION_RESULT = 1
    // Represents one of information entries composing a query plan and the results of analyzing a query operation.
    ROW_SET_QUERY_ANALYSIS = 2
)

Represents the unit of the elapsed time period of a Row to be used as the basis of the validity period.

const (
    TIME_UNIT_YEAR        = 0
    TIME_UNIT_MONTH       = 1
    TIME_UNIT_DAY         = 2
    TIME_UNIT_HOUR        = 3
    TIME_UNIT_MINUTE      = 4
    TIME_UNIT_SECOND      = 5
    TIME_UNIT_MILLISECOND = 6
)

Represents NOT NULL constrant.

const (
    // Nullable. Indicates a Column without NOT NULL constraint.
    TYPE_OPTION_NULLABLE = 2
    // NOT NULL. Indicates a Column with NOT NULL constraint.
    TYPE_OPTION_NOT_NULL = 4
)

type AggregationResult

Stores the result of an aggregation operation. The type of the stored result depends on the type of aggregation operation and the type of the target Columns. For specific rules, see the TQL specifications. The type of obtaining value depends on the stored type. Float type and long type are only available when a result is of numeric type, and datetime type when a result is of TIMESTAMP type.

type AggregationResult interface {
    // Returns the aggregation result as the value with specified type.
    Get(int) (interface{}, error)
}

type Container

Container Provides management functions for sets of row having same type. Each column in GridDB schema is defined by a ContainerInfo. Each container consists of one or more columns. Mapping table between column type and value in a row object is following:

| (Column) Type   |      string         |      bool           |        int          |       float64       |      time.Time      |       []byte        |
| STRING          |   mapped(default)   |                     |                     |                     |                     |                     |
| BOOL            |                     |   mapped(default)   |      mapped         |                     |                     |                     |
| BYTE            |                     |                     |   mapped(default)   |                     |                     |                     |
| SHORT           |                     |                     |   mapped(default)   |                     |                     |                     |
| INTEGER         |                     |                     |   mapped(default)   |                     |                     |                     |
| LONG            |                     |                     |   mapped(default)   |                     |                     |                     |
| FLOAT           |                     |                     |      mapped         |   mapped(default)   |                     |                     |
| DOUBLE          |                     |                     |      mapped         |   mapped(default)   |                     |                     |
| TIMESTAMP       |      mapped         |                     |      mapped         |        mapped       |   mapped(default)   |                     |
| BLOB            |      mapped         |                     |                     |                     |                     |   mapped(default)   |

Note:

"default" is the Go type of return value for data query from GridDB. For example: BYTE, SHORT, INTEGER, LONG is returned as GO int when query data from GridDB

TIMESTAMP represents milliseconds since the UNIX epoch (January 1, 1970 00:00:00 UTC) with long type. TIMESTAMP value suports msec. Range of time is from 1/1/1970 to 12/31/9999 (UTC).

There may be more limitation depending on a GridDB cluster configuration. GridDB cannot store a value out of the range set by those configuration.

There is an upper limit for the number of column and the length of column name. The value also has limitations for range and size. Please refer to appendix of GridDB API Reference for more detail. GridDB cannot store a value exceeding these limitations.

NULL in GridDB rows can be stored unless the NOT NULL constraint is set. NOT NULL constraint can be set with columnInfoList object in ContainerInfo when PutContainer() is called.

About transaction, auto commit mode is active as a default. In the auto commit mode, each transaction is processed sequentially, and cannot be canceled. For manual commit mode, transactions before a commit is canceled if there is an error on a cluster node during the transaction via Container instances. Transaction isolation level supports only READ COMMITTED. Lock granularity may differ for each container type.

When a row is updated, added, deleted, and got a lock for updates, a transaction is generated internally. This transaction has a valid period. After some period defined by GridDB is passed from the timing of this transaction for Container instance, any same type of transactions will be not accepted.

type Container interface {
    // Removes a Row corresponding to Row key.
    // In the manual commit mode, the target Row is locked.
    Get(interface{}) (row []interface{}, err error)

    // Newly creates or update a Row.
    // If a Column exists which corresponds to the specified Row key, it determines
    // whether to newly create or update a Row, based on the Row key and the state of
    // the Container. If there is no corresponding Row in the Container, it determines
    // to newly create a Row; otherwise, it updates a relevant Row.
    //
    // If no Column exists which corresponds to the specified Row key, it always creates a new Row.
    // In the manual commit mode, the target Row is locked.
    Put(row []interface{}) (err error)

    // Newly creates an arbitrary number of Rows together based on the specified Row objects group.
    // In the manual commit mode, the target Row is locked.
    MultiPut(rowList [][]interface{}) (err error)

    // Creates a query to execute the specified TQL statement.
    Query(str string) (mQuery Query, err error)

    // Removes a Row corresponding to Row key.
    // In the manual commit mode, the target Row is locked.
    Remove(key interface{}) (err error)

    // Creates a specified type of index on the specified Column.
    // Named index can be set with name parameter.
    // No index cannot be set on a TimeSeries Row key (TIMESTAMP type).
    // When a transaction is held, uncommitted updates will be rolled back.
    // If an index is already set on the specified Column, nothing is changed.
    //
    // When a transaction(s) is active in a target Container, it creates an index after
    // waiting for the transaction(s) to complete.
    CreateIndex(a ...interface{}) (err error)

    // Removes the specified type of index among indexes on the specified Column.
    // Nothing is changed if the specified index is not found.
    //
    // When a transaction(s) is active in a target Container, it removes the index after
    // waiting for the transaction(s) to be completed.
    DropIndex(a ...interface{}) (err error)

    // Writes the results of earlier updates to a non-volatile storage medium, such as SSD,
    // so as to prevent the data loss even if all cluster nodes stop suddenly.
    //
    // It can be used for operations which require higher reliability than usual. However,
    // frequent execution of this operation would potentially cause degradation in response time.
    //
    // The details of behavior, such as the scope of cluster nodes which are the data export targets,
    // will be changed depending on the configuration of GridDB.
    Flush() (err error)
    // Get type of Container
    GetType() (xType int, err error)
    // Rolls back the result of the current transaction and starts a new transaction in the manual commit mode.
    Abort() (err error)
    // Commits the result of the current transaction and start a new transaction in the manual commit mode.
    Commit() (err error)

    // Change the setting of the commit mode.
    // In the auto commit mode, the transaction state cannot be controlled directly and
    // change operations are committed sequentially.
    //
    // If the auto commit mode is disabled, i.e. in the manual commit mode, as long as
    // the transaction has not timed out or commit() has been
    //
    // invoked directly, the same transaction will continue to be used in this Container and
    // change operations will not be commited.
    //
    // When the auto commit mode is switched from disabled to enabled, uncommitted updates
    // are committed implicitly. Unless the commit mode is changed, the state of the transaction
    // will not be changed.
    SetAutoCommit(enabled bool) (err error)
}

type ContainerInfo

Represents the information about a Container.

type ContainerInfo interface {
    SetColumnInfoList(columnInfoList [][]interface{}) (err error)
    SetName(name string)
    GetName() (name string)
    GetColumnInfoList() (columnInfoList [][]interface{})
    GetType() (xType int)
    SetType(xType int)
    SetRowKeyAssigned(rowKeyAssigned bool)
    GetRowKeyAssigned() (rowKeyAssigned bool)
    // Currently, it is not possible to set ExpirationInfo to nil, if nil is input, an error will be returned
    SetExpirationInfo(expirationInfo ExpirationInfo) (err error)
    // Return nil if ContainerInfo is created without ExpirationInfo
    GetExpirationInfo() (expirationInfo ExpirationInfo, err error)
}

type ExpirationInfo

Represents the information about a expiration.

type ExpirationInfo interface {
    GetTime() (time int)
    SetTime(time int)
    GetTimeUnit() (timeUnit int)
    SetTimeUnit(timeUnit int)
    GetDivisionCount() (divisionCount int)
    SetDivisionCount(divisionCount int)
}

type GridDB

Static function in GridDB_GO package

type GridDB interface {
    // Returns a default StoreFactory instance
    StoreFactoryGetInstance() (factory StoreFactory)

    // Get millisecond since January 1, 1970 UTC from GO datetime object.
    GetTimeMillis(mTime time.Time) (mResult int)

    // Create ContainerInfo object
    CreateContainerInfo(a ...interface{}) (result ContainerInfo, err error)

    // Create ExpirationInfo object
    CreateExpirationInfo(a ...interface{}) (result ExpirationInfo, err error)

    // Delete StoreFactory object
    DeleteStoreFactory(factory StoreFactory)

    // Delete Store object
    DeleteStore(store Store)

    // Delete Container object
    DeleteContainer(col Container)

    // Delete ContainerInfo object
    DeleteContainerInfo(colInfo ContainerInfo)

    // Delete ExpirationInfo object
    DeleteExpirationInfo(expiration ExpirationInfo)

    // Delete AggregationResult object
    DeleteAggregationResult(agg AggregationResult)

    // Delete QueryAnalysisEntry object
    DeleteQueryAnalysisEntry(entry QueryAnalysisEntry)

    // Delete PartitionController object
    DeletePartitionController(partition PartitionController)

    // Delete Query object
    DeleteQuery(query Query)

    // Delete RowKeyPredicate object
    DeleteRowKeyPredicate(predicate RowKeyPredicate)

    // Delete RowSet object
    DeleteRowSet(rowset RowSet)
}

type PartitionController

Controller for acquiring and processing the partition status. A partition is a theoretical region where data is stored. It is used to perform operations based on the data arrangement in a GridDB cluster.

type PartitionController interface {
    // Get a list of the Container names belonging to a specified partition.
    // For the specified partition, the sequence of the list of acquisition results
    // before and after will not be changed when the relevant Container is excluded even
    // if a Container is newly created, its composition changed or the Container is deleted.
    // All other lists are compiled in no particular order. No duplicate names will be included.
    //
    // If the upper limit of the number of acquisition cases is specified, the cases
    // will be cut off starting from the ones at the back if the upper limit is exceeded.
    // If no relevant specified condition exists, a blank list is returned.
    GetContainerNames(a ...interface{}) (stringList []string, err error)

    // Get the total number of containers belonging to a specified partition.
    // The calculated quantity when determining the number of containers is generally not dependent
    // on the number of containers.
    GetContainerCount(partition_index int) (count int64, err error)

    // Get the partition index corresponding to the specified Container name.
    // Once a GridDB cluster is constructed, there will not be any changes in the
    // partitions of the destination that the Container belongs to and the partition
    // index will also be fixed. Whether there is a Container corresponding to the
    // specified name or not does not depend on the results.
    //
    // Information required in the computation of the partition index is cached and
    // until the next cluster failure and cluster node failure is detected, no inquiry
    // will be sent to the GridDB cluster again.
    GetPartitionIndexOfContainer(container_name string) (ret int, err error)

    // Get partition count
    // Get the number of partitions in the target GridDB cluster.
    GetPartitionCount() (partitionCount int, err error)
}

type Query

Provides the functions of holding the information about a query related to a specific Container, specifying the options for fetching and retrieving the result.

type Query interface {
    // It locks all target Rows if True is specified as forUpdate . If the target
    // Rows are locked, update operations on the Rows by any other transactions are
    // blocked while a relevant transaction is active. True can be specified only if
    // the auto commit mode is disabled on a relevant Container.
    //
    // When new set of Rows are obtained, any Row operation via RowSet as the last result
    // of specified query is prohibited.
    //
    // If the system tries to acquire a large number of Rows all at once, the upper limit
    // of the communication buffer size managed by the GridDB node may be reached,
    // possibly resulting in a failure. Refer to "System limiting values" in the
    // Appendix of GridDB API Reference for the upper limit size.
    Fetch(a ...interface{}) (mRowSet RowSet, err error)

    // Sets an fetch options for a result acquisition.
    // Once RowSet is returned, it cannot be obtained until the new query is executed.
    SetFetchOptions(a ...interface{}) (err error)
    // Returns RowSet as the latest result.
    // Once RowSet is returned, it cannot be obtained until the new query is executed.
    // If the query is not fetched, return value is nil
    GetRowSet() (rowSet RowSet, err error)
}

type QueryAnalysisEntry

Represents one of information entries composing a query plan and the results of analyzing a query operation.

type QueryAnalysisEntry interface {
    // Returns one of information entries composing a query plan and the results of analyzing a query operation.
    Get() (info []interface{}, err error)
}

type RowKeyPredicate

Represents the condition that a row key satisfies. This is used as the search condition in Store.multi_get(). There are two types of conditions, range condition and individual condition. The two types of conditions cannot be specified at the same time. If the condition is not specified, it means that the condition is satisfied in all the target row keys.

type RowKeyPredicate interface {
    // Returns the value of Row key at the start and end position of the range condition.
    GetRange() (rangeResult []interface{}, err error)

    // Sets list of the elements in the individual condition.
    GetDistinctKeys() (keys []interface{}, err error)

    // Get type of RowkeyPredicate
    GetKeyType() (gsType int)

    // Sets the value of Row key as the start and end position of the range conditions.
    // If the row key type is Timestamp, input can be integer. The input will be treated
    // as number of seconds from 1/1/1970
    SetRange(startKey interface{}, finishKey interface{}) (err error)

    // Returns a list of the values of the Row keys that configure the individual condition.
    // If the row key type is Timestamp, input can be integer. The input will be treated
    // as number of seconds from 1/1/1970
    SetDistinctKeys(keys []interface{}) (err error)
}

type RowSet

Manages a set of Rows obtained by a query. It has a function of per-Row and per-Row-field manipulation and holds a cursor state to specify a target Row.

The cursor is initially located just before the head of a Row set.

type RowSet interface {
    // Updates the values except a Row key of the Row at the cursor position, using the specified Row object.
    Update(row []interface{}) (err error)

    // Moves the cursor to the next Row in a Row set and returns the Row object at the moved position.
    NextRow() (row []interface{}, err error)

    // Moves the cursor to the next Row in a Row set and returns the Row object at the moved position.
    NextQueryAnalysis() (mQueryAnalysis QueryAnalysisEntry, err error)

    // Moves the cursor to the next Row in a Row set and returns the Row object at the moved position.
    NextAggregation() (mAggregationResult AggregationResult, err error)

    // Delete current row data.
    Remove() (err error)

    // Get type of row set
    Xtype() (rowsetType int)

    // Get size of row set
    // The number of Row when a Row set is created
    Size() (size int)

    // Returns whether a Row set has at least one Row ahead of the current cursor position.
    HasNext() (hasNext bool)
}

type Store

Provides functions to manipulate the entire data managed in one GridDB system. A function to add, delete, or change the composition of Collection and TimeSeries Containers as well as to process the Rows constituting a Container is provided. Regardless of container types, etc., multiple container names different only in uppercase and lowercase ASCII characters cannot be defined in a database. See the GridDB Technical Reference for the details. In the operations specifying a container name, uppercase and lowercase ASCII characters are identified as the same unless otherwise noted. Thread safety of each method is not guaranteed.

type Store interface {
    // New creation or update operation is carried out on an arbitrary number of rows of a Container,
    // with the request unit enlarged as much as possible.
    //
    // For each Row object included in a specified entry column, a new creation or update operation is
    // carried out just like the case when Container.put() is invoked individually. However, unlike
    // the case when carried out individually, the target node is requested for the same storage destination, etc. with
    // a unit that is as large as possible. Based on this, the larger the total number of Row objects specified and
    // the larger the total number of target Containers, the higher is the possibility that the number of
    // correspondences with the target node will be reduced.
    //
    // A specified entry column is composed of an arbitrary number of entries that adopt the Container name as
    // its key and the column of Row objects as its value. A subject Container may be a mixture of different
    // Container types and column layouts. However, the Containers must already exist. NULL can not be set as
    // the Container name in the entry column. Also NULL can not be set as the array address to the column of
    // Row objects if the number of elements in the column of Row objects is positive value.
    //
    // An arbitrary number of Row with the same column layout as the subject Container can be included in each
    // column of Row objects. In the current version, all the column order must also be the same. The Container cannot
    // include NULL as an element of the column of Row objects. Depending on the Container type and setting, the same
    // restrictions as Container.put() are established for the contents of Rows that can be operated. If there are
    // multiple columns of Row objects having the same Row key targeting the same Container in the designated entry column,
    // the contents of the rear-most Row object having a Row key with the same value will be reflected using the element order of
    // entry column as a reference if it is between different lists, or the element order of the column of Row object as a reference if
    // it is within the same column of Row object. The transaction cannot be maintained and the lock cannot continue to be
    // retained. However, if the lock that affects the target Row is secured by an existing transaction, the system will
    // continue to wait for all the locks to be released. Like other Container or Row operations, consistency between Containers is
    // not guaranteed. Therefore, the processing results for a certain Container may be affected by other operation commands that
    // have been completed prior to the start of the process. If an error occurs in the midst of processing a Container and
    // its Rows, only the results for some of the Rows of some of the Containers may remain reflected.
    MultiPut(map[string][][]interface{}) (err error)

    // Returns an arbitrary number and range of Rows in any Container based on the specified conditions, with
    // the request unit enlarged as much as possible.
    // Returns the Row contents in accordance with the conditions included in the specified entry column, similar to
    // invoking Container.get() or Query.fetch() individually. However, unlike the case when carried out individually,
    // the target node is requested for the same storage destination, etc. with a unit that is as large as possible.
    // Based on this, the larger the total number of Rows conforming to the conditions and the larger the total number
    // of target Containers, the higher is the possibility that the number of correspondences with the target node will
    // be reduced.
    //
    // A specified condition entry column is composed of an arbitrary number of condition entries that adopt
    // the Container name as the key and the acquisition condition represented by RowKeyPredicate as the value.
    // Multiple instances with the same RowKeyPredicate can also be included. In addition, a subject Container
    // may be a mixture of different Container types and column layouts. However, there are some acquisition
    // conditions that cannot be evaluated due to the composition of the Container. Refer to the definitions of
    // the various setting functions for RowKeyPredicate for the specific restrictions. In addition, the
    // specified Container name must be a real Container. It is prohibited to set NULL in the Container name or
    // the acquisition condition.
    //
    // An acquired entry column is composed of entries that adopt the Container name as its key and column of
    // Row objects as its value. All entries included in a specified entry as acquisition conditions are
    // included in an acquired entry column. If multiple entries pointing the same Container are included in
    // a specified condition entry column, a single entry consolidating these is stored in the acquired entry
    // column. If multiple Row objects are included in the same list, the stored order follows the Container
    // type and the definition of the individual Container type derived from the corresponding Container.
    // If there is no Row corresponding to the specified Container, the number of elements in corresponding
    // column of Row object will be 0.
    //
    // Like other Container or Row operations, consistency between Containers is not guaranteed. Therefore,
    // the processing results for a certain Container may be affected by other operation commands that have
    // been completed prior to the start of the process.
    //
    // Like Container.get() or Query.fetch() , a transaction cannot be maintained and requests for updating
    // locks cannot be made.
    //
    // If the system tries to acquire a large number of Rows all at once, the upper limit of the communication
    // buffer size managed by the GridDB node may be reached, possibly resulting in a failure. Refer to "System
    // limiting values" in the Appendix of GridDB API Reference for the upper limit size.
    MultiGet(map[string]RowKeyPredicate) (mapRowList map[string][][]interface{}, err error)

    // Newly creates or update a Container with the specified ContainerInfo.
    // It can be used only for RowSet obtained with locking enabled.
    PutContainer(a ...interface{}) (container Container, err error)

    // Get a Container instance whose Rows can be processed using a Row.
    // If a not-existed container name is input, no error happen and nil will be return.
    GetContainer(containerName string) (container Container, err error)

    // Delete a Container with the specified name.
    //
    // If the specified Container is already deleted, nothing is changed.
    //
    // When a transaction(s) is active in a target Container, it deletes the Container after waiting for the
    // transaction completion.
    DropContainer(containerName interface{}) (err error)

    // Query execution and fetch is carried out on a specified arbitrary number of Query , with the
    // request unit enlarged as much as possible.
    //
    // For each Query included in a specified query column, perform a similar query execution and fetch
    // as when Query.fetch() is performed individually and set the RowSet in the results. Use get_row_set()
    // to extract the execution results of each Query . However, unlike the case when carried out individually,
    // the target node is requested for the same storage destination, etc. with a unit that is as large as
    // possible. Based on this, the larger the number of elements in the list, the higher is the possibility
    // that the number of correspondences with the target node will be reduced. Query in a list are not
    // executed in any particular order.
    //
    // Only a Query that has not been closed, including corresponding Container acquired via the specified
    // Store instance, can be included in a specified query column. Like a fetch() , the Row operations via
    // RowSet finally generated and held by each Query will be unavailable. If the same instance is included
    // multiple times in an array, the behavior will be the same as the case in which the respective instances
    // differ.
    //
    // Like other Container or Row operations, consistency between Containers is not guaranteed. Therefore,
    // the processing results for a certain Container may be affected by other operation commands that have
    // been completed prior to the start of the process.
    //
    // The commit mode of each Container corresponding to the specified Query can be used in either the auto
    // commit mode or manual commit mode. The transaction status is reflected in the execution results of the
    // query. If the operation is completed normally, the corresponding transaction of each Container will
    // not be aborted so long as the transaction timeout time has not been reached.
    //
    // If an exception occurs in the midst of processing each Query , a new RowSet may be set for only
    // some of the Query . In addition, uncommitted transactions of each Query corresponding to the
    // designated Container may be aborted.
    //
    // If the system tries to acquire a large number of Rows all at once, the upper limit of the
    // communication buffer size managed by the GridDB node may be reached, possibly resulting in a failure.
    // Refer to "System limiting values" in the Appendix of GridDB API Reference for the upper limit size.
    FetchAll(listQuery []Query) (err error)

    // Get information related to a Container with the specified name.
    // A name stored in GridDB is set for the Container name to be included in a returned ContainerInfo .
    // Therefore, compared to the specified Container name, the notation of the ASCII uppercase characters
    // and lowercase characters may differ.
    //
    // When a transaction(s) is active in a target Container, it deletes the Container after waiting for
    // the transaction completion.
    //
    // If a not-existed container name is input, no error happen and nil will be return.
    GetContainerInfo(conName string) (containerInfo ContainerInfo, err error)

    // Get Partition controller.
    PartitionInfo() (partitionController PartitionController, err error)

    // Creates a matching condition with the specified Type as the type of Row key.
    // The target Container must have a Row key, and it must be the same type as the specified Type.
    // The type of Row key that can be set must be the same type that is allowed by the individual
    // Container type derived from Container.
    CreateRowKeyPredicate(mType int) (predicate RowKeyPredicate, err error)
}

type StoreFactory

Manage a Store instance. It manages the client settings shared by Store instances and used connections. To access GridDB, you need to get a Store instance using this Factory.

type StoreFactory interface {
    // Returns a Store with the specified properties.
    // When obtaining Store, it just searches for the name of a master node (hereafter, a master)
    // administering each Container as necessary, but authentication is not performed. When a client
    // really needs to connect to a node corresponding to each Container , authentication is performed.
    //
    // A new Store instance is created by each call of this method. Operations on different
    // Store instances and related resources are thread safe. That is, if some two resources are
    // each created based on Store instances or they are just Store instances, and if they are
    // related to different Store instances respectively, any function related to one resource can be
    // called, no matter when a function related to the other resource may be called from any thread.
    // However, since thread safety is not guaranteed for Store itself, it is not allowed to call
    // a method of a single Store instance from two or more threads at an arbitrary time.
    GetStore(a ...interface{}) (ret Store, err error)

    // Returns the version of this client.
    GetVersion() (version string)
}