GridDB Python API(NoSQL)リファレンス¶
はじめに¶
本ドキュメントでは、GridDB Python APIのNoSQLインタフェースについて説明します。
GridDB Python APIのNoSQLインタフェースは、JPype(OSS)を利用してGridDB Java API経由で サーバへの操作を提供します。
また、大量データ操作を高速化するために、Apache Arrow(OSS)を利用したインタフェースも 提供します。
Python からJNI(Java Native Interface)経由で Java アクセスを提供するソフト(OSS)
- ※ Apahe Arrow:
Apacheプロジェクトの1つ。効率的なデータ交換のために設計された、カラム指向のデータフォーマット、ソフト(OSS)
操作方法¶
事前処理¶
(A)推奨の方法:
事前に以下のインポートとJVMの起動が必要です。
import jpype
jpype.startJVM(classpath=['./gridstore.jar', './gridstore-arrow.jar'])
import griddb_python as griddb
startJVM()メソッドにて、GridDB Java APIのJarファイル(gridstore.jar)とGridDB JavaAPI Adapter for Apache ArrowのJarファイル(gridstore-arrow.jar)をクラスパスに指定します。
(B)従来のPython APIと同じ方法で使う場合:
import griddb_python as griddb
環境変数CLASSPATHにGridDB Java APIのJarファイル(gridstore.jar)とGridDB JavaAPI Adapter for Apache ArrowのJarファイル(gridstore-arrow.jar)の場所を設定します。 「jpype」のインポートやJVMの起動の記述なしで、従来のPython APIと同じ方法で使うことができます。
(Linux系のOSの場合の設定例)
# export CLASSPATH="./gridstore.jar:./gridstore-arrow.jar"
(C)Apache Arrow形式でやり取りする場合:
RootAllocatorオブジェクトを作成して、関連するメソッドに与えてください。
import jpype
jpype.startJVM(classpath=['./gridstore.jar', './gridstore-arrow.jar'])
import griddb_python as griddb
import sys
ra =RootAllocator(sys.maxsize)
(D)Python API(SQL)と併用する場合:
「jpype.dbapi2」のインポートを追加してください。
GridDB JDBCドライバのJarファイル(gridstore-jdbc.jar)の場所をクラスパスに追加で指定してください。
import jpype
import jpype.dbapi2
jpype.startJVM(classpath=['./gridstore.jar', './gridstore-arrow.jar', './gridstore-jdbc.jar'])
import griddb_python as griddb
その他¶
Pandasライブラリとやりとりするために以下の操作例をご利用ください。
Pandas DataFrameオブジェクトによるGridDBへのデータ登録
例. container.multi_put(df.values.tolist())
GridDBからPandas DataFrameオブジェクトへのデータ取得
例. df = pd.DataFrame(list(rowset), colums=rowset.get_column_names())
griddb_pythonモジュール¶
- class griddb_python.ContainerType(value)¶
コンテナの種別を表します。
- COLLECTION = 0¶
コレクションコンテナ
- TIME_SERIES = 1¶
時系列コンテナ
- class griddb_python.IndexType(value)¶
Containerに設定する索引の種別を示します。
DEFAULTが指定された場合、以下の基準に従い、デフォルト種別の索引が選択されます。
カラム型
コレクションコンテナ
時系列コンテナ
STRING
TREE
TREE
BOOL
TREE
TREE
数値型
TREE
TREE
TIMESTAMP
TREE
TREE
GEOMETRY
SPATIAL
設定不可
BLOB
設定不可
設定不可
- DEFAULT = -1¶
デフォルトの索引種別を示します。
- SPATIAL = 4¶
空間索引を示します。この索引種別は、コレクションにおけるGEOMETRY型のカラムに対してのみ使用できます。時系列コンテナに対して設定することはできません。
- TREE = 1¶
ツリー索引を示します。この索引種別は、時系列におけるロウキーと対応するカラムを除く任意の種別のコンテナにおける、STRING/BOOL/BYTE/SHORT/INTEGER/LONG/FLOAT/DOUBLE/TIMESTAMPの型のカラムに対して使用できます。
- class griddb_python.RowSetType(value)¶
RowSetから取り出すことのできる内容の種別を示します。
- AGGREGATION_RESULT = 1¶
集計演算の結果
- CONTAINER_ROWS = 0¶
クエリ実行より求めたロウの集合
- QUERY_ANALYSIS = 2¶
クエリプランならびにクエリ処理解析結果を構成する一連の情報
- class griddb_python.TimeUnit(value)¶
時系列処理で用いる時間の単位を示します。
- DAY = 2¶
日
- HOUR = 3¶
時
- MICROSECOND = 7¶
マイクロ秒
- MILLISECOND = 6¶
ミリ秒
- MINUTE = 4¶
分
- MONTH = 1¶
月
- NANOSECOND = 8¶
ナノ秒
- SECOND = 5¶
秒
- YEAR = 0¶
年
- class griddb_python.Type(value)¶
GridDB上のフィールド値の型を表します。
- BLOB = 10¶
BLOB型
- BOOL = 1¶
BOOL型
- BYTE = 2¶
BYTE型
- DOUBLE = 7¶
DOUBLE型
- FLOAT = 6¶
FLOAT型
- GEOMETRY = 9¶
GEOMETRY型
- INTEGER = 4¶
INTEGER型
- LONG = 5¶
LONG型
- SHORT = 3¶
SHORT型
- STRING = 0¶
STRING型
- TIMESTAMP = 8¶
TIMESTAMP型
- class griddb_python.TypeOption(value)¶
NOT NULL制約を示します。
- NOT_NULL = 4¶
NOT NULL制約を持つカラムであることを示します。
- NULLABLE = 2¶
NOT NULL制約を持たないカラムであることを示します。
- class griddb_python.StoreFactory¶
GridStoreインスタンスを管理します。
GridStoreインスタンス共通のクライアント設定や使用済みのコネクションを管理します。
GridDBにアクセスするためには、このファクトリを介して GridStoreインスタンスを取得する必要があります。
このクラスの公開メソッドは、すべてスレッド安全です。
- get_instance()¶
StoreFactoryオブジェクトを取得します。
- 返り値:
StoreFactoryオブジェクト (StoreFactory)
- get_store(host=None, port=None, cluster_name=None, database=None, username=None, password=None, notification_member=None, notification_provider=None, application_name=None, time_zone=None, authentication=None, ssl_mode=None, connection_route=None)¶
指定のプロパティを持つStoreオブジェクトを取得します。
Storeオブジェクトを取得した時点では、各Containerを管理するマスタノード(以下、マスタ)のアドレス探索を必要に応じて行うだけであり、認証処理は行われません。実際に各Containerに対応するノードに接続する必要が生じたタイミングで、認証処理が行われます。
取得のたびに、新たなStoreオブジェクトが生成されます。異なるStoreオブジェクトならびに関連するオブジェクトに対する操作は、スレッド安全です。すなわち、ある2つのオブジェクトがそれぞれStoreオブジェクトを基にして生成されたものまたはStoreオブジェクトそのものであり、かつ、該当する関連Storeオブジェクトが異なる場合、一方のオブジェクトに対してどのスレッドからどのタイミングでメソッドが呼び出されていたとしても、他方のオブジェクトのメソッドを呼び出すことができます。ただし、Store自体のスレッド安全性は保証されていないため、同一Storeオブジェクトに対して複数スレッドから任意のタイミングでメソッド呼び出しすることはできません。
- パラメータ:
host (str): マスタ自動検出に用いられる通知情報を受信するためのIPアドレス (IPv4のみ)もしくは接続先ホスト名(IPアドレス)
port (int): マスタ自動検出に用いられる通知情報を受信するためのポート番号もしくは接続先ポート番号
cluster_name (str): クラスタ名
database (str): データベース名
username (str): ユーザ名
password (str): パスワード
notification_member (str): 固定リスト方式を使用して構成されたクラスタに接続する場合に、クラスタノードのアドレス・ポートのリストを"(アドレス1):(ポート1),(アドレス2):(ポート2),..."形式で指定する。
notification_provider (str):プロバイダ方式を使用して構成されたクラスタに接続する場合に、アドレスプロバイダのURLを指定する。
application_name (str): アプリケーション名
time_zone (str): タイムゾーン。TQLでのTIMESTAMP値演算などに使用される。「±hh:mm」または「±hhmm」形式によるオフセット値 (±は+または-、hhは時、 mmは分)、「Z」(+00:00に相当)、「auto」(実行環境に応じ自動設定)のいずれかを指定する。 autoが使用できるのは夏時間を持たないタイムゾーンに限定される。
authentication (str): 認証種別。"INTERNAL"(内部認証)もしくは"LDAP"(外部認証)を指定する。
ssl_mode (str): クラスタへの接続においてSSLの使用有無の判断に用いられるモード。"DISABLED"(SSLを常に使用しない)、"PREFERRED"(可能な限りSSLを使用する。SSL接続・非SSL接続共に使用できる場合は SSL接続を使用する)もしくは"VERIFY"(SSLを常に使用する。サーバ検証あり)を指定する。
connection_route (str): クラスタ接続時における通信経路。"PUBLIC"を指定すると、クラスタの外部通信経路が設定されている場合に外部通信経路を経由した接続を行う。省略時は通常のクラスタ通信経路を用いた接続が行われる。外部接続が必要な場合のみ指定する。
- 返り値:
Storeオブジェクト (Store)
- get_version()¶
このクライアントライブラリのバージョンを取得する
- 返り値:
このクライアントライブラリのバージョン (str)
- class griddb_python.Store¶
接続したGridDBシステム内のデータベースに属するデータを操作するための機能を提供します。
コレクションや時系列といったコンテナの追加・削除・構成変更、ならびに、コンテナを構成するロウの操作機能を提供します。
コンテナ種別などの違いによらず、1つのデータベースのコンテナ間で、 ASCIIの大文字・小文字表記だけが異なる名前のものを複数定義することはできません。コンテナ名は、ベースコンテナ名単独、もしくは、ベースコンテナ名の後ろにノードアフィニティ名をアットマーク「@」で連結した形式で表記します。その他、コンテナの定義において使用できるコンテナ名の文字種や長さには制限があります。具体的には、GridDB機能リファレンスを参照してください。特に記載のない限り、コンテナ名を指定する操作では、ASCIIの大文字・小文字表記の違いは区別されません。
各メソッドのスレッド安全性は保証されません。
- create_row_key(info)¶
RowKeyオブジェクトを作成します。
- パラメータ:
info (ContainerInfo): コンテナ情報
- 返り値:
RowKeyオブジェクト (RowKey)
- create_row_key_predicate(type)¶
指定のtypeをロウキーの型とする合致条件を作成します。
合致条件の評価対象とするコンテナは、ロウキーを持ち、かつ、そのロウキーの型は指定のtypeと同一の型でなければなりません。
第一パラメータ(type)にキーワードパラメータを使いことはできません。
- パラメータ:
type (Type, RowKey): ロウキーの型
- 返り値:
RowKeyPredicateオブジェクト (RowKeyPredicate)
- drop_container(name)¶
指定の名前を持つコンテナを削除します。
削除済みの場合は何も変更しません。
処理対象のコンテナにおいて実行中のトランザクションが存在する場合、それらの終了を待機してから削除を行います。
- パラメータ:
name (str): コンテナ名
- fetch_all(query_list)¶
指定された任意個数のQueryについて、可能な限りリクエスト単位を大きくしてクエリ実行とフェッチを行います。
指定のリストに含まれる各Queryに対して、個別にQuery.fetch() を行った場合と同様にクエリ実行とフェッチを行い、結果のRowSetを設定します。各Queryの実行結果を取り出すには、Query.getRowSet() を使用します。ただし、個別に行う場合と違い、同一の格納先などの可能な限り大きな単位で対象ノードに対しリクエストしようとします。これにより、リストの要素数が多くなるほど、対象ノードとやりとりする回数が削減される可能性が高くなります。リスト内のQueryの実行順序は不定です。
指定のリストには、このGridStoreオブジェクトを介して得られた、対応するContainerを含めクローズされていないQuery のみを含めることができます。 Query.fetch()と同様、各Queryが持つ最後に生成された RowSetがクローズされます。同一のインスタンスがリストに複数含まれていた場合、それぞれ異なるインスタンスであった場合と同様に振る舞います。
他のコンテナ・ロウ操作と同様、異なるコンテナ間での整合性は保証されません。したがって、あるコンテナに対する処理の結果は、その処理の開始前に完了した他の操作命令の影響を受けることがあります。
指定のQueryに対応する各Containerのコミットモードが自動コミットモード、手動コミットモードのいずれであったとしても、使用できます。トランザクション状態はクエリの実行結果に反映されます。正常に操作が完了した場合、トランザクションタイムアウト時間に到達しない限り、対応する各Containerのトランザクションをアボートすることはありません。
各Queryに対する処理の途中で例外が発生した場合、一部のQueryについてのみ新たなRowSet が設定されることがあります。また、指定のQueryに対応する各Containerの未コミットのトランザクションについては、アボートされることがあります。
一度に大量のロウを取得しようとした場合、GridDBノードが管理する通信バッファのサイズの上限に到達し、失敗することがあります。上限サイズについては、GridDB機能リファレンスを参照してください。
- パラメータ:
query_list (list[Query]): 対象Queryオブジェクトのリスト
- get_container(name)¶
コンテナ名からContainerオブジェクトを取得します。
- パラメータ:
name (str): コンテナ名
- 返り値:
コンテナオブジェクト (Container)。指定した名前のコンテナが存在しない場合はNoneを返します。
- get_container_info(name)¶
指定の名前のコンテナに関する情報を取得します。
返却されるContainerInfoに含まれるコンテナ名は、GridDB上に格納されているものが設定されます。したがって、指定したコンテナ名と比較すると、 ASCIIの大文字・小文字表記が異なる場合があります。
- パラメータ:
name (str): コンテナ名
- 返り値:
ContainerInfoオブジェクト (ContainerInfo)。指定した名前のコンテナが存在しない場合はNoneを返します。
- multi_get(predicate_entry, root_allocator=None)¶
指定の条件に基づき、任意のコンテナの任意個数・範囲のロウについて、可能な限りリクエスト単位を大きくして取得します。
指定のdictに含まれる条件に従い、個別にContainer.get(Object) もしくはQuery.fetch()を呼び出した場合と同様に、ロウの内容を取得します。ただし、個別に行う場合と違い、同一の格納先などの可能な限り大きな単位で対象ノードに対しリクエストしようとします。これにより、対象コンテナの総数や条件に合致するロウの総数が多くなるほど、対象ノードとやりとりする回数が削減される可能性が高くなります。
指定のdictは、コンテナ名をキー、RowKeyPredicateで表現される取得条件を値とする任意個数のエントリから構成されます。同一のRowKeyPredicateインスタンスを複数含めることもできます。また、対象とするコンテナとして、コンテナ種別やカラムレイアウトが異なるものを混在させることができます。ただし、コンテナの構成によっては評価できない取得条件が存在します。具体的な制限については、RowKeyPredicateに対する各種設定機能の定義を参照してください。dictのキーまたは値としてNoneを含めることはできません。
返却されるdictは、コンテナ名をキー、ロウオブジェクトのリストを値とするエントリにより構成されます。また、返却されるマップには、取得条件として指定したマップに含まれるコンテナ名のうち、リクエスト時点で実在するコンテナに関するエントリのみが含まれます。 ASCIIの大文字・小文字表記だけが異なり同一のコンテナを指すコンテナ名の設定された、複数のエントリが指定のdictに含まれていた場合、返却されるdictにはこれらを1つにまとめたエントリが格納されます。指定のコンテナに対応するロウが1つも存在しない場合、対応するロウオブジェクトのリストは空になります。
返却されたdictもしくはdictに含まれるリストに対して変更操作を行った場合に、 UnsupportedOperationExceptionなどの実行時例外が発生するかどうかは未定義です。
他のコンテナ・ロウ操作と同様、異なるコンテナ間での整合性は保証されません。したがって、あるコンテナに対する処理の結果は、その処理の開始前に完了した他の操作命令の影響を受けることがあります。
一度に大量のロウを取得しようとした場合、GridDBノードが管理する通信バッファのサイズの上限に到達し、失敗することがあります。上限サイズについては、GridDB機能リファレンスを参照してください。
root_allocatorにRootAllocatorオブジェクトを指定した場合は、コンテナ名をキー、RecordBatchオブジェクトを値とするエントリにより構成されるdictを返却します。
- パラメータ:
predicate_entry (dict[str, RowKeyPredicate]): 対象とするコンテナの名前と条件からなるdict型データ
root_allocator (RootAllocator): RootAllocatorオブジェクト
- 返り値:
コンテナの名前とロウオブジェクトのリストからなるdict型データ (dict[str, list], dict[str, RecordBatch])
- multi_put(container_entry, root_allocator=None)¶
任意のコンテナの任意個数のロウについて、可能な限りリクエスト単位を大きくして新規作成または更新操作を行います。
指定のdictに含まれる各ロウオブジェクトについて、個別に Container.put(Object)を呼び出した場合と同様に新規作成または更新操作を行います。ただし、個別に行う場合と違い、同一の格納先などの可能な限り大きな単位で対象ノードに対しリクエストしようとします。これにより、対象コンテナの総数や指定のロウオブジェクトの総数が多くなるほど、対象ノードとやりとりする回数が削減される可能性が高くなります。
指定のdictは、コンテナ名をキー、ロウオブジェクトのリストを値とする任意個数のエントリから構成されます。対象とするコンテナとして、コンテナ種別やカラムレイアウトが異なるものを混在させることができます。ただし、すでに存在するコンテナでなければなりません。dictのキーまたは値としてNoneを含めることはできません。
各ロウオブジェクトのリストには、対象のコンテナと同一のカラムレイアウトの Rowのみを任意個数含めることができます。現バージョンでは、カラム順序についてもすべて同一でなければなりません。リストの要素としてnullを含めることはできません。
指定のdictに含まれる各ロウオブジェクトにArrow形式のRecordBatchオブジェクトを指定した場合はroot_allocatorにRootAllocatorオブジェクトを指定する必要があります。
- パラメータ:
container_entry (dict[str, list], dict[str, RecordBatch]): 対象とするコンテナの名前とロウオブジェクトのリスト(もしくはRecordBatchオブジェクト)からなるdict型データ
root_allocator (RootAllocator): RootAllocatorオブジェクト
- property partition_info¶
対応するGridDBクラスタについてのPartitionControllerオブジェクトを取得します。
- put_container(info, modifiable=False)¶
ContainerInfoを指定して、コンテナを新規作成または変更します。
- パラメータ:
info (ContainerInfo): 処理対象のContainerInfoオブジェクト
modifiable (bool): 既存コンテナのカラムレイアウト変更を許可するかどうか
- 返り値:
コンテナオブジェクト (Container)
- class griddb_python.ContainerInfo(name, column_info_list, type=ContainerType.COLLECTION, row_key=True, row_key_column_list=None)¶
コンテナに関する情報を表します。
- property column_info_list¶
カラム情報のリスト(dict形式を利用しない場合)
- property column_info_list_dict¶
カラム情報のリスト(dict形式を利用する場合)
- property name¶
コンテナ名
- property row_key¶
複合ロウキーが設定されていない場合に限定し、ロウキーに対応するカラムの有無を表します。
- property row_key_column_list¶
ロウキーを構成するカラム名の一覧 (list[str])
- property type¶
コンテナの種別
- class griddb_python.Container¶
同一タイプのロウ集合からなるGridDBの構成要素に対しての、管理機能を提供します。
GridDB上のスキーマを構成する各カラムは、ロウオブジェクト内のフィールドやメソッド定義と対応関係を持ちます。 1つのコンテナは1つ以上のカラムにより構成されます。
カラム名の文字種や長さ、カラム数には制限があります。 また、フィールドの値の表現範囲やサイズにも制限があります。 詳細は機能リファレンスの「システムの制限値」をご覧ください。
GridDB上のロウにおけるNULLは、NOT NULL制約が設定されていない限り保持することができます。 PythonではNoneとして入出力できます。
トランザクション処理では、デフォルトで自動コミットモードが有効になっています。自動コミットモードでは、変更操作は逐次確定し、明示的に取り消すことができません。手動コミットモードにおいて、このオブジェクトを介した操作によりクラスタノード上でエラーが検出されGSExceptionが送出された場合、コミット前の更新操作はすべて取り消されます。トランザクション分離レベルはREAD COMMITTEDのみをサポートします。ロック粒度は、コンテナの種別によって異なります。
このContainerの生成後またはトランザクション終了後、最初にロウの更新・追加・削除、ならびに更新用ロック獲得が行われた時点で、新たなトランザクションが開始されます。
- abort()¶
手動コミットモードにおいて、現在のトランザクションの操作結果を元に戻し、トランザクションを終了します。
- commit()¶
手動コミットモードにおいて、現在のトランザクションにおける操作結果を確定させ、トランザクションを終了します。
- create_index(arg, index_type=IndexType.DEFAULT, name=None)¶
索引を作成します。
argにカラム名、index_typeに索引種別、nameに索引名を指定することで単一カラムの索引を作成します。 argに索引情報(IndexInfoオブジェクト)を指定することで複合索引を作成します。
時系列のロウキー(TIMESTAMP型)には索引を設定できません。
第一パラメータ(arg)にキーワードパラメータを使うことはできません。
- パラメータ:
arg (str, IndexInfo): カラム名もしくは索引情報
index_type (IndexType): 索引種別
name (str): 索引名
- drop_index(arg, index_type=IndexType.DEFAULT, name=None)¶
索引を削除します。
argにカラム名、index_typeに索引種別、nameに索引名を指定することで単一カラムの索引を削除します。 argに索引情報(IndexInfoオブジェクト)を指定することで複合索引を削除します。
削除対象となる索引が一つも存在しない場合、索引の削除は行われません。
第一パラメータ(arg)にキーワードパラメータを使うことはできません。
- パラメータ:
arg (str, IndexInfo): カラム名もしくは索引情報
index_type (IndexType): 索引種別
name (str): 索引名
- flush()¶
これまでの更新結果をSSDなどの不揮発性記憶媒体に書き出し、すべてのクラスタノードが突然停止したとしても内容が失われないようにします。
通常より信頼性が要求される処理のために使用します。ただし、頻繁に実行すると性能低下を引き起こす可能性が高まります。
書き出し対象のクラスタノードの範囲など、挙動の詳細はGridDB上の設定によって変化します。
- get(key)¶
指定のロウキーに対応するロウの内容を取得します。
- パラメータ:
key (int, str, datetime, Timestamp, RowKey): ロウキー
- 返り値:
ロウの内容と対応するlist形式のロウオブジェクト (list)
- multi_put(row_list, root_allocator=None)¶
指定のロウオブジェクト集合(もしくはRecordBatchオブジェクト)に基づき、任意個数のロウをまとめて新規作成または更新します。
手動コミットモードの場合、対象のロウはロックされます。
row_listにArrow形式のRecordBatchオブジェクトを指定した場合はroot_allocatorにRootAllocatorオブジェクトを指定する必要があります。
第一パラメータ(row_list)にキーワードパラメータを使うことはできません。
- パラメータ:
row_list (list, RecordBatch): list形式のロウオブジェクト、もしくはRecordBatchオブジェクト
root_allocator (RootAllocator): RootAllocatorオブジェクト
- put(row)¶
ロウを新規作成または更新します。
ロウキーに対応するカラムが存在する場合、ロウキーとコンテナの状態を基に、ロウを新規作成するか、更新するかを決定します。この際、対応するロウがコンテナ内に存在しない場合は新規作成、存在する場合は更新します。
ロウキーに対応するカラムを持たない場合、常に新規のロウを作成します。
手動コミットモードの場合、対象のロウがロックされます。
- パラメータ:
row (list): 新規作成または更新するロウの内容と対応するlist形式のロウオブジェクト
- 返り値:
ロウキーと一致するロウが存在したかどうか (bool)
- query(query_string)¶
指定のTQL文を実行するためのクエリを作成します。
- パラメータ:
query_string (str): TQL文
- 返り値:
Queryオブジェクト (Query)
- remove(key)¶
指定のロウキーに対応するロウを削除します。
手動コミットモードの場合、対象のロウはロックされます。
- パラメータ:
key (int, str, datetime, Timestamp, RowKey): ロウキー
- 返り値:
対応するロウが存在したかどうか (bool)
- set_auto_commit(enabled)¶
コミットモードの設定を変更します。
自動コミットモードでは、直接トランザクション状態を制御できず、変更操作が逐次コミットされます。自動コミットモードが有効でない場合、すなわち手動コミットモードの場合は、直接commit()を呼び出すかトランザクションがタイムアウトしない限り、このコンテナ内で同一のトランザクションが使用され続け、変更操作はコミットされません。
自動コミットモードが無効から有効に切り替わる際、未コミットの変更内容は暗黙的にコミットされます。コミットモードに変更がない場合、トランザクション状態は変更されません。
- パラメータ:
enabled (bool): 自動コミットモードが有効か否か
- property type¶
コンテナの種別
- class griddb_python.Query¶
特定のContainerに対応付けられたクエリを保持し、結果取得方法の設定ならびに実行・結果取得を行う機能を持ちます。
- fetch(for_update=False)¶
オプションを指定してこのクエリを実行し、実行結果に対応するロウ集合を取得します。
forUpdateにtrueが指定された場合、取得対象のロウすべてをロックします。ロックすると、対応するトランザクションが有効である間、他のトランザクションからの対象ロウに対する変更操作が阻止されます。対応するコンテナの自動コミットモードが無効の場合のみ、指定できます。
新たなロウ集合を取得すると、このクエリについて前回実行した結果の RowSetはクローズされます。
一度に大量のロウを取得しようとした場合、GridDBノードが管理する通信バッファのサイズの上限に到達し、失敗することがあります。上限サイズについては、GridDB機能リファレンスを参照してください。
- パラメータ:
for_update (bool): trueが指定された場合、取得対象のロウすべてをロックします。
- 返り値:
RowSetオブジェクト (RowSet)
- get_row_set()¶
Returns RowSe直近に実行した結果のRowSetを取得します。
一度取得すると、以降新たにこのクエリを実行するまでNoneが返却されるようになります。
- 返り値:
RowSetオブジェクト (RowSet)
- set_fetch_options(limit=-1, partial=False, batch_size=-1, root_allocator=None)¶
結果取得に関するオプションを設定します。
- パラメータ:
limit (int): 取得するロウの数の最大値を設定するために使用します。-1は上限なしを意味します。
partial (bool): 部分実行モードの設定に使われます。
batch_size (int): Arrow形式のRecordBatchオブジェクトを取得する時に使われます。-1は全件を意味します。
root_allocator (RootAllocator): RootAllocatorオブジェクト
- class griddb_python.RowSet¶
クエリ実行より求めたロウの集合を管理します。
ロウ単位・ロウフィールド単位での操作機能を持ち、対象とするロウを指し示すための、ResultSetと同様のカーソル状態を保持します。初期状態のカーソルは、ロウ集合の先頭より手前に位置しています。
- get_column_names()¶
カラム名の一覧を取得します。
- 返り値:
カラム名の一覧 (list[str])
- has_next()¶
現在のカーソル位置を基準として、ロウ集合内に後続のロウが存在するかどうかを取得します。
- 返り値:
現在のカーソル位置を基準として、ロウ集合内に後続のロウが存在するかどうか (bool)
- next()¶
ロウ集合内の後続のロウにカーソル移動し、移動後の位置にあるロウオブジェクトを取得します。
- 返り値:
RowSetから取り出すことのできるオブジェクト (list, AggregationResult, QueryAnalysisEntry)
- next_record_batch()¶
カーソル位置からbatch_size分(Queryオブジェクトで設定)のロウ集合をArrow形式のRecordBatchオブジェクトで返す。
- 返り値:
RecordBatchオブジェクト (RecordBatch)
- remove()¶
現在のカーソル位置のロウを削除します。
ロックを有効にして取得したRowSetに対してのみ使用できます。
- property size¶
サイズ、すなわちロウ集合作成時点におけるロウの数
- property type¶
RowSetから取り出すことのできる内容の種別 next()実行前はNoneを返します。next()実行後に値が決まります。
- update(row)¶
現在のカーソル位置のロウについて、指定のロウオブジェクトを使用してロウキー以外の値を更新します。
- パラメータ:
row (list): 更新に使われるロウオブジェクト
- class griddb_python.AggregationResult¶
集計演算の結果を保持します。
保持する型は、集計演算の種別や集計対象のカラムの型によって決定されます。具体的な規則はTQLの仕様を参照してください。
取り出しできる型は、保持されている型によって決まります。保持されている型が数値型の場合はfloat型またはint型、TIMESTAMP型の場合はdatetime型またはTimestamp型の値としてのみ取り出しできます。
- get(type)¶
指定した型で集計値を取得します。
指定可能な型はLONG、DOUBLE、TIMESTAMP。 TIMESTAMP型でナノ秒精度の場合はdatatime型ではなく、Timestamp型で返します。
- パラメータ:
type (Type): カラム型
- 返り値:
集計値
- class griddb_python.QueryAnalysisEntry¶
クエリプランならびにクエリ処理解析結果を構成する一連の情報の一つを示します。
- get()¶
クエリプランならびにクエリ処理解析結果から構成される情報を返します。
- 返り値:
クエリプランならびにクエリ処理解析結果 (list)
- class griddb_python.RowKey¶
ロウキーを保持します。
- get()¶
ロウキーの値をリスト形式で取得します。
取得されうる型はint、str、datetime、Timestamp。
- 返り値:
ロウキーの値 (list)
- set(row_key_value_list)¶
ロウキーの値をリスト形式で設定します。
指定可能な値はint、str、datetime、Timestampの型の値。
- パラメータ:
row_key_value_list (list): ロウキーの値
- class griddb_python.RowKeyPredicate¶
ロウキーの合致条件を表します。
GridStore.multiGet(java.util.Map)における取得条件を構成するために使用できます。
条件の種別として、範囲条件と個別条件の2つの種別があります。両方の種別の条件を共に指定することはできません。条件の内容を何も指定しない場合、対象とするすべてのロウキーに合致することを表します。
- get_distinct_keys()¶
個別条件を構成するロウキーの値のリストを取得します。
取得されうる値の型はint、str、datetime、Timestamp、RowKey。
- 返り値:
個別条件を構成するロウキーの値のリスト (list)
- get_range()¶
範囲条件の開始位置と終了位置に相当するロウキーの値を取得します。
取得されうる値の型はint、str、datetime、Timestamp、RowKey。
- 返り値:
範囲条件の開始位置と終了位置に相当するロウキーの値 (list)
- property key_type¶
合致条件の評価対象とするロウキーの型を取得します。
- set_distinct_keys(keys)¶
個別条件を構成するロウキーの値のリストを設定します。
設定可能な値の型はint、str、datetime、Timestamp、RowKey。
- パラメータ:
keys (list): 個別条件を構成するロウキーの値のlist
- set_range(start, end)¶
範囲条件の開始位置と終了位置に相当するロウキーの値を設定します。
- パラメータ:
start (int, str, datetime, Timestamp, RowKey): 範囲条件の開始位置とするロウキーの値
end (int, str, datetime, Timestamp, RowKey): 範囲条件の終了位置とするロウキーの値
- class griddb_python.IndexInfo(column_name_list, name=None, type=IndexType.DEFAULT)¶
索引に関する情報を表します。
- property column_name_list¶
カラム名の一覧
- property name¶
索引名
- property type¶
索引種別
- class griddb_python.PartitionController¶
パーティション状態の取得や操作のためのコントローラです。
パーティションとは、データを格納する論理的な領域です。 GridDBクラスタ内のデータ配置に基づいた操作を行うために使用します。
- get_container_count(partition_index)¶
指定のパーティションに属するコンテナの総数を取得します。
コンテナ数を求める際の計算量は、コンテナ数にはおおむね依存しません。
- パラメータ:
partition_index (int): パーティションインデックス。0以上パーティション数未満の値
- 返り値:
コンテナ数 (int)
- get_container_names(partition_index, start, limit)¶
パーティションインデックス。0以上パーティション数未満の値
指定のパーティションについてコンテナの新規作成・構成変更・削除が行われたとしても、該当コンテナを除くとその前後で一覧の取得結果の順序が変わることはありません。それ以外の一覧の順序に関しては不定です。重複する名前が含まれることはありません。
取得件数の上限が指定された場合、上限を超える場合、後方のものから切り捨てられます。指定条件に該当するものが存在しない場合、空のリストが返却されます。
- パラメータ:
partition_index (int): パーティションインデックス。0以上パーティション数未満の値
start (int): 取得範囲の開始位置。0以上の値
limit (int): 取得件数の上限。指定なしもしくはマイナス値を指定した場合、上限なしとみなされる
- 返り値:
コンテナ名の一覧 (list[str])
- get_partition_index_of_container(container_name)¶
指定のコンテナ名に対応するパーティションインデックスを取得します。
一度GridDBクラスタが構築されると、コンテナの所属先のパーティションが変化することはなく、パーティションインデックスも一定となります。指定の名前に対応するコンテナが存在するかどうかは、結果に依存しません。
パーティションインデックスの算出に必要とする情報はキャッシュされ、次にクラスタ障害・クラスタノード障害を検知するまで再びGridDBクラスタに問い合わせることはありません。
- パラメータ:
container_name (str): コンテナ名
- 返り値:
パーティションインデックス (int)
- property partition_count¶
対象とするGridDBクラスタのパーティション数を取得します。
- class griddb_python.TimestampUtils¶
時刻データを操作するためのユーティリティ機能を提供します。
- get_time_millis(timestamp)¶
datetime.timestampからエポックからの経過ミリ秒を取得する
- パラメータ:
timestamp (float): Python datetimeのtimestamp値
- 返り値:
エポックからの経過ミリ秒 (int)
- class griddb_python.GSException¶
GridDB機能の処理中に発生した例外状態を示します。
- get_error_code(stack_index)¶
エラーコードを取得します。
対応する番号が存在しない場合は0を返します。
- パラメータ:
stack_index (int): エラースタックのインデックス
- 返り値:
エラーコード (int)
- get_error_stack_size()¶
エラー情報のスタックサイズを返す
- 返り値:
エラー情報を含む場合は1、含まない場合は0 (int)
- get_location(stack_index)¶
直前のエラーのメッセージの内部モジュールのエラー位置情報を取得します。(Deprecated)
常に空文字列を返します。
- パラメータ:
stack_index (int): エラースタックのインデックス
- 返り値:
空文字列 (str)
- get_message(stack_index)¶
エラーメッセージを取得します。
- パラメータ:
stack_index (int): エラースタックのインデックス
- 返り値:
エラーメッセージ (str)
- property is_timeout¶
要求した処理が既定の時間内に終了しなかった場合に発生する例外であるか否か
データ型の対応関係¶
データ取得時¶
各GridDB TypeがPython上で取得されるデータ型との対応関係を示します。
GridDB Type |
取得されるデータ型 |
|---|---|
STRING |
str |
BOOL |
bool |
BYTE |
int |
SHORT |
int |
INTEGER |
int |
LONG |
int |
FLOAT |
float |
DOUBLE |
float |
TIMESTAMP(ms) |
datetime.datetime |
TIMESTAMP(us) |
datetime.datetime |
TIMESTAMP(ns) |
java.sql.Timestamp |
BLOB |
bytearray |
GEOMETRY |
str |
日時を扱うデータ型では、タイムゾーンはOS等の設定に従います。
GridDB Typeが配列型の場合はNoneを返します。
データ設定時¶
Python上で入力するデータ型とデータ設定可能なGridDB Typeとの対応関係を 示します。
入力データ型 |
入力データの作成例 |
STRING |
BOOL |
BYTE |
SHORT |
INTEGER |
LONG |
FLOAT |
DOUBLE |
TIMESTAMP(ms) |
TIMESTAMP(us) |
TIMESTAMP(ns) |
BLOB |
GEOMETRY |
str |
v = str('ABC') |
〇 |
× |
× |
× |
× |
× |
× |
× |
× |
× |
× |
× |
〇 |
bool |
v = bool(True) |
× |
〇 |
× |
× |
× |
× |
× |
× |
× |
× |
× |
× |
× |
int |
v = int(100) |
× |
× |
〇 |
〇 |
〇 |
〇 |
〇 |
〇 |
× |
× |
× |
× |
× |
float |
v = float(100.12) |
× |
× |
× |
× |
× |
× |
〇 |
〇 |
× |
× |
× |
× |
× |
datetime |
v = datetime.datetime(2024,9,3,10,55,45) |
× |
× |
× |
× |
× |
× |
× |
× |
〇 |
〇 |
〇 |
× |
× |
Timestamp |
v = griddb.Timestamp(2024,9,3,10,55,45,123456789) |
× |
× |
× |
× |
× |
× |
× |
× |
〇 |
〇 |
〇 |
× |
× |
bytearray |
v = bytearray(b'abc') |
× |
× |
× |
× |
× |
× |
× |
× |
× |
× |
× |
〇 |
× |
〇はデータ設定できるケースがある場合、×は設定できないことを意味します。 〇であっても、値を保持できる範囲の違いにより、エラーになる場合や値が丸められる場合があります。
日時を扱うデータ型では、タイムゾーンはOS等の設定に従います。
datetime型ではマイクロ秒精度に制限されますが、Timestamp型(java.sql.Timestamp型)を使うと、ナノ秒精度のデータを設定できます。
GridDB Typeが配列型へのデータ設定はできません。
Apache Arrow形式でのデータ取得時¶
各GridDB Typeはpyarrowの配列のデータ型で取得されます。
GridDB Type |
pyarrowで取得されるデータ型 |
|---|---|
STRING |
pyarrow.lib.StringArray |
BOOL |
pyarrow.lib.BooleanArray |
BYTE |
pyarrow.lib.Int8Array |
SHORT |
pyarrow.lib.Int16Array |
INTEGER |
pyarrow.lib.Int32Array |
LONG |
pyarrow.lib.Int64Array |
FLOAT |
pyarrow.lib.FloatArray |
DOUBLE |
pyarrow.lib.DoubleArray |
TIMESTAMP |
pyarrow.lib.TimestampArray |
BLOB |
pyarrow.lib.BinaryArray |
GEOMETRY |
pyarrow.lib.StringArray |
取得対象に配列型を含む場合はエラーとなります。
Apache Arrow形式でのデータ設定時¶
Python上で入力するArrowデータ型とデータ設定可能なGridDB Typeとの対応関係を 示します。
入力データ型 |
STRING |
BOOL |
BYTE |
SHORT |
INTEGER |
LONG |
FLOAT |
DOUBLE |
TIMESTAMP |
BLOB |
GEOMETRY |
str |
〇 |
× |
× |
× |
× |
× |
× |
× |
× |
× |
〇 |
bool |
× |
〇 |
× |
× |
× |
× |
× |
× |
× |
× |
× |
int8 |
× |
× |
〇 |
× |
× |
× |
× |
× |
× |
× |
× |
int16 |
× |
× |
× |
〇 |
× |
× |
× |
× |
× |
× |
× |
int32 |
× |
× |
× |
× |
〇 |
× |
× |
× |
× |
× |
× |
int64 |
× |
× |
× |
× |
× |
〇 |
× |
× |
× |
× |
× |
float4 |
× |
× |
× |
× |
× |
× |
〇 |
× |
× |
× |
× |
float8 |
× |
× |
× |
× |
× |
× |
× |
〇 |
× |
× |
× |
timestamp |
× |
× |
× |
× |
× |
× |
× |
× |
〇 |
× |
× |
binary |
× |
× |
× |
× |
× |
× |
× |
× |
× |
〇 |
× |
〇はデータ設定できるケースがある場合、×は設定できないことを意味します。 〇であっても、値を保持できる範囲の違いにより、エラーになる場合や値が丸められる場合があります。
GridDB Typeが配列型へのデータ設定はできません。
サンプルコード一覧¶
サンプルコードの一覧は以下の通りです。
startJVMメソッドのclasspath部分にjarファイルのパスを指定してください。
ファイル名 |
概要 |
|---|---|
sample1.py |
コレクション操作 |
sample2.py |
時系列コンテナ操作(登録・範囲取得) |
sample3.py |
時系列コンテナ操作(検索・集計) |
Connect.py |
GridDBクラスタに接続 |
CreateCollection.py |
コレクションの作成 |
CreateTimeSeries.py |
時系列コンテナの作成 |
PutRow.py |
ロウの登録 |
PutRows.py |
複数のロウの登録 |
GetRow.py |
ロウの取得 |
TQLSelect.py |
TQLでロウを検索 |
TQLAggregation.py |
TQLで集計 |
multiPut.py |
複数コンテナにロウを登録 |
multiGet.py |
複数コンテナからロウを取得 |
multiQuery.py |
複数コンテナにTQLを実行 |
BlobData.py |
バイナリデータを登録・検索 |
UpdateRowByTQL.py |
ロウを更新 |
RemoveRowByRowkey.py |
ロウキーでロウを削除 |
RemoveRowByTQL.py |
TQLでロウを削除 |
CreateIndex.py |
索引を作成 |
TQLTimeseries.py |
時系列演算 |
ContainerNames.py |
コンテナ名一覧を取得 |
ContainerInformation.py |
コンテナのスキーマ情報を取得 |
sampleArrow.py |
Arrow形式での登録・検索結果取得 |
sampleSQLNoSQL.py |
SQLインタフェース併用 |