Orientdb-quick-guide
OrientDB-概要
OrientDBは、オープンソースのNoSQLデータベース管理システムです。 NoSQL Database は、ドキュメントデータやグラフデータなどの表形式データ以外のデータを参照するNO関係データまたは非関係データを格納および取得するためのメカニズムを提供します。 NoSQLデータベースは、ビッグデータおよびリアルタイムWebアプリケーションでますます使用されています。 NoSQLシステムは、SQLに似たクエリ言語をサポートできることを強調するために、「SQLだけではない」とも呼ばれます。
OrientDBもNoSQLファミリーに属します。 OrientDBは、Apache 2ライセンスのオープンソースを備えた1つの製品でドキュメントの柔軟性を備えた第2世代の分散グラフデータベースです。 OrientDBの前にはいくつかのNoSQLデータベースが市場にありましたが、そのうちの1つはMongoDBです。
MongoDBとOrientDB
MongoDBとOrientDBには多くの共通機能が含まれていますが、エンジンは根本的に異なります。 MongoDBは純粋なドキュメントデータベースであり、OrientDBはグラフエンジンを備えたハイブリッドドキュメントです。
Features | MongoDB | OrientDB |
---|---|---|
Relationships | Uses the RDBMS JOINS to create relationship between entities. It has high runtime cost and does not scale when database scale increases. | Embeds and connects documents like relational database. It uses direct, super-fast links taken from graph database world. |
Fetch Plan | Costly JOIN operations. | Easily returns complete graph with interconnected documents. |
Transactions | Doesn’t support ACID transactions, but it supports atomic operations. | Supports ACID transactions as well as atomic operations. |
Query language | Has its own language based on JSON. | Query language is built on SQL. |
Indexes | Uses the B-Tree algorithm for all indexes. | Supports three different indexing algorithms so that the user can achieve best performance. |
Storage engine | Uses memory mapping technique. | Uses the storage engine name LOCAL and PLOCAL. |
OrientDBは、グラフのパワーとドキュメントの柔軟性をスケーラブルで高性能な運用データベースに統合した最初のマルチモデルオープンソースNoSQL DBMSです。
OrientDB-インストール
OrientDBインストールファイルは2つのエディションで利用可能です-
- コミュニティエディション-OrientDBコミュニティエディションは、オープンソースとして0.2ライセンスでApacheによってリリースされます。
- Enterprise Edition -OrientDBエンタープライズエディションは、コミュニティエディション上に構築された独自のソフトウェアとしてリリースされます。 コミュニティ版の拡張機能として機能します。
この章では、OrientDBコミュニティエディションはオープンソースであるため、インストール手順について説明します。
前提条件
コミュニティエディションとエンタープライズエディションの両方は、Java仮想マシン(JVM)を実装する任意のオペレーティングシステムで実行できます。 OrientDBには、1.7以降のバージョンのJavaが必要です。
次の手順を使用して、OrientDBをダウンロードしてシステムにインストールします。
ステップ1-OrientDBバイナリセットアップファイルのダウンロード
OrientDBには、システムにデータベースをインストールするための組み込みセットアップファイルが付属しています。 さまざまなオペレーティングシステム向けに、さまざまなプリコンパイル済みバイナリパッケージ(tarまたはzip形式のパッケージ)を提供します。 OrientDBファイルは、http://orientdb.com/download/[OrientDBのダウンロード]リンクからダウンロードできます。
次のスクリーンショットは、OrientDBのダウンロードページを示しています。 適切なオペレーティングシステムアイコンをクリックして、zipファイルまたはtarファイルをダウンロードできます。
ダウンロードすると、 Downloads フォルダーにバイナリパッケージが取得されます。
ステップ2-OrientDBの抽出とインストール
以下は、さまざまなオペレーティングシステム用にOrientDBを抽出してインストールする手順です。
Linuxの場合
ダウンロード後、 Downloads フォルダーに orientdb-community-2.1.9.tar.gz ファイルを取得します。 次のコマンドを使用して、tarファイルを抽出できます。
次のコマンドを使用して、すべてのOrientDBライブラリファイルを orientdbcommunity-2.1.9から/opt/orientdb/ ディレクトリに移動できます。 ここでは、スーパーユーザーコマンド(sudo)を使用しているため、次のコマンドを実行するにはスーパーユーザーパスワードを入力する必要があります。
次のコマンドを使用して、 orientdb コマンドとOrientサーバーを登録できます。
Windowsの場合
- ダウンロード後、 Downloads フォルダーに orientdb-community-2.1.9.zip ファイルを取得します。 zip抽出プログラムを使用してzipファイルを抽出します。
- 抽出したフォルダーを C:\ ディレクトリーに移動します。
- 次の値を指定して、2つの環境変数ORIENTDB_HOMEおよびPATH変数を作成します。
ステップ3-OrientDBサーバーをサービスとして設定
上記の手順に従うことにより、OrientDBのデスクトップバージョンを使用できます。 次の手順を使用して、OrientDBデータベースサーバーをサービスとして起動できます。 手順は、オペレーティングシステムによって異なります。
Linuxの場合
OrientDBは、 orientdb.sh という名前のスクリプトファイルを提供して、データベースをデーモンとして実行します。 OrientDBインストールディレクトリのbin/ディレクトリである$ ORIENTDB_HOME/bin/orientdb.shにあります。
スクリプトファイルを実行する前に、2つの変数を定義するために orientdb.sh ファイルを編集する必要があります。 1つはインストールディレクトリ( /opt/orientdb )へのパスを定義する ORIENTDB_DIR で、2つ目は次のようにOrientDBを実行するユーザー名を定義する ORIENTDB_USER です。
次のコマンドを使用して、スクリプトを初期化および実行するために orientdb.sh ファイルを /etc/init.d/ ディレクトリにコピーします。 ここでは、スーパーユーザーコマンド(sudo)を使用しているため、次のコマンドを実行するにはスーパーユーザーパスワードを入力する必要があります。
次のコマンドを使用して、Orient DBのコンソールにアクセスするために、 $ ORIENTDB_HOME/bin であるOrientDBインストールディレクトリから /usr/bin であるシステムbinディレクトリにconsole.shファイルをコピーします。
次のコマンドを使用して、ORIENTDBデータベースサーバーをサービスとして起動します。 ここでは、サーバーを起動するためにorientdb.shファイルで言及したそれぞれのユーザーのパスワードを提供する必要があります。
次のコマンドを使用して、OrientDBサーバーデーモンが実行されているPIDを確認します。
次のコマンドを使用して、OrientDBサーバーデーモンを停止します。 ここでは、サーバーを停止するためにorientdb.shファイルで言及したそれぞれのユーザーのパスワードを提供する必要があります。
Windowsの場合
OrientDBはサーバーアプリケーションであるため、Java仮想マシンプロセスのシャットダウンを開始する前にいくつかのタスクを実行する必要があります。 OrientDBサーバーを手動でシャットダウンする場合は、 shutdown.bat ファイルを実行する必要があります。 ただし、上記のスクリプトを実行せずにシステムが突然シャットダウンすると、サーバーインスタンスは正しく停止しません。 指定された信号のセットを使用してオペレーティングシステムによって制御されるプログラムは、Windowsでは*サービス*と呼ばれます。
WindowsユーザーがJavaアプリケーションをWindowsサービスとしてラップできるようにする Apache Common Daemon を使用する必要があります。 Apache共通デーモンをダウンロードして登録する手順は次のとおりです。
- Apache Common Daemons for windowsの次のリンクをクリックします。
- common-daemon-1.0.15-bin-windows をクリックしてダウンロードします。
- common-daemon-1.0.15-bin-windows ディレクトリを解凍します。 解凍後、ディレクトリ内に prunsrv.exe および prunmgr.exe ファイルが見つかります。 それらで-
- prunsrv.exe ファイルは、アプリケーションをサービスとして実行するためのサービスアプリケーションです。
- prunmgr.exe ファイルは、Windowsサービスの監視と構成に使用されるアプリケーションです。
- OrientDBインストールフォルダーに移動→新しいディレクトリを作成し、serviceという名前を付けます。
- prunsrv.exe をコピーし、 prunmgr .exe をサービスディレクトリに貼り付けます。
- OrientDBをWindowsサービスとして設定するには、prusrv.exeをWindowsサービスとして使用する短いスクリプトを実行する必要があります。
- Windowsサービスを定義する前に、サービスの名前に応じてprunsrvおよびprunmgrの名前を変更する必要があります。 例えば OrientDBGraphおよびOrientDBGraphw。 ここで、OrientDBGraphはサービスの名前です。
- 次のスクリプトを installService.bat という名前のファイルにコピーし、*%ORIENTDB_HOME%\ service \ *ディレクトリに配置します。
スクリプトには2つのパラメータが必要です-
- たとえば、jvm.dllの場所。 C:\ ProgramFiles \ java \ jdk1.8.0_66 \ jre \ bin \ server \ jvm.dll
- OrientDBのインストール場所(例: C:\ orientdb-community-2.1.9
- このサービスは、OrientDBGraph.exeファイル(Original prunsrv)を実行してダブルクリックするとインストールされます。
- 次のコマンドを使用して、Windowsにサービスをインストールします。
タスクマネージャーサービスを開くと、登録済みのサービス名が含まれている次のスクリーンショットが表示されます。
ステップ4-OrientDBインストールの検証
この手順では、次の手順を使用してOrientDBデータベースサーバーのインストールを確認します。
- サーバーを実行してください。
- コンソールを実行します。
- スタジオを実行します。
これは、オペレーティングシステムによって異なります。
Linuxの場合
LinuxでOrientDBのインストールを確認するには、所定の手順に従ってください。
サーバーの実行-次のコマンドを使用してサーバーを起動できます。
または、次のコマンドを使用して、OrientDBサーバーをUNIXデーモンとして起動できます。
正常にインストールされると、次の出力が表示されます。
コンソールの実行-次のコマンドを使用して、OrientDBをコンソールで実行できます。
正常にインストールされると、次の出力が表示されます。
- Studioの実行*-サーバーの起動後、ブラウザで次のURL( http://localhost:2480/ )を使用できます。 次のスクリーンショットが表示されます。
Windowsの場合
WindowsでOrientDBのインストールを確認するには、所定の手順に従ってください。
サーバーの実行-次のコマンドを使用してサーバーを起動できます。
正常にインストールされると、次の出力が表示されます。
コンソールの実行-次のコマンドを使用して、コンソールでOrientDBを実行できます。
正常にインストールされると、次の出力が表示されます。
- Studioの実行*-サーバーの起動後、ブラウザで次のURL( http://localhost:2480/ )を使用できます。 次のスクリーンショットが表示されます。
スタジオの実行 Orientdb-basic-concepts Orientdb-data-types
OrientDB-コンソールモード
OrientDB Consoleは、OrientDBデータベースおよびサーバーインスタンスに対して動作するように作られたJavaアプリケーションです。 OrientDBがサポートするいくつかのコンソールモードがあります。
インタラクティブモード
これがデフォルトのモードです。 次のスクリプト bin/console.sh (またはMS Windowsシステムでは bin/console.bat )を実行してコンソールを起動するだけです。 必ず実行許可を持っていることを確認してください。
完了すると、コンソールはコマンドを受け入れる準備が整います。
バッチモード
コマンドをバッチモードで実行するには、次の bin/console.sh (またはMS Windowsシステムでは bin/console.bat )スクリプトを実行して、セミコロン「;」で区切られたすべてのコマンドを渡します。
または、実行するコマンドのリストを含むテキスト形式でファイルの名前を渡して、コンソールスクリプトを呼び出します。 コマンドはセミコロン「;」で区切る必要があります。
例
Command.txtには、OrientDBコンソールを介して実行するコマンドのリストが含まれています。 次のコマンドは、command.txtファイルからコマンドのバッチを受け入れます。
バッチモードでは、「ignoreErrors」変数をtrueに設定することにより、エラーを無視してスクリプトの実行を継続できます。
エコーを有効にする
パイプラインでコンソールコマンドを実行する場合、それらを表示する必要があります。 最初にプロパティとして設定して、コマンドの「エコー」を有効にします。 以下は、OrientDBコンソールでechoプロパティを有効にする構文です。
OrientDB-データベースの作成
OrientDBデータベースのSQLリファレンスには、データベースを作成、変更、削除するためのコマンドがいくつか用意されています。
次のステートメントは、Create Databaseコマンドの基本的な構文です。
上記の構文のオプションに関する詳細を次に示します。
例
次のコマンドを使用して、demoという名前のローカルデータベースを作成できます。
データベースが正常に作成されると、次の出力が得られます。
OrientDB-データベースの変更
データベースは、要件に応じて変更できるさまざまな属性を持つ重要なデータモデルの1つです。
次の文は、データベース変更コマンドの基本的な構文です。
ここで、 <attribute-name> は変更する属性を定義し、 <attribute-value> はその属性に設定する値を定義します。
次の表は、データベースを変更するためにサポートされる属性のリストを定義しています。
Sr.No. | Attribute Name | Description |
---|---|---|
1 | STATUS | Defines the database’s status between different attributes. |
2 | IMPORTING | Sets the importing status. |
3 | DEFAULTCLUSTERID | Sets the default cluster using ID. By default it is 2. |
4 | DATEFORMAT | Sets the particular date format as default. By default it is "yyyy-MM-dd". |
5 | DATETIMEFORMAT | Sets the particular date time format as default. By default it is "yyyy-MM-dd HH:mm:ss". |
6 | TIMEZONE | Sets the particular time zone. By default it is Java Virtual Machine’s (JVM’s) default time zone. |
7 | LOCALECOUNTRY | Sets the default locale country. By default it is JVM’s default locale country. For example: "GB". |
8 | LOCALELANGUAGE | Sets the default locale language. By default it is JVM’s default locale language. For example: "en". |
9 | CHARSET | Sets the type of character set. By default it is JVM’s default charset. For example: "utf8". |
10 | CLUSTERSELECTION | Sets the default strategy used for selecting the cluster. These strategies are created along with the class creation. Supported strategies are default, roundrobin, and balanced. |
11 | MINIMUMCLUSTERS | Sets the minimum number of clusters to create automatically when a new class is created. By default it is 1. |
12 | CUSTOM | Sets the custom property. |
13 | VALIDATION | Disables or enables the validations for entire database. |
例
OrientDB-2.2のバージョンから、新しいSQLパーサーが追加され、場合によっては通常の構文が許可されなくなります。 そのため、場合によっては新しいSQLパーサー(StrictSQL)を無効にする必要があります。 次のデータベース変更コマンドを使用して、StrictSQLパーサーを無効にできます。
コマンドが正常に実行されると、次の出力が得られます。
OrientDB-データベースのバックアップ
RDBMSと同様に、OrientDBもバックアップおよび復元操作をサポートしています。 バックアップ操作の実行中に、ZIPアルゴリズムを使用して、現在のデータベースのすべてのファイルが圧縮されたzip形式になります。 この機能(バックアップ)は、自動バックアップサーバープラグインを有効にすることで自動的に利用できます。
ただし、データベースのバックアップの作成またはデータベースのエクスポートは同じですが、バックアップを使用するタイミングとエクスポートを使用するタイミングを知る必要がある手順に基づきます。
バックアップの取得中、データベースの一貫したコピーが作成され、それ以降のすべての書き込み操作はロックされ、バックアッププロセスの完了を待機します。 この操作では、読み取り専用のバックアップファイルが作成されます。
バックアップの取得中に同時読み取りおよび書き込み操作が必要な場合は、データベースのバックアップを取得する代わりに、データベースのエクスポートを選択する必要があります。 エクスポートはデータベースをロックせず、エクスポートプロセス中の同時書き込みを許可します。
次の文は、データベースバックアップの基本的な構文です。
上記の構文のオプションに関する詳細を次に示します。
- デフォルト-バックアップ中にデータベースをロックします。
- LVM-バックグラウンドでLVMコピーオンライトスナップショットを使用します。
例
ローカルファイルシステム/opt/orientdb/databases/demoにあるデータベースデモのバックアップを、sample-demo.zipという名前のファイルに保存し、現在のディレクトリに配置します。
次のコマンドを使用して、データベースのデモのバックアップを取得できます。
コンソールを使用する
OrientDBコンソールを使用しても同じことができます。 特定のデータベースのバックアップを取る前に、まずデータベースに接続する必要があります。 次のコマンドを使用して、demoという名前のデータベースに接続できます。
接続後、次のコマンドを使用して、データベースのバックアップを現在のディレクトリの「backup-demo.zip」という名前のファイルに保存できます。
このコマンドが正常に実行されると、次のメッセージとともにいくつかの成功通知を受け取ります。
OrientDB-データベースの復元
RDBMSと同様に、OrientDBも復元操作をサポートしています。 コンソールモードからのみ、この操作を正常に実行できます。
次の文は、操作を復元するための基本的な構文です。
例
この操作は、コンソールモードからのみ実行する必要があります。 したがって、まず、次のOrientDBコマンドを使用してOrientDBコンソールを起動する必要があります。
次に、それぞれのデータベースに接続してバックアップを復元します。 次のコマンドを使用して、demoという名前のデータベースに接続できます。
接続に成功したら、次のコマンドを使用して「backup-demo.zip」ファイルからバックアップを復元できます。 実行する前に、backup-demo.zipファイルが現在のディレクトリに配置されていることを確認してください。
このコマンドが正常に実行されると、次のメッセージとともにいくつかの成功通知を受け取ります。
OrientDB-データベースの接続
この章では、OrientDBコマンドラインから特定のデータベースに接続する方法について説明します。 データベースを開きます。
次の文は、Connectコマンドの基本的な構文です。
上記の構文のオプションに関する詳細を次に示します。
例
前の章で「デモ」という名前のデータベースを既に作成しました。 この例では、ユーザーadminを使用して接続します。
次のコマンドを使用して、デモデータベースに接続できます。
それが正常に接続されている場合、次の出力を取得します-
OrientDB-データベースの切断
この章では、OrientDBコマンドラインから特定のデータベースへの接続を解除する方法について説明します。 現在開いているデータベースを閉じます。
次の文は、Disconnectコマンドの基本的な構文です。
注意-このコマンドは特定のデータベースに接続した後にのみ使用でき、現在実行中のデータベースのみを閉じます。
例
この例では、前の章で作成した「デモ」という名前の同じデータベースを使用します。 デモデータベースから切断します。
次のコマンドを使用して、データベースを切断できます。
それが正常に切断された場合、次の出力を取得します-
OrientDB-情報データベース
この章では、OrientDBコマンドラインから特定のデータベースの情報を取得する方法について説明します。
次の文は、Infoコマンドの基本的な構文です。
注意-このコマンドは特定のデータベースに接続した後にのみ使用でき、現在実行中のデータベースのみの情報を取得します。
例
この例では、前の章で作成した「デモ」という名前の同じデータベースを使用します。 デモデータベースから基本情報を取得します。
次のコマンドを使用して、データベースを切断できます。
正常に切断された場合、次の出力が表示されます。
OrientDB-リストデータベース
この章では、OrientDBコマンドラインからインスタンス内のすべてのデータベースのリストを取得する方法について説明します。
次の文は、infoコマンドの基本的な構文です。
注-このコマンドは、ローカルまたはリモートサーバーに接続した後にのみ使用できます。
例
データベースのリストを取得する前に、リモートサーバー経由でローカルホストサーバーに接続する必要があります。 localhostインスタンスに接続するためのユーザー名とパスワードはそれぞれゲストとゲストであり、これらは orintdb/config/orientdb-server-config.xml ファイルで構成されていることを思い出してください。
次のコマンドを使用して、localhostデータベースサーバーインスタンスに接続できます。
パスワードを尋ねられます。 ゲストの設定ファイルのパスワードに従ってもゲストです。 接続に成功すると、次の出力が得られます。
localhostデータベースサーバーに接続したら、次のコマンドを使用してデータベースを一覧表示できます。
それが正常に実行されると、次の出力が得られます-
OrientDB-データベースのリリース
この章では、OrientDBコマンドラインを使用してデータベースをフリーズ状態から解放する方法を学習できます。
次のステートメントは、Release databaseコマンドの基本的な構文です。
注-このコマンドは、フリーズ状態の特定のデータベースに接続した後にのみ使用できます。
例
この例では、前の章で作成した「デモ」という名前の同じデータベースを使用します。 前の章でフリーズしたデータベースをリリースします。
次のコマンドを使用して、データベースを解放できます。
正常に実行されると、次の出力が得られます。
OrientDB-構成データベース
この章では、OrientDBコマンドラインを使用して特定のデータベースの構成を表示する方法を学習できます。 このコマンドは、ローカルデータベースとリモートデータベースの両方に適用できます。
構成情報には、有効または無効のデフォルトキャッシュ、そのキャッシュのサイズ、負荷係数の値、マップの最大メモリ、ノードページサイズ、プールの最小サイズと最大サイズなどが含まれます。
次の文は、config databaseコマンドの基本的な構文です。
注意-このコマンドは、特定のデータベースに接続した後にのみ使用できます。
例
この例では、前の章で作成した「デモ」という名前の同じデータベースを使用します。
次のコマンドを使用して、デモデータベースの構成を表示できます。
正常に実行されると、次の出力が得られます。
上記の構成パラメーターのリストで、パラメーター値を変更する場合は、config setおよびgetコマンドを使用してコマンドラインから簡単に変更できます。
構成セット
次の文は、config setコマンドの基本的な構文です。
注意-このコマンドは、特定のデータベースに接続した後にのみ使用できます。
例
この例では、前の章で作成した「デモ」という名前の同じデータベースを使用します。 「tx.autoRetry」変数の値を5に変更します。
次のコマンドを使用して、デモデータベースの構成を設定できます。
正常に実行されると、次の出力が得られます。
構成取得
次の文は、config getコマンドの基本的な構文です。
注意-このコマンドは、特定のデータベースに接続した後にのみ使用できます。
例
この例では、前の章で作成した「デモ」という名前の同じデータベースを使用します。 「tx.autoRetry」変数値を取得しようとします。
次のコマンドを使用して、デモデータベースの構成を表示できます。
正常に実行されると、次の出力が得られます。
OrientDB-データベースのエクスポート
RDBMSと同様に、OrientDBはデータベースのエクスポートやインポートなどの機能も提供します。 OrientDBはJSON形式を使用してデータをエクスポートします。 デフォルトでは、exportコマンドはGZIPアルゴリズムを使用してファイルを圧縮します。
データベースをエクスポートしている間、データベースはロックされていません。つまり、データベースに対して同時読み取りおよび書き込み操作を実行できます。 また、読み取りと書き込みの同時操作により、そのデータの正確なコピーを作成できることも意味します。
この章では、OrientDBコマンドラインからデータベースをエクスポートする方法を学習できます。
次の文は、データベースのエクスポートコマンドの基本的な構文です。
注意-このコマンドは、特定のデータベースに接続した後にのみ使用できます。
例
この例では、前の章で作成した「デモ」という名前の同じデータベースを使用します。 次のコマンドを使用して、データベースを「export-demo」という名前のファイルにエクスポートできます。
正常に実行されると、オペレーティングシステムに基づいて「export-demo.zip」または「exportdemo.gz」という名前のファイルが作成され、次の出力が表示されます。
OrientDB-データベースのコミット
RDBMSと同様に、OrientDBはコミットやロールバックなどのトランザクションの概念も提供します。 *コミット*とは、データベースへのすべての変更を保存してトランザクションを閉じることです。 *ロールバック*は、トランザクションを開いた時点までデータベースの状態を回復することを指します。
次の文は、データベースのコミットコマンドの基本的な構文です。
注-特定のデータベースに接続し、トランザクションを開始した後にのみ、このコマンドを使用できます。
例
この例では、前の章で作成した「デモ」という名前の同じデータベースを使用します。 トランザクションをコミットする操作を確認し、トランザクションを使用してレコードを保存します。
まず、次の BEGIN コマンドを使用してトランザクションを開始します。
次に、次のコマンドを使用して、id = 12およびname = satish.Pの値を持つ従業員テーブルにレコードを挿入します。
次のコマンドを使用して、トランザクションをコミットできます。
このトランザクションが正常にコミットされると、次の出力が得られます。
OrientDB-データベースのロールバック
この章では、OrientDBコマンドラインインターフェイスを使用して、コミットされていないトランザクションをロールバックする方法を学習します。
次の文は、Rollback databaseコマンドの基本的な構文です。
注-特定のデータベースに接続し、トランザクションを開始した後にのみ、このコマンドを使用できます。
例
この例では、前の章で作成した「デモ」という名前の同じデータベースを使用します。 ロールバックトランザクションの操作を確認し、トランザクションを使用してレコードを保存します。
まず、次の BEGIN コマンドを使用してトランザクションを開始します。
次に、次のコマンドを使用して、id = 12およびname = satish.Pの値を持つ従業員テーブルにレコードを挿入します。
次のコマンドを使用して、Employeeテーブルからレコードを取得できます。
このコマンドが正常に実行されると、次の出力が得られます。
次のコマンドを使用して、このトランザクションをロールバックできます。
従業員テーブルから同じレコードを取得するには、選択クエリをもう一度確認してください。
ロールバックが正常に実行されると、出力に0レコードが見つかります。
OrientDB-データベースの削除
RDBMSと同様に、OrientDBはデータベースを削除する機能を提供します。 *データベースの削除*は、データベースを完全に削除することを指します。
次の文は、Drop databaseコマンドの基本的な構文です。
上記の構文のオプションに関する詳細を次に示します。
例
データベースを削除するには、現在開いているデータベースを削除する方法と、特定の名前を指定して特定のデータベースを削除する方法があります。
この例では、前の章で作成した「デモ」という名前のデータベースを使用します。 次のコマンドを使用して、データベース demo を削除できます。
このコマンドが正常に実行されると、次の出力が得られます。
OR
次のように、別のコマンドを使用してデータベースを削除できます。
このコマンドが正常に実行されると、次の出力が得られます。
Orientdb-insert-record Orientdb-display-records
OrientDB-レコードのロード
レコードのロード*は、スキーマから特定のレコードをロードするために使用されます。 レコードをロードすると、レコードIDを使用してレコードがロードされます。 結果セットでは *@ rid シンボルで表されます。
次のステートメントは、LOAD Recordコマンドの基本的な構文です。
ここで、 <record-id> は、ロードするレコードのレコードIDを定義します。
特定のレコードのレコードIDがわからない場合は、テーブルに対して任意のクエリを実行できます。 結果セットには、それぞれのレコードのレコードID(@rid)があります。
例
前の章で使用したのと同じCustomerテーブルを考えてみましょう。
Sr.No. | Name | Age |
---|---|---|
1 | Satish | 25 |
2 | Krishna | 26 |
3 | Kiran | 29 |
4 | Javeed | 21 |
5 | Raja | 29 |
次のクエリを試して、レコードID @ ridを持つレコードを取得します:#11:0 。
上記のクエリが正常に実行されると、次の出力が得られます。
OrientDB-レコードの再読み込み
次の文は、RELOAD Recordコマンドの基本的な構文です。
特定のレコードのレコードIDがわからない場合は、テーブルに対して任意のクエリを実行できます。 結果セットには、それぞれのレコードのレコードID(@rid)があります。
例
前の章で使用したのと同じCustomerテーブルを考えてみましょう。
Sr.No. | Name | Age |
---|---|---|
1 | Satish | 25 |
2 | Krishna | 26 |
3 | Kiran | 29 |
4 | Javeed | 21 |
5 | Raja | 29 |
次のクエリを試して、レコードID @ ridを持つレコードを取得します:#11:0 。
上記のクエリが正常に実行されると、次の出力が得られます。
OrientDB-レコードのエクスポート
次のステートメントは、[レコードのエクスポート]コマンドの基本的な構文です。
ここで、 <Format> は、レコードを取得する形式を定義します。
注-エクスポートコマンドは、ロードされたレコードをレコードIDに基づいてエクスポートします。
例
前の章で使用したのと同じCustomerテーブルを考えてみましょう。
Sr.No. | Name | Age |
---|---|---|
1 | Satish | 25 |
2 | Krishna | 26 |
3 | Kiran | 29 |
4 | Javeed | 21 |
5 | Raja | 29 |
次のクエリを試して、レコードID @ ridを持つレコードを取得します:#11:0 。
上記のクエリが正常に実行されると、次の出力が得られます。
次のクエリを使用して、ロードされたレコード(#11:0)をJSON形式にエクスポートします。
上記のクエリが正常に実行されると、次の出力が得られます。
OrientDB-レコードの更新
次のステートメントは、Updateコマンドの基本的な構文です。
上記の構文のオプションに関する詳細を次に示します。
例
前の章で使用したのと同じCustomerテーブルを考えてみましょう。
Sr.No. | Name | Age |
---|---|---|
1 | Satish | 25 |
2 | Krishna | 26 |
3 | Kiran | 29 |
4 | Javeed | 21 |
5 | Raja | 29 |
次のクエリを試して、顧客「Raja」の年齢を更新します。
上記のクエリが正常に実行されると、次の出力が得られます。
Customerテーブルのレコードを確認するには、次のクエリを使用できます。
上記のクエリが正常に実行されると、次の出力が得られます。
OrientDB-レコードの切り捨て
- レコードの切り捨て*コマンドは、特定のレコードの値を削除するために使用されます。
次の文は、Truncateコマンドの基本的な構文です。
ここで、 <rid> *は切り捨てるレコードIDを示します。 コンマで区切られた複数のRidを使用して、複数のレコードを切り捨てることができます。 切り捨てられたレコードの数を返します。
例
前の章で使用したのと同じCustomerテーブルを考えてみましょう。
Sr.No. | Name | Age |
---|---|---|
1 | Satish | 25 |
2 | Krishna | 26 |
3 | Kiran | 29 |
4 | Javeed | 21 |
5 | Raja | 28 |
次のクエリを試して、レコードID#11:4のレコードを切り捨ててください。
上記のクエリが正常に実行されると、次の出力が得られます。
Customerテーブルのレコードを確認するには、次のクエリを使用できます。
上記のクエリが正常に実行されると、次の出力が得られます。
OrientDB-レコードの削除
次のステートメントは、Deleteコマンドの基本的な構文です。
上記の構文のオプションに関する詳細を次に示します。
注-DELETEを使用して頂点またはエッジを削除しないでください。グラフの整合性に影響します。
例
Customerテーブルについて考えてみましょう。
Sr.No. | Name | Age |
---|---|---|
1 | Satish | 25 |
2 | Krishna | 26 |
3 | Kiran | 29 |
4 | Javeed | 21 |
次のクエリを試して、ID = 4のレコードを削除してください。
上記のクエリが正常に実行されると、次の出力が得られます。
Customerテーブルのレコードを確認するには、次のクエリを使用できます。
上記のクエリが正常に実行されると、次の出力が得られます。
OrientDB-クラスの作成
OrientDBはマルチモデル機能をサポートし、データベースの基本概念にアプローチして理解するためのさまざまな方法を提供します。 ただし、これらのモデルには、ドキュメントデータベースAPIの観点から簡単にアクセスできます。 RDBMSと同様に、OrientDBもストレージの要素としてレコードを使用しますが、ドキュメントタイプを使用します。 ドキュメントはキー/値のペアの形式で保存されます。 概念クラスに属するキー/値ペアとしてフィールドとプロパティを保存しています。
- クラス*はデータモデルの一種であり、概念はオブジェクト指向プログラミングパラダイムから引き出されます。 従来のドキュメントデータベースモデルに基づいて、データはコレクションの形式で保存されますが、リレーショナルデータベースモデルのデータはテーブルに保存されます。 OrientDBは、OPPSパラダイムとともにドキュメントAPIに従います。 概念として、OrientDBのクラスはリレーショナルデータベースのテーブルと最も近い関係にありますが、クラスは(テーブルとは異なり)スキーマレス、スキーマフル、または混合にすることができます。 クラスは他のクラスから継承して、クラスのツリーを作成できます。 各クラスには独自のクラスターがあります(定義されていない場合は、デフォルトで作成されます)。
次の文は、クラス作成コマンドの基本的な構文です。
上記の構文のオプションに関する詳細を次に示します。
例
説明したように、クラスはテーブルに関連する概念です。 したがって、ここではテーブルAccountを作成します。 ただし、クラスの作成中は、フィールド、つまりOOPSパラダイムに基づくプロパティを定義できません。
次のコマンドは、Accountという名前のクラスを作成します。
上記のコマンドが正常に実行されると、次の出力が得られます。
次のコマンドを使用して、クラス Vehicle に拡張するクラス Car を作成できます。
上記のコマンドが正常に実行されると、次の出力が得られます。
次のコマンドを使用して、クラスPersonを抽象として作成できます。
上記のコマンドが正常に実行されると、次の出力が得られます。
注-プロパティがないと、クラスは役に立たず、実際のオブジェクトを構築できません。 以降の章では、特定のクラスのプロパティを作成する方法を学習できます。
OrientDB-クラスの変更
OrientDBのクラスとプロパティは、クラス名、スーパークラス、クラスター、クラスター数、抽象などのそれぞれの属性を持つスキーマを構築するために使用されます。 スキーマ内の既存のクラスの属性を変更または更新する場合は、 Alter Class コマンドを使用する必要があります。
次のステートメントは、クラス変更コマンドの基本的な構文です。
上記の構文のオプションに関する詳細を次に示します。
次の表は、クラス変更コマンドをサポートする属性のリストを定義しています。
Attribute | Type | Description |
---|---|---|
NAME | String | Changes the class name. |
SHORTNAME | String | Defines a short name, (that is, an alias), for the class. Use NULL to remove a short name assignment. |
SUPERCLASS | String | Defines a super-class for the class. To add a new class, you can use the syntax +<class>, to remove it use -<class>. |
OVERSIZE | Decimal number | Defines the oversize factor. |
ADDCLUSTER | String | Adds a cluster to the class. If the cluster doesn’t exist, it creates a physical cluster. Adding clusters to a class is also useful in storing records in distributed servers. |
REMOVECLUSTER | String | Removes a cluster from a class. It does not delete the cluster, only removes it from the class. |
STRICTMODE | - | Enables or disables strict mode. When in strict mode, you work in schema-full mode and cannot add new properties to a record if they are part of the class' schema definition. |
CLUSTERSELECTION | - | Defines the selection strategy in choosing which cluster it uses for new records. |
CUSTOM | - | Defines custom properties. Property names and values must follow the syntax <propertyname>=<value> without spaces between the name and value. |
ABSTRACT | Boolean | Converts class to an abstract class or the opposite. |
例
既存のクラスの属性を更新または変更するいくつかの例を試してみましょう。
次のクエリは、既存のクラス「従業員」のスーパークラス「個人」を定義するために使用されます。
上記のクエリが正常に実行されると、次の出力が得られます。
次のクエリは、既存のクラス「従業員」にスーパークラス「人」を追加するために使用されます。
上記のクエリが正常に実行されると、次の出力が得られます。
OrientDB-クラスの切り捨て
次の文は、Truncate Classコマンドの基本的な構文です。
上記の構文のオプションに関する詳細を次に示します。
例
クラス Profile を切り捨てる次のクエリ。
上記のクエリが正常に実行されると、次の出力が得られます。
OrientDB-クラスを削除
次の文は、Drop Classコマンドの基本的な構文です。
クラス名を持つクラスをドロップします。
例
クラスEmployeeを削除するには、次のクエリを試してください。
上記のクエリが正常に実行されると、次の出力が得られます。
OrientDB-クラスターの作成
- クラスター*は、レコード、ドキュメント、または頂点を格納するために使用されるOrientDBの重要な概念です。 簡単に言えば、クラスターはレコードのグループが保存される場所です。 デフォルトでは、OrientDBはクラスごとに1つのクラスターを作成します。 クラスのすべてのレコードは、クラスと同じ名前を持つ同じクラスターに保存されます。 データベースには最大32,767(2 ^ 15-1)個のクラスターを作成できます。
CREATEクラスは、特定の名前でクラスターを作成するために使用されるコマンドです。 クラスターが作成されたら、クラスターを使用して、データモデルの作成中に名前を指定することでレコードを保存できます。 クラスに新しいクラスターを追加する場合は、Alter ClassコマンドとADDCLUSTERコマンドを使用します。
次の文は、Create Clusterコマンドの基本的な構文です。
ここで、 <cluster> は作成するクラスターの名前を定義し、 <cluster-id> はクラスターに使用する数値IDを定義します。
次の表に、クラスター選択戦略のリストを示します。
Sr.No. | Strategy & Description |
---|---|
1 |
Default クラスプロパティのデフォルトClusterIdを使用してクラスターを選択します。 |
2 |
Round-robin 循環順序で次のクラスターを選択します。 完了すると再起動します。 |
3 |
Balanced 最小のクラスターを選択します。 クラスが、基礎となるすべてのクラスターのサイズのバランスを取ることを許可します。 既存のクラスに新しいクラスターを追加すると、最初に新しいクラスターがいっぱいになります。 |
例
salesという名前のクラスターを作成する例を見てみましょう。
上記のクエリが正常に実行されると、次の出力が得られます。
OrientDB-クラスターの変更
次のステートメントは、クラスター変更コマンドの基本構文です。
上記の構文のオプションに関する詳細を次に示します。
次の表形式は、クラスター変更コマンドとともに使用できるサポートされている属性のリストを提供します。
Name | Type | Description |
---|---|---|
NAME | String | Changes the cluster name. |
STATUS | String | Changes the cluster status. Allowed values are ONLINE and OFFLINE. By default, clusters are online. |
COMPRESSION | String | Defines the compression type to use. Allowed values are NOTHING, SNAPPY, GZIP, and any other compression types registered in the OCompressionFactory class. |
USE_WAL | Boolean | Defines whether it uses the Journal when OrientDB operates against the cluster |
RECORD_GROW_FACTO R | Integer | Defines the grow factor to save more space on record creation. You may find this useful when you update the record with additional information. |
RECORD_OVERFLOW_GR OW_FACTOR | Integer | Defines grow factor on updates. When it reaches the size limit, is uses this setting to get more space, (factor > 1). |
CONFLICTSTRATEGY | String | Defines the strategy it uses to handle conflicts in the event that OrientDB MVCC finds an update or a delete operation it executes against an old record. |
次の表に、競合戦略のリストを示します。
Sr.No. | Strategy & Description |
---|---|
1 |
Version バージョンが異なる場合に例外をスローします。 これがデフォルト設定です。 |
2 |
Content バージョンが異なる場合は、コンテンツの変更をチェックします。そうでない場合は、例外をスローしないように最新バージョンを使用します。 |
3 |
Automerge 変更をマージします。 |
例
次のクエリ例を試して、クラスターの変更コマンドを学習します。
次のコマンドを実行して、クラスターの名前をEmployeeからEmployee2に変更します。
上記のコマンドが正常に実行されると、次の出力が得られます。
次のコマンドを実行して、クラスターIDを使用してクラスターの名前をEmployee2からEmployeeに変更します。
上記のコマンドが正常に実行されると、次の出力が得られます。
次のコマンドを実行して、クラスターの競合戦略を自動マージに変更します。
上記のコマンドが正常に実行されると、次の出力が得られます。
OrientDB-クラスターの切り捨て
次の文は、Truncate Cluster Commandの基本的な構文です。
ここで、 <cluster-name> はクラスターの名前です。
例
次のクエリを試して、salesという名前のクラスターを切り捨てます。
上記のクエリが正常に実行されると、次の出力が得られます。
OrientDB-クラスターの削除
次のステートメントは、Drop Clusterコマンドの基本的な構文です。
ここで、 <cluster-name> は削除するクラスターの名前を定義し、 <cluster-id> は削除するクラスターのIDを定義します。
例
次のコマンドを試して、Salesクラスターを削除します。
上記のクエリが正常に実行されると、次の出力が得られます。
OrientDB-プロパティの作成
OrientDBの Property は、データベーステーブルのクラスと列のフィールドのように機能します。 プロパティの作成は、特定のクラスのプロパティを作成するために使用されるコマンドです。 コマンドで使用したクラス名が存在する必要があります。
次のステートメントは、Create Propertyコマンドの基本的な構文です。
上記の構文のオプションに関する詳細を次に示します。
次の表は、OrientDBが保存するデータのタイプを認識するように、プロパティのデータタイプを提供します。
BOOLEAN | INTEGER | SHORT | LONG |
FLOAT | DATE | STRING | EMBEDDED |
LINK | BYTE | BINARY | DOUBLE |
これらに加えて、コンテナとして機能するプロパティタイプがいくつかあります。
EMBEDDEDLIST | EMBEDDEDSET | EMBEDDEDMAP |
LINKLIST | LINKSET | LINKMAP |
例
次の例を試して、クラスEmployeeにString型のプロパティ名を作成します。
上記のクエリが正常に実行されると、次の出力が得られます。
OrientDB-ドロッププロパティ
次のステートメントは、Drop Property Commandの基本的な構文です。
上記の構文のオプションに関する詳細を次に示します。
例
次のコマンドを試して、クラス「Customer」から「age」プロパティを削除してください。
上記のコマンドが正常に実行されると、次の出力が得られます。
OrientDB-頂点の作成
OrientDBデータベースは、ドキュメントデータベースだけでなく、グラフデータベースでもあります。 VertexやEdgeなどの新しい概念を使用して、データをグラフの形式で保存します。 頂点にポリモーフィズムを適用します。 Vertexの基本クラスはVです。
この章では、頂点を作成してグラフデータを保存する方法を学習できます。
次のステートメントは、頂点コマンドの作成の基本的な構文です。
上記の構文のオプションに関する詳細を次に示します。
例
次の例を試して、頂点の作成方法を理解してください。
次のクエリを実行して、「名前」なしで基本クラスV上に頂点を作成します。
上記のクエリが正常に実行されると、次の出力が得られます。
次のクエリを実行してv1という名前の新しい頂点クラスを作成し、そのクラスに頂点を作成します。
上記のクエリが正常に実行されると、次の出力が得られます。
次のクエリを実行して、v1という名前のクラスの新しい頂点を作成し、brand = 'Maruti’やname = 'Swift’などのプロパティを定義します。
上記のクエリが正常に実行されると、次の出力が得られます。
OrientDB-頂点を移動
OrientDBの[頂点を移動]コマンドは、1つ以上の頂点を現在の場所から別のクラスまたはクラスターに移動します。 特定の頂点に移動コマンドを適用している場合、この頂点に接続されているすべてのエッジが更新されます。 頂点を移動するクラスターを指定している場合、頂点をターゲットクラスターのサーバー所有者に移動します。
次の文は、頂点移動コマンドの基本的な構文です。
上記の構文のオプションに関する詳細を次に示します。
注-このコマンドは、接続されているすべてのエッジを更新しますが、リンクは更新しません。 Graph APIを使用する場合、頂点に接続されたエッジを使用することをお勧めします。
例
次の例を試して、頂点を移動する方法を学んでください。
次のクエリを実行して、レコードID#11:2を持つ1つの頂点を現在の位置からClass Employeeに移動します。
上記のクエリが正常に実行されると、次の出力が得られます-
次のクエリを実行して、頂点のセットをクラス「Customer」からクラス「Employee」に移動します。
上記のクエリが正常に実行されると、次の出力が得られます。
OrientDB-頂点を削除
- 頂点削除コマンドは、データベースから頂点を削除するために使用されます。 削除中に、エッジとの一貫性をチェックして維持し、削除された頂点へのすべての相互参照(エッジを含む)を削除します。
次の文は、頂点削除コマンドの基本的な構文です。
上記の構文のオプションに関する詳細を次に示します。
例
次のコマンドを試して、単一の頂点または複数の頂点を削除する方法を学習してください。
次のコマンドを実行して、頂点「#14:1」を削除します。
上記のコマンドが正常に実行されると、次の出力が得られます。
次のコマンドを実行して、プロパティ「isSpam」でマークされたクラス「Customer」からすべての頂点を削除します。
上記のコマンドが正常に実行されると、次の出力が得られます。
OrientDB-エッジの作成
OrientDBでは、 Edge という概念は、いくつかのプロパティを使用して頂点間の関係のように機能します。 エッジと頂点は、グラフデータベースの主要なコンポーネントです。 エッジにポリモーフィズムを適用します。 Edgeの基本クラスはEです。 エッジの実装中に、ソースまたはデスティネーションの頂点が欠落しているか存在しない場合、トランザクションはロールバックされます。
次のステートメントは、Create Edge Commandの基本的な構文です。
上記の構文のオプションに関する詳細を次に示します。
例
次のクエリを実行して、2つの頂点#9:0と#14:0の間にエッジEを作成します。
上記のクエリが正常に実行されると、次の出力が得られます。
次のクエリを実行して、新しいエッジタイプと新しいタイプのエッジを作成します。
上記のクエリが正常に実行されると、次の出力が得られます。
OrientDB-エッジの更新
次の文は、Update Edge Commandの基本的な構文です。
上記の構文のオプションに関する詳細を次に示します。
例
エリアID = 001、および人名=クリシュナを持つアドレステーブルからデータを取得して、人クラスの「住所」という名前のエッジを更新する例を考えてみましょう。
上記のクエリが正常に実行されると、次の出力が得られます。
OrientDB-関数
この章では、OrientDBのさまざまなタイプの関数の完全なリファレンスについて説明します。 次の表は、機能別に分類された機能のリストを定義しています。
グラフ関数
____グラフデータを操作するために使用される関数。
Sr.No. | Function Name & Description |
---|---|
1 |
Out(): 現在のレコードから始まる隣接する発信頂点を頂点として取得します。 構文-out([<label-1>] [、<label-n>] *) |
2 |
In(): 現在のレコードから開始する隣接する着信頂点を頂点として取得します。 構文-in([<label-1>] [、<label-n>] *) |
3 |
Both(): 現在のレコードから始まる隣接する発信および着信頂点を頂点として取得します。 構文-both([<label1>] [、<label-n>] *) |
4 |
outE(): 現在のレコードから始まる隣接する出力エッジを頂点として取得します。 構文-outE([<label1>] [、<label-n>] *) |
5 |
inE(): 現在のレコードから始まる隣接する着信エッジを頂点として取得します。 構文-inE([<label1>] [、<label-n>] *) |
6 |
bothE(): 現在のレコードから開始する隣接する発信エッジと着信エッジを頂点として取得します。 構文-bothE([<label1>] [、<label-n>] *) |
7 |
outV(): 現在のレコードから開始する発信頂点をEdgeとして取得します。 構文-outV() |
8 |
inV(): エッジとして現在のレコードから着信頂点を取得します。 構文-inV() |
9 |
traversedElement(): トラバースコマンドでトラバースされた要素を返します。 構文-traversedElement(<index> [、<items>]) |
10 |
traversedVertex(): トラバースコマンドでトラバースされた頂点を返します。 構文-traversedVertex(<index> [、<items>]) |
11 |
traversedEdge(): トラバースコマンドでトラバースされたエッジを返します。 構文-traversedEdge(<index> [、<items>]) |
12 |
shortestPath(): 2つの頂点間の最短パスを返します。 方向は、OUT(デフォルト)、IN、またはBOTHです。
|
13 |
dijkstra(): ダイクストラアルゴリズムを使用して、2つの頂点間の最も安価なパスを返します。 構文-dijkstra(<sourceVertex>、<destinationVertex>、<weightEdgeFieldName> [、<direction>]) |
次のクエリとともにいくつかのグラフ関数を試してください。
次のクエリを実行して、すべてのビークル頂点からすべての発信頂点を取得します。
上記のクエリが正常に実行されると、次の出力が得られます。
次のクエリを実行して、頂点#11:3から着信頂点と発信頂点の両方を取得します。
上記のクエリが正常に実行されると、次の出力が得られます。
数学関数
____次の表は、数式の実行に使用される数学関数のリストを定義しています。
Sr.No. | Function Name & Description |
---|---|
1 |
eval(): 引用符(または二重引用符)間の式を評価します。 構文-eval( '<expression>') |
2 |
min(): 最小値を返します。 複数のパラメーターで呼び出された場合、すべての引数間の最小引数値を返します。 構文-min(<field> [、<field-n>] *) |
3 |
max(): 最大値を返します。 複数のパラメーターで呼び出された場合、すべての引数間の最大値を返します。 構文-max(<field> [、<field-n>] *) |
4 |
sum() 返されたすべての値の合計を返します。 構文-sum(<field>) |
5 |
abs(): 絶対値を返します。 Integer、Long、Short、Double、Float、BigInteger、BigDecimal、nullで動作します。 構文-abs(<field>) |
6 |
avg(): 平均値を返します。 構文-avg(<field>) |
7 |
count(): クエリ条件に一致するレコードをカウントします。 *がフィールドとして使用されていない場合、レコードは、コンテンツがnullでない場合にのみカウントされます。 構文-count(<field>) |
8 |
mode(): 最大の頻度で発生する値を返します。 計算ではヌルは無視されます。 構文-mode(<field>) |
9 |
median(): 値がソートされた後、中間値または中間値を表す補間値を返します。 計算ではヌルは無視されます。 構文-中央値(<フィールド>) |
10 |
percentile(): n番目のパーセンタイルを返します。 計算ではヌルは無視されます。 構文-パーセンタイル(<field> [、<quantile-n>] *) |
11 |
variance() 中間分散を返します:平均からの差の二乗の平均。 構文-分散(<フィールド>) |
12 |
stddev() 標準偏差を返します。値がどのように広がっているかの尺度。 計算ではヌルは無視されます。 構文-stddev(<field>) |
次のクエリを使用して、いくつかの数学関数を試してください。
次のクエリを実行して、すべての従業員の給与の合計を取得します。
上記のクエリが正常に実行されると、次の出力が得られます。
次のクエリを実行して、すべての従業員の平均給与を取得します。
上記のクエリが正常に実行されると、次の出力が得られます。
コレクション関数
____次の表は、コレクションデータを操作する関数のリストを定義しています。
Sr.No. | Function Name & Description |
---|---|
1 |
set(): 値をセットに追加します。 値がコレクションの場合は、セットとマージされます。それ以外の場合は、<value>が追加されます。 構文-set(<field>) |
2 |
map(): マップが最初に作成されたときにマップに値を追加します。 <値>がマップの場合、マップとマージされます。それ以外の場合、<キー>と<値>のペアが新しいエントリとしてマップに追加されます。 構文-map(<key>、<value>) |
3 |
ist(): リストが最初に作成されたときにリストに値を追加します。 <値>がコレクションの場合、リストとマージされます。それ以外の場合、<値>がリストに追加されます。 構文-list(<field>) |
4 |
difference(): 集約またはインラインとして機能します。 引数が1つだけ渡された場合は、集約され、そうでなければ実行され、パラメーターとして受け取ったコレクション間のDIFFERENCEを返します。 構文-差(<field> [、<field-n>] *) |
5 |
first(): 複数値フィールド(配列、コレクション、マップ)の最初のアイテムのみを取得します。 複数値以外の型の場合、値を返すだけです。 構文-first(<field>) |
6 |
intersect(): 集約またはインラインとして機能します。 引数が1つだけ渡された場合、パラメーターとして受け取ったコレクションのINTERACTIONを集約し、そうでなければ実行して返します。 構文-intersection(<field> [、<field-n>] *) |
7 |
distinct(): 引数として指定したフィールドに応じて、一意のデータエントリのみを取得します。 標準のSQL DISTINCTと比較した主な違いは、OrientDBでは、括弧を持ち、1つのフィールドのみを指定できる関数です。 構文-distinct(<field>) |
8 |
expand(): この関数には2つの意味があります
構文-expand(<field>) |
9 |
unionall(): 集約またはインラインとして機能します。 引数が1つしか渡されない場合は集約され、そうでない場合はパラメーターとして受け取ったすべてのコレクションのUNIONを実行して返します。 コレクション値なしでも機能します。 構文-unionall(<field> [、<field-n>] *) |
10 |
flatten(): フィールド内のコレクションを抽出し、結果として使用します。 非推奨です。代わりにexpand()を使用してください。 構文-flatten(<field>) |
11 |
last(): 複数値フィールド(配列、コレクション、マップ)の最後のアイテムのみを取得します。 複数値以外の型の場合、値を返すだけです。 構文-last(<field>) |
12 |
symmetricDifference(): 集約またはインラインとして機能します。 引数を1つだけ渡すと、パラメーターとして受け取ったコレクション間のSYMMETRIC DIFFERENCEが集計、実行、または返されます。 構文-symmetricDifference(<field> [、<field-n>] *) |
次のクエリを使用して、いくつかのコレクション関数を試してください。
次のクエリを実行して、9番目のクラスを教える教師のセットを取得します。
上記のクエリが正常に実行されると、次の出力が得られます。
その他の機能
____次の表は、その他の操作を実行する関数のリストを定義しています。
Sr.No. | Function Name & Description |
---|---|
1 |
date(): 文字列をフォーマットする日付を返します。 <date-as-string>は文字列形式の日付で、<format>はこれらの規則に従った日付形式です。 構文-日付(<date-as-string> [<format>] [、<timezone>]) |
2 |
sysdate(): 現在の日付と時刻を返します。 構文-sysdate([<format>] [、<timezone>]) |
3 |
format(): String.format()規則を使用して値をフォーマットします。 構文-format(<format> [、<arg1>](、<arg-n>] *。md) |
4 |
distance(): Haversineアルゴリズムを使用して、グローブ内の2点間の距離を返します。 座標は度でなければなりません。 構文-距離(<x-field>、<y-field>、<x-value>、<y-value>) |
5 |
ifnull(): 渡されたフィールド/値(またはオプションのパラメーターreturn_value_if_not_null)を返します。 フィールド/値がnullでない場合、return_value_if_nullを返します。 構文-ifnull(<field |
value>、<return_value_if_null> [、<return_value_if_not_null>](、<field&.md#124; value>] *) | 6 |
coalesce(): nullではない最初のフィールド/値パラメーターを返します。 nullでないフィールド/値がない場合、nullを返します。 構文-結合(<フィールド |
値> [、<フィールド-n |
値-n>] *) | 7 |
uuid(): Leach-Salzバリアントを使用して、128ビット値としてUUIDを生成します。 構文-uuid() |
8 |
次のクエリを使用して、いくつかのその他の機能を試してください。
次のクエリを実行して、if式の実行方法を学習します。
上記のクエリが正常に実行されると、次の出力が得られます。
次のクエリを実行して、システムの日付を取得します。
上記のクエリが正常に実行されると、次の出力が得られます。
この関数を徹底的に使用することにより、OrientDBデータを簡単に操作できます。 Orientdb-sequences
OrientDB-インデックス
- インデックス*は、データベース内のデータの場所を指すポインタです。 *インデックス作成*は、データベース内のすべてのレコードを検索することなく、データをすばやく見つけるために使用される概念です。 OrientDBは、4つのインデックスアルゴリズムとそれぞれの中でいくつかのタイプをサポートしています。
インデックスの4つのタイプは-
SBツリーインデックス
他の種類のインデックスから利用可能な機能の良い組み合わせを提供します。 これを一般的なユーティリティに使用することをお勧めします。 耐久性があり、トランザクションに対応し、範囲クエリをサポートしています。 これはデフォルトのインデックスタイプです。 このアルゴリズムをサポートするさまざまなタイプのプラグインは-
- UNIQUE -これらのインデックスは重複キーを許可しません。 複合インデックスの場合、これは複合キーの一意性を指します。
- NOTUNIQUE -これらのインデックスは重複キーを許可します。
- FULLTEXT -これらのインデックスは、テキストの任意の単語に基づいています。 CONTAINSTEXT 演算子を使用して、クエリでそれらを使用できます。
- DICTIONARY -これらのインデックスは、UNIQUEを使用するインデックスと似ていますが、重複キーの場合、既存のレコードを新しいレコードに置き換えます。
ハッシュインデックス
実行速度が速く、ディスク使用量が非常に少ないです。 耐久性があり、トランザクションに対応していますが、範囲クエリはサポートしていません。 HASHMAPのように機能します。これにより、時間どおりの検索が高速になり、他のインデックスタイプよりも少ないリソースが消費されます。 このアルゴリズムをサポートするさまざまなタイプのプラグインは-
- UNIQUE_HASH_INDEX -これらのインデックスは重複キーを許可しません。 複合インデックスの場合、これは複合キーの一意性を指します。
- NOTUNIQUE_HASH_INDEX -これらのインデックスは重複キーを許可します。
- FULLTEXT_HASH_INDEX -これらのインデックスは、テキストの任意の単語に基づいています。 CONTAINSTEXT演算子を使用して、クエリでそれらを使用できます。
- DICTIONARY_HASH_INDEX -これらのインデックスは UNIQUE_HASH_INDEX を使用するインデックスと似ていますが、重複キーの場合、既存のレコードを新しいレコードに置き換えます。
Lucene全文索引
優れた全文索引を提供しますが、他のタイプの索引付けには使用できません。 耐久性があり、トランザクション対応で、範囲クエリをサポートしています。
Lucene Spatial Index
優れた空間インデックスを提供しますが、他のタイプのインデックスには使用できません。 耐久性があり、トランザクション対応で、範囲クエリをサポートしています。
インデックスを作成する
インデックスの作成は、特定のスキーマにインデックスを作成するコマンドです。
次の文は、インデックスを作成するための基本的な構文です。
上記の構文のオプションに関する詳細を次に示します。
例
次のクエリを試して、ユーザーsales_userのプロパティ「ID」にバインドされた自動インデックスを作成してください。
上記のクエリが正常に実行されると、次の出力が得られます。
インデックスのクエリ
選択クエリを使用して、インデックス内のレコードを取得できます。
「indexforId」という名前のインデックスのキーを取得するには、次のクエリを試してください。
上記のクエリが正常に実行されると、次の出力が得られます。
インデックスの削除
特定のインデックスを削除する場合は、このコマンドを使用できます。 この操作では、リンクされたレコードは削除されません。
次の文は、インデックスを削除するための基本的な構文です。
ここで、 <name> は削除するインデックスの名前を提供します。
次のクエリを試して、ユーザーsales_userの「ID」という名前のインデックスを削除します。
上記のクエリが正常に実行されると、次の出力が得られます。
OrientDB-トランザクション
RDBMSと同様に、OrientDBはトランザクションACIDプロパティをサポートします。 *トランザクション*は、データベース管理システム内で実行される作業単位で構成されます。 データベース環境でトランザクションを維持する主な理由は2つあります。
- 障害からの同時回復を可能にし、システム障害が発生した場合でもデータベースの一貫性を維持します。
- データベースに同時にアクセスするプログラム間の分離を提供します。
デフォルトでは、データベーストランザクションは、Atomic、Consistent、Isolated、DurableプロパティなどのACIDプロパティに従う必要があります。 しかし、OrientDBはACIDに準拠したデータベースです。つまり、ACIDの概念に矛盾したり否定したりすることはありませんが、NoSQLデータベースを処理する際に認識を変更します。 ACIDプロパティがNoSQLデータベースとともにどのように機能するかを見てください。
アトミック-データベースを変更するために何かをするとき、変更は全体として機能するか失敗します。
一貫性-データベースは一貫性を保つ必要があります。
分離-他のトランザクション実行が同時に実行されている場合、ユーザーは同時実行でレコードを表示できません。
耐久性-システムがクラッシュした場合(ハードウェアまたはソフトウェア)、データベース自体がバックアップを取ることができるはずです。
データベーストランザクションは、CommitおよびRollbackコマンドを使用して実現できます。
コミット
コミットとは、データベースへのすべての変更を保存してトランザクションを閉じることを意味します。 ロールバックとは、トランザクションを開いた時点までデータベースの状態を回復することです。
次の文は、COMMITデータベースコマンドの基本的な構文です。
注-特定のデータベースに接続し、トランザクションを開始した後にのみ、このコマンドを使用できます。
例
この例では、このチュートリアルの前の章で作成した「デモ」という名前の同じデータベースを使用します。 トランザクションをコミットする操作を確認し、トランザクションを使用してレコードを保存します。
次のBEGINコマンドを使用して、最初にトランザクションを開始する必要があります。
次のコマンドを使用して、id = 12およびname = satish.Pの値を持つ従業員テーブルにレコードを挿入します。
次のコマンドを使用して、トランザクションをコミットできます。
このトランザクションが正常にコミットされると、次の出力が得られます。
ロールバック
ロールバックとは、トランザクションを開いた時点までデータベースの状態を回復することです。
次の文は、ROLLBACKデータベースコマンドの基本的な構文です。
注-特定のデータベースに接続し、トランザクションを開始した後にのみ、このコマンドを使用できます。
例
この例では、チュートリアルの前の章で作成した「デモ」という名前の同じデータベースを使用します。 ロールバックトランザクションの操作を確認し、トランザクションを使用してレコードを保存します。
次のBEGINコマンドを使用して、最初にトランザクションを開始する必要があります。
次のコマンドを使用して、id = 12およびname = satish.Pの値を持つ従業員テーブルにレコードを挿入します。
次のコマンドを使用して、表employeeのレコードを取得できます。
このコマンドが正常に実行されると、次の出力が得られます。
次のコマンドを使用して、このトランザクションをロールバックできます。
選択クエリをもう一度チェックして、Employeeテーブルから同じレコードを取得します。
ロールバックが正常に実行されると、出力に0レコードが見つかります。
Orientdb-hooks Orientdb-caching Orientdb-logging
OrientDB-パフォーマンスチューニング
この章では、OrientDBを使用するアプリケーションを最適化する方法に関する一般的なヒントを得ることができます。 さまざまなタイプのデータベースのパフォーマンスを向上させる方法は3つあります。
- ドキュメントデータベースパフォーマンスチューニング-新しいドキュメントごとにドキュメントが作成されるのを回避する手法を使用します。
- オブジェクトデータベースのパフォーマンスチューニング-パフォーマンスを改善するために一般的な手法を使用します。
- 分散構成の調整-分散構成のパフォーマンスを改善するためにさまざまな方法論を使用します。
メモリ、JVM、およびリモート接続設定を変更することにより、一般的なパフォーマンスチューニングを実現できます。
メモリ設定
メモリ設定には、パフォーマンスを改善するためのさまざまな戦略があります。
サーバーと埋め込み設定
これらの設定は、 plocal を直接使用することにより、埋め込みモードでOrientDBを使用してJavaアプリケーションが実行されるサーバーコンポーネントとJVMの両方で有効です。
チューニングで最も重要なことは、メモリ設定が正しいことを確認することです。 実際の違いを生むことができるのは、ヒープとメモリマッピングで使用される仮想メモリとの間の適切なバランスです。特に、メモリ内キャッシュ構造が生のIOより少ないとカウントされる大規模なデータセット(GB、TBなど)です。
たとえば、Javaプロセスに最大8GBを割り当てることができる場合、通常は小さなヒープと大きなディスクキャッシュバッファー(オフヒープメモリ)を割り当てる方が適切です。
ヒープメモリを増やすには、次のコマンドを試してください。
注-最大ヒープとディスクキャッシュバッファの合計が大きすぎる場合、OSが大幅にスローダウンしてスワップする可能性があります。
JVM設定
JVM設定は、server.sh(およびserver.bat)バッチファイルにエンコードされます。 これらを変更して、使用状況とhw/sw設定に従ってJVMを調整できます。 server.batファイルに次の行を追加します。
この設定は、JVMに関するデバッグ情報の書き込みを無効にします。 JVMのプロファイルを作成する必要がある場合は、この設定を削除してください。
リモート接続
リモート接続を使用してデータベースにアクセスするときのパフォーマンスを改善する方法は多数あります。
フェッチ戦略
リモートデータベースを使用する場合、使用するフェッチ戦略に注意する必要があります。 デフォルトでは、OrientDBクライアントは結果セットに含まれるレコードのみをロードします。 たとえば、クエリが100個の要素を返すが、これらの要素をクライアントから渡した場合、OrientDBクライアントは、失われたレコードごとにサーバーへのもう1つのネットワーク呼び出しで要素を遅延ロードします。
ネットワーク接続プール
デフォルトでは、各クライアントはサーバーと通信するために1つのネットワーク接続のみを使用します。 同じクライアント上の複数のスレッドが同じネットワーク接続プールを共有します。
複数のスレッドがある場合、空きネットワーク接続の待機に多くの時間が費やされるため、ボトルネックが発生する可能性があります。 これが、ネットワーク接続プールを構成することが重要である理由です。
構成は非常にシンプルで、2つのパラメーターだけです-
- minPool -接続プールの初期サイズです。 デフォルト値は、グローバルパラメータ「client.channel.minPool」として設定されています。
- maxPool -接続プールが到達できる最大サイズです。 デフォルト値は、グローバルパラメータ「client.channel.maxPool」として設定されています。
すべてのプール接続がビジーの場合、クライアントスレッドは最初の空き接続を待ちます。
データベースプロパティを使用した設定コマンドの例。
分散構成のチューニング
分散構成のパフォーマンスを向上させる方法は多数あります。
トランザクションを使用する
グラフを更新する場合でも、常にトランザクションで作業する必要があります。 OrientDBを使用すると、それらの外部で作業できます。 一般的なケースは読み取り専用クエリであるか、障害が発生した場合に大規模で非並行の操作を復元できます。 分散構成で実行する場合、トランザクションを使用すると、待ち時間を短縮できます。 これは、分散操作がコミット時にのみ発生するためです。 1つの大きな操作の分散は、待ち時間があるため、小さな複数の操作を転送するよりもはるかに効率的です。
レプリケーションとシャーディング
OrientDBの分散構成は完全レプリケーションに設定されています。 データベースの同じコピーを持つ複数のノードを持つことは、スケール読み取りにとって重要です。 実際、各サーバーは読み取りとクエリの実行に依存しません。 サーバーノードが10個ある場合、読み取りスループットは10倍になります。
書き込みでは、逆になります。複数のノードで完全なレプリケーションを行うと、レプリケーションが同期的な場合、操作が遅くなります。 この場合、書き込みに関与するのはノードのサブセットのみであるため、データベースを複数のノードに分割すると、書き込みをスケールアップできます。 さらに、1つのサーバーノードHDよりも大きいデータベースを使用できます。
書き込みでスケールアップ
ネットワークが低速で、同期(デフォルト)レプリケーションがある場合、遅延のコストを支払うことができます。 実際、OrientDBが同期的に実行される場合、少なくとも writeQuorum を待機します。 つまり、writeQuorumが3で、5つのノードがある場合、コーディネーターサーバーノード(分散操作が開始される)は、クライアントに回答を提供するために、少なくとも3つのノードからの回答を待つ必要があります。
一貫性を維持するには、writeQuorumを過半数に設定する必要があります。 5つのノードがある場合、大半は3です。 4つのノードでは、まだ3です。 writeQuorumを4または5ではなく3に設定すると、待ち時間のコストを削減し、一貫性を維持できます。
非同期複製
速度を上げるために、非同期レプリケーションをセットアップして、遅延のボトルネックを解消できます。 この場合、コーディネーターサーバーノードはローカルで操作を実行し、クライアントに回答を提供します。 複製全体がバックグラウンドになります。 クォーラムに達していない場合、変更は透過的にロールバックされます。
読み取りでスケールアップ
すでにwriteQuorumを過半数のノードに設定している場合は、 readQuorum を1(デフォルト)のままにしておくことができます。 これにより、すべての読み取りが高速化されます。
OrientDB-アップグレード
アップグレード中に、バージョン番号と形式を考慮する必要があります。 フォーマットには、メジャー、マイナー、パッチの3つのタイプがあります。
- MAJOR バージョンには、互換性のないAPIの変更が伴います。
- *マイナー*バージョンは、後方互換性のある機能を必要とします。
- PTCH バージョンには、後方互換性のあるバグ修正が必要です。
マイナーバージョンとメジャーバージョンを同期するには、データベースのエクスポートとインポートが必要になる場合があります。 多くの場合、多くの場合、データベースをLOCALからPLOCALに移行し、グラフをRidBagに移行する必要があります。
LOCAL Storage EngineからPLOCALへの移行
バージョン1.5.xから、OrientDBには新しいストレージエンジンPLOCAL(Paginated LOCAL)が付属しています。 LOCALのように永続的ですが、情報を別の方法で保存します。 次のポイントは、PLOCALとLOCALの比較を示しています-
- PLOCALでは、レコードはクラスターファイルに保存されますが、LOCALではクラスターとデータセグメントに分割されます。
- 追加書き込みモードのため、PLOCALはLOCALより耐久性があります。
- PLOCALには、書き込みに対する軽度の競合ロックがあります。これは、より多くの並行性を意味します。
- PLOCALはメモリマッピング手法(MMap)を使用しないため、動作はより「予測可能」です。
LOCALストレージを新しいPLOCALに移行するには、PLOCALをストレージエンジンとして使用してデータベースをエクスポートおよび再インポートする必要があります。 手順は次のとおりです。
- ステップ1 *-新しいシェル(Linux/Mac)またはコマンドプロンプト(Windows)を開きます。
ステップ2 *-コンソールを使用してデータベースをエクスポートします。 指定されたコマンドに従って、データベースデモを *demo.json.gzip ファイルにエクスポートします。
- ステップ3 *-ローカルファイルシステムで、「plocal」エンジンを使用して新しいデータベースを作成します-
- ステップ4 *-古いデータベースを新しいデータベースにインポートします。
同じJVMでデータベースにアクセスする場合、URLを「local:」から「plocal:」に変更することを忘れないでください
RidBagへのグラフの移行
OrientDB 1.7の時点で、RidBagはグラフ内の隣接関係を管理するデフォルトのコレクションです。 MVRBツリーで管理される古いデータベースは完全に互換性がありますが、データベースを最新の形式に更新できます。
グラフは、コンソールまたは ORidBagMigration クラスを使用してアップグレードできます。
OrientDB-セキュリティ
RDBMSと同様に、OrientDBは、よく知られた概念、ユーザー、および役割に基づいたセキュリティも提供します。 各データベースには独自のユーザーがあり、各ユーザーには1つ以上のロールがあります。 ロールは、作業モードと一連の権限の組み合わせです。
ユーザー
デフォルトでは、OrientDBはサーバー内のすべてのデータベースに対して3人の異なるユーザーを維持します-
- Admin -このユーザーは、データベースのすべての機能に制限なくアクセスできます。
- リーダー-このユーザーは読み取り専用ユーザーです。 リーダーはデータベース内のレコードを照会できますが、それらを変更または削除することはできません。 ユーザーやロール自体などの内部情報にはアクセスできません。
- Writer -このユーザーはユーザーリーダーと同じですが、レコードを作成、更新、削除することもできます。
ユーザーとの連携
データベースに接続している場合、 OUser クラスで SELECT クエリを使用して、データベース上の現在のユーザーにクエリを実行できます。
上記のクエリが正常に実行されると、次の出力が得られます。
新しいユーザーを作成する
新しいユーザーを作成するには、INSERTコマンドを使用します。 その際、ステータスをACTIVEに設定し、有効なロールを付与する必要があります。
ユーザーの更新
UPDATEステートメントを使用して、ユーザーの名前を変更できます。
同様に、ユーザーのパスワードを変更することもできます。
OrientDBはパスワードをハッシュ形式で保存します。 トリガー OUserTrigger は、レコードを保存する前にパスワードを透過的に暗号化します。
ユーザーを無効にする
ユーザーを無効にするには、UPDATEを使用して、ステータスをACTIVEからSUSPENDEDに切り替えます。 たとえば、管理者を除くすべてのユーザーを無効にする場合は、次のコマンドを使用します-
役割
ロールは、ユーザーがリソースに対して実行できる操作を決定します。 主に、この決定は作業モードとルールに依存します。 ルール自体の動作は、動作モードに応じて異なります。
ロールの使用
データベースに接続している場合、 ORole クラスで SELECT クエリを使用して、データベースの現在のロールをクエリできます。
上記のクエリが正常に実行されると、次の出力が得られます。
新しい役割の作成
新しいロールを作成するには、INSERTステートメントを使用します。
モードの使用
特定のロールに属するユーザーがデータベースで実行できることをルールが決定する場合、作業モードはOrientDBがこれらのルールを解釈する方法を決定します。 1と0で指定された2種類の作業モードがあります。
- (ルール以外のすべてを許可)-デフォルトでは、スーパーユーザーモードです。 ルールを使用して、これに対する例外を指定します。 OrientDBが要求されたリソースのルールを見つけられない場合、ユーザーは操作を実行できます。 このモードは、主にパワーユーザーと管理者に使用してください。 デフォルトのロール管理者はデフォルトでこのモードを使用し、例外ルールはありません。 データベースには1として書き込まれます。
- * Deny All But But(Rules)*-デフォルトでは、このモードでは何も許可されません。 ルールを使用して、これに対する例外を指定します。 OrientDBが要求されたリソースのルールを見つけると、ユーザーは操作を実行できます。 このモードをすべてのクラシックユーザーのデフォルトとして使用します。 デフォルトの役割であるリーダーとライターは、このモードを使用します。 データベースには0として書き込まれます。
OrientDB-スタジオ
OrientDBは、GUIを介してデータベース操作を実行するWeb UIを提供します。 この章では、OrientDBで利用可能なさまざまなオプションについて説明します。
スタジオのホームページ
Studioは、OrientDBディストリビューションにバンドルされているOrientDBの管理用のWebインターフェイスです。
まず、次のコマンドを使用してOrientDBサーバーを起動する必要があります。
あなたのマシンでOrientDBを実行している場合、WebインターフェイスはURLを介してアクセスすることができます-
コマンドが正常に実行されると、次の画面が出力されます。
既存のデータベースに接続する
ログインするには、データベースリストからデータベースを選択し、任意のデータベースユーザーを使用します。 デフォルトでは(ユーザー名/パスワード) reader/reader はデータベースからレコードを読み取り、 writer/writer はレコードを読み取り、作成、更新、削除できますが、 admin/admin はすべての権限を持ちます。
既存のデータベースを削除する
データベースリストからデータベースを選択し、ごみ箱アイコンをクリックします。 Studioは、サーバーユーザーとサーバーパスワードを挿入する必要がある確認ポップアップを開きます。
次に、「データベースを削除」ボタンをクリックします。 サーバーの資格情報は $ ORIENTDB_HOME/config/orientdb-server-config.xml ファイルにあります。
新しいデータベースを作成する
新しいデータベースを作成するには、ホームページから「新しいDB」ボタンをクリックします。
新しいデータベースを作成するには、次の情報が必要です-
- データベース名
- データベースの種類(ドキュメント/グラフ)
- ストレージタイプ(plocal/メモリ)
- サーバーユーザー
- サーバーパスワード
サーバーの資格情報は $ ORIENTDB_HOME/config/orientdbserver-config.xml ファイルにあります。
作成されると、Studioは自動的に新しいデータベースにログインします。
クエリを実行する
Studioは、サポートされている言語(SQLとGremlin)の間で使用している言語の自動認識をサポートしています。 書き込み中に、 Ctrl + Space を押してオートコンプリート機能を使用します。
次のショートカットは、クエリエディターで利用可能です-
- Ctrl + Return -クエリを実行するか、[実行]ボタンをクリックするだけです。
- Ctrl/Cmd + Z -変更を取り消す。
- Ctrl/Cmd + Shift + Z -変更をやり直す。
- Ctrl/Cmd + F -エディターで検索します。
- Ctrl/Cmd +/ -コメントを切り替えます。
次のスクリーンショットは、クエリを実行する方法を示しています。
結果セットの任意の @ rid 値をクリックすると、レコードがドキュメントの場合はドキュメント編集モードになり、そうでない場合は頂点編集になります。
結果セットまたはエディターでスターアイコンをクリックして、クエリをブックマークできます。 ブックマークされたクエリを参照するには、*ブックマーク*ボタンをクリックします。 Studioは左側のブックマークリストを開きます。ここでクエリを編集/削除または再実行できます。
Studioは、実行されたクエリをブラウザのローカルストレージに保存します。 クエリ設定では、スタジオが履歴に保持するクエリの数を設定できます。 以前に実行したクエリを検索したり、履歴からすべてのクエリを削除したり、単一のクエリを削除したりすることもできます。
頂点を編集
グラフの頂点を編集するには、グラフセクションに移動します。 次に、次のクエリを実行します。
クエリを正常に実行すると、出力スクリーンショットが表示されます。 編集するグラフキャンバスで特定の頂点を選択します。
特定の頂点で編集記号を選択します。 頂点を編集するオプションを含む次の画面が表示されます。
スキーママネージャー
OrientDBは、スキーマレスモード、スキーマモード、または両方の組み合わせで動作します。 ここでは、スキーマモードについて説明します。 Web UIの上部にある[スキーマ]セクションをクリックします。 次のスクリーンショットが表示されます。
新しいクラスを作成する
新しいクラスを作成するには、[新しいクラス]ボタンをクリックするだけです。 次のスクリーンショットが表示されます。 新しいクラスを作成するには、スクリーンショットに示されている次の情報を提供する必要があります。
すべてのインデックスを表示
データベースで作成されたすべてのインデックスの概要が必要な場合は、スキーマUIの[すべてのインデックス]ボタンをクリックするだけです。 これにより、インデックスに関するいくつかの情報(名前、タイプ、プロパティなど)にすばやくアクセスでき、ここから削除または再構築できます。
クラスを編集
スキーマセクションのクラスをクリックすると、次のスクリーンショットが表示されます。
クラスの編集中に、プロパティを追加したり、新しいインデックスを追加したりできます。
プロパティを追加する
プロパティを追加するには、[新しいプロパティ]ボタンをクリックします。 次のスクリーンショットが表示されます。
プロパティを追加するには、スクリーンショットに示すように、次の詳細を提供する必要があります。
インデックスを追加する
[新しいインデックス]ボタンをクリックします。 次のスクリーンショットが表示されます。 インデックスを追加するには、スクリーンショットに示すように、次の詳細を提供する必要があります。
グラフエディター
グラフセクションをクリックします。 データをグラフスタイルで視覚化できるだけでなく、グラフを操作して変更することもできます。
グラフ領域にデータを入力するには、クエリエディタにクエリを入力するか、参照UIからグラフに送信機能を使用します。
頂点を追加
グラフデータベースとグラフキャンバス領域に新しい頂点を追加するには、*頂点の追加*ボタンを押す必要があります。 この操作は2つのステップで実行されます。
最初のステップでは、新しい頂点のクラスを選択して、[次へ]をクリックする必要があります。
2番目のステップでは、新しい頂点のフィールド値を挿入する必要があります。 OrientDBはスキーマレスモードをサポートしているため、カスタムフィールドを追加することもできます。 新しい頂点を永続的にするには、[変更を保存]をクリックすると、頂点がデータベースに保存され、キャンバス領域に追加されます。
頂点を削除
削除する頂点をクリックして、円形メニューを開きます。 マウスをメニューエントリ[詳細](…)に合わせてサブメニューを開き、ゴミ箱アイコンをクリックします。
キャンバスから頂点を削除
円形のメニューを開き、メニューエントリにマウスカーソルを合わせてサブメニューを開き(…)、消しゴムアイコンをクリックします。
頂点の検査
頂点プロパティをすばやく確認したい場合は、目のアイコンをクリックします。
セキュリティ
Studio 2.0には、新しいセキュリティ管理が含まれており、ユーザーとロールをグラフィカルに管理できます。
ユーザー
次のアクションを実行して、データベースユーザーを管理できます-
- ユーザーを検索
- ユーザーを追加
- ユーザーを削除する
- ユーザーの編集:名前、ステータス、パスワードのロールをインラインで編集できます。[編集]ボタンをクリックします
ユーザーを追加
新しいユーザーを追加するには、[ユーザーの追加]ボタンをクリックして、新しいユーザーの情報(名前、パスワード、ステータス、ロール)を入力し、保存して新しいユーザーをデータベースに追加します。
役割
次のアクションを実行して、データベースロールを管理できます-
- 検索ロール
- 役割を追加
- 役割を削除
- 役割を編集
役割を追加
新しいユーザーを追加するには、[ロールの追加]ボタンをクリックして、新しいロールの情報(名前、親ロール、モード)を入力し、保存してデータベースに新しいロールを追加します。
ルールをロールに追加する
選択したロールに新しいセキュリティルールを追加するには、[*ルールの追加]ボタンをクリックします。 これにより、保護するリソースの文字列を尋ねられます。 次に、新しく作成されたリソースでCRUD権限を構成できます。
OrientDB-Pythonインターフェース
Python用のOrientDBドライバーは、バイナリプロトコルを使用します。 PyOrientは、OrientDBをPythonに接続するのに役立つgitハブプロジェクト名です。 OrientDBバージョン1.7以降で動作します。
次のコマンドは、PyOrientをインストールするために使用されます。
- クライアントインスタンスを作成すると、接続が作成されます。
- DB_Demo という名前のDBを作成します。
- DB_Demoという名前のDBを開きます。
- クラスmy_classを作成します。
- プロパティidと名前を作成します。
- クラスにレコードを挿入します。
次のコマンドを使用して上記のスクリプトを実行します。