ALTIBASE は、リレーショナルデータベースモデルをサポートし、汎用的なアプリケーションシステムと特定のリアルタイムアプリケーションシステムに適した特性を持っています。

クライアント・サーバー型アーキテクチャは、一般的なアプリケーションに適した構造で、アプリケーションプログラムは様々な通信方法によってサーバーに接続します。一方、アプリケーション組み込み型構造は、アプリケーションプログラムをデータベースサーバーに内蔵することによって一つのプロセスで運用する方式です。
このような構造は、アプリケーションプログラムとデータベースサーバー間の通信オーバヘッドを省くことで、高性能のトランザクション処理が可能となります。ユーザは、アプリケーションプログラムの特性や運用環境の特性に適したデータベースサーバーアーキテクチャを選択することができる柔軟性を持つことができます。
一般的に知られているように、マルチプロセスアーキテクチャのシステムは、ユーザが増加することにつれて必要なシステムリソースが急増し、プロセス間のスワップコストが大きくなります。一方、マルチスレッドアーキテクチャのシステムは、スレッド単位で管理されるため、システムリソースの消費を少なくします。
マルチスレッドの長所を生かしたAltibaseサーバーは、サーバー機能をサポートする多数のシステムスレッドとユーザの接続によってサービスを提供するサービススレッドプールで構成されています。サービススレッドプールは、サーバー接続プールと連動し、限定された個数のスレッドを通じて多くのユーザーにサービスを提供します。つまり、このような構造は、サーバーが使うリソースを最小化することにより、システムの拡張性と可用性を最大化することができます。

Altibase は、モジュール別の独立性を考慮し、階層型構造で設計することにより、アルゴリズムを単純化しました。各モジュールの単純化で全体的な性能アップを図っています。また、プラットフォーム独立階層(Platform Independent Layer)を開発したことにより、様々なプラットフォームへの移植が非常に簡単です。現在、ほとんどの Unix 系列、Windows、そして QNX のような RTOS に移植されています。 クライアントの効率的な業務処理のため、TCP / IP、UNIX DOMAIN、IPC などの通信方法を提供することにより、ユーザの業務特性に合わせた様々な通信方法が選択できるので、アプリケーションプログラムの開発や運用に柔軟性を提供します。特に、IPC 通信モジュールは、共有メモリによる高速な通信を提供します。

メモリデータベースのキーポイントは、データベース用として必要な大量のメモリをいかに上手く利用するかという点にあります。すなわち、メモリに最適化したデータベース構造の設計技法によって性能に大きく差が現れます。 ハイブリッドメモリデータベースのキーポイントは、メモリデータベースとディスクデータベースにいかに効率的にデータを配置するかという点にあります。つまり、高速アクセスが必要なデータとそれ以外のデータの取り扱いのポリシーを明確に設定することが重要です。
高性能データベースを効率的に管理するため、ALTIBASE は、各階層に効率的なメモリ使用のために慎重に設計されています。データベースのようなシステムソフトウェアは、単純なメモリの割り当て(malloc)や、値を指定(memset)する演算も性能に非常に大きな影響を与えるため、ALTIBASE は、メモリプールを利用したメモリ管理モジュールを非常に慎重に設計して実現しました。また、ALTIBASE の保存デバイス管理階層(Storage Management Layer)は、メインメモリに最適化された保存単位でページを構成し、各ページの連携性を最大化することにより、データベースを効率的に保存・管理します。クエリ処理階層(Query Processing Layer)は、クエリ処理の際に必要な一時的空間(temporary storage)を効率的に管理するため、実行中に不要なメモリリソースの割り当てや解放による性能低下の要素を最小化しました。
大容量データベースの効率的な代案として、ALTIBASE は、メモリとディスクの 2 つの保存領域を一つの DBMS で提供します。メモリ領域と同様にディスク基盤の保存領域は、従来の DRDBMS で提供する LRU アルゴリズムをベースとしたバッファプール領域や物理的ディスク保存領域をサポートします。 ユーザが要求するデータをバッファプールにキャッシュして使用し、高性能なメモリ保存領域のデータと保存領域の速度に対する性能低下の要素を最小化しました。
メモリデータベースを運用すると、実際にテーブルに必要なメモリ空間よりはるかに多い量のメモリが消費されることがあります。これは、主に大量のデータがテーブルに挿入された後や、変更や削除が頻繁に行われた時に発生します。このような場合、該当するテーブルから不要なメモリをシステムに返還することができれば、より効率的にメモリを使うことができます。ALTIBASE は、テーブル単位の compaction 機能を提供しており、この機能を利用すると、メモリやテーブルを効率的に管理することができます。
ALTIBASE は、メインメモリ上のデータベース空間を共有メモリまたはプロセスローカルメモリに確保できる機能を提供します。共有メモリをデータベース空間として使うと、システムが正常な状態では、ALTIBASE の再実行にかかる時間を非常に短くすることができます。これは、共有メモリ内のデータベースが安全に維持されているため、バックアップデータベースからデータを読み込む必要がなく、すぐに共有メモリ内のデータベース領域を ALTIBASE サーバープロセスに割り当てて使うことができるためです。 メモリ内のデータベース空間は、永続空間(persistent space)と一時的空間(temporary space)に分けられます。永続空間は、実際のテーブルとメタ情報に関するデータを保存しています。この空間は、ディスク上のバックアップデータベース内容を反映しています。一時的空間は、インデックスデータやクエリ演算中に発生する作業用のテーブルが置かれる場所です。
この空間は、ディスク上にあるバックアップデータベースには反映されず、ALTIBASE サーバーが終了すると消えてしまう空間です。ALTIBASE のインデックスデータはバックアップデータベースに保存されず、一時的空間に保存・管理されます。ALTIBASE は、サーバー開始時にシステムカタログからインデックス情報を取得して、一時的空間にインデックスを速やかに生成します。インデックスをバックアップデータベースに保存しないことにより、ALTIBASE は、サーバー実行中にインデックスの変更に対してロギングする必要がなく、その分データベースの性能をアップさせることができます。
継続したデータの挿入により、メモリ内のデータベースの永続空間が足りない場合、ALTIBASE は、自動でデータベースの永続空間を一定のサイズに拡張して管理します。もちろん拡張されたデータベースの永続空間はバックアップデータベースに反映され、データの永続性を保障します。
ALTIBASE には、メモリデータベースのデータサイズの拡張に対応するため、ディスクテーブルスペース上のテーブルにデータを移動する機能を提供します。この移動機能(MOVE DML)は、同じスキーマのテーブルが存在する場合、メモリてーブルスペースのデータをディスクテーブルスペースに移動し、該当データを元のテーブルから削除する機能です。このデータ移動機能により、アクセスの多いデータやアクセスが比較的少ないデータを分離して保存し、応答性能を最適化し、保存空間をさらに効率的に使うことができます。
ALTIBASE は、伝統的なトランザクションの概念である ACID 特性を完全にサポートすることを基本とします。
ACID は、一般的なデータベースシステムがトランザクション処理のために基本的に提供する特性として、原子性(atomicity)、一貫性(consistency)、独立性(isolation)、永続性(durability)の 4 つを意味します。ALTIBASE ではこれら 4 つの特性を全て満足するトランザクション処理方法を提供します。これらの特性のうち、永続性を提供するためにはディスクとの同期化機能が必須であり、これはディスクへのアクセスによる性能低下を引き起こします。しかし、ALTIBASE は、独自の技術開発により高速のトランザクション処理を保障しつつ、トランザクションの永続性を提供する特徴を持っています。 実際のサービスが行われる環境では、偶発的なサーバーの障害によりデータベースのシステムダウンが発生する可能性もあり、そのような状態でのデータベースの回復は進行中であるトランザクションの状態を正確に反映、もしくは完全に撤回できる機能が必要です。ALTIBASE は、ロギングの際、WAL(Write Ahead Log)プロトコルを適用して様々な状態のトランザクションを回復時点に正確に反映することにより、トラブル発生前の状態に完全に復旧されることを保障します。
ALTIBASE は、構築されたデータベースをファイルに、暗黙的(implicit)または明示的(explicit)な方式でディスクのバックアップデータベースファイルに同期化(checkpoint)します。この際、同期化の過程では全ての変更されたページがディスクに反映されなければなりませんが、その時に該当ページの一貫性を維持するために Page Latch をかけなければならない場合が発生します。しかし、ハイブリッド メモリデータベースの特性を考慮すると、Page Latch を使うのは、実行中のトランザクションとの衝突を引き起こし、同期化の際にシステム全体の性能を急激に低下させる危険性があります。このような問題を解決するため、ALTIBASE は同期化の際に、Page Latch を使わない代わりにバックアップディスクを二つ置き、交互に反映するようにしたピンポンチェックポイントと呼ぶ技術を実装しています。これにより、同期化の過程で、実行中のトランザクションに負荷を与えずシステム全体の性能アップを図っています。
ALTIBASE システムのページのサイズやファイルシステムの物理的なページサイズが異なった場合、Disk I / O の実行中に異常終了されると、ページが完全ではない状態で残されることがあります。このような現象を防ぐために ALTIBASE は、ページの I / O を行うときに、ディスクの特定の領域に存在するダブルライトバッファ領域に同じイメージを予め保存しておきます。そして、ALTIBASE の再起動時に、ダブルライトバッファの内容と実際のページの内容をチェックし、不完全なページを復旧します。
読み取り一貫性で高い同時実行性とデータの整合性を保証
ハイブリッド メモリデータベースでの同時性制御は、従来の RDBMS とは異なる特徴を持っています。ハイブリッド メモリデータベースは、従来の RDBMS より 10 倍以上のパフォーマンスを達成できるため、高速なデータ処理が強く要求される領域で使用されます。そのため、できるだけ同時性制御にかかるコストが少なくし、データベース全体の性能をアップさせなければならないという要件が存在します。
伝統的な 2PL(two phase locking)プロトコルを使うデータベースでは、仮に該当ロックのレベルがレコードだとしても、該当レコードに対する変更処理が発生すると、該当レコードに対する読込み処理が遅延する問題が発生します。また、特定のレコードに対する読込み処理が発生した後は、そのトランザクションが commit されるまで、そのレコードに対する変更トランザクションが待ち状態となる状況も発生します。更に、大量のレコードに対する読込みまたは変更処理が発生した場合は、レコードに対する読込みや書込みコストより同時性制御を行うロックに対する処理演算により多くコストがかかることになり、ロックエスカレーション(Escalation)が発生しトランザクション性能が低下する危険性があります。
ALTIBASE が提供するマルチバージョン技法は、トランザクション実行時間に対し、それぞれ異なったバージョンを維持するため、レコードレベルの読込み処理は、変更処理と関係なく進めることができ、変更処理も読込み処理とは関係なく進めることができます。
特に、ALTIBASE は、レコードレベルのロックメカニズムをサポートしつつ、該当レコードに対するロック情報を直接レコード内部に保存するため、ロック処理にかかるコストがほとんどゼロに近いだけでなく、読込み処理の場合は、ロック情報を持たずに処理を進められるように設計されました。また、一つのトランザクションが大量のレコードに対して読込みや変更処理を実行しても、ロック管理に対するコストがほとんど発生しないため、高速な応答速度を保証します。
ALTIBASE は、メモリテーブルやディスクテーブルに対し、外見上は同じ機能を提供しますが、異なる実装方式で MVCC を実現しています。メモリテーブルは、行を変更する度に新しいバージョンを生成する out-place MVCC で実現されており、ディスクテーブルの場合は、変更されたデータを既存の行に上書きし、変更前の情報を undo table space に保存して参照する in-place MVCC 方式を採用しています。
ハイブリッド メモリデータベースが、メモリ方式の out-place マルチバージョン技法をサポートすることにおいて負担となる部分は、トランザクションがそれ以上アクセスできない前のバージョンのレコードに対する処理です。ハイブリッド メモリデータベースは、システムメモリを持続的に使うため、削除・変更されたレコードを解放しなければ、システムが使用可能なメモリを全部使い切ってしまう可能性があります。
このような理由からハイブリッド メモリデータベースでは、必要のないレコードまたはインデックスノードが存在した場合、すぐ回収して再利用できるメカニズムが必要です。ALTIBASE では、このような役割をするガーベージコレクション(Garbage Collection)スレッドを生成し、最適なメモリ状態が維持できるよう保障します。
ALTIBASE は、ハイブリッド メモリデータベースの構造に合わせて最高の性能が出せるトランザクション構造やそれと関連した様々な機能を提供します。
ALTIBASE は、マルチバージョン技法(MVCC : Multiversion Concurrency Control)を利用して同時性制御を行いますが、一般的なトランザクション管理技法では、最適の性能を発揮することがが困難です。MVCC 環境では、特定の時点に特定のレコードに対するアクセスを行った他のトランザクションの状態、つまり現在実行中なのか、あるいは既に終了したものなのかなどの情報を数ナノ秒(nano sec)内に決めなければならない制約が存在しますが、このような判断のためのコストが多くかかる場合、マルチバージョン技法の処理コストが非常に大きくなり、返って逆効果となるためです。
このような要件を満たすために ALTIBASE では、トランザクションプール(Transaction Pool)を維持し、そのプールに対する直接的なアクセスにより高速にトランザクションの実行の有無を判断できるようにしています。特に、トランザクションプールを予め作成しておく構造は、デッドロック(Dead Lock)処理にも大きなメリットを持ちます。一般的なデッドロック検知技法は、トランザクションの間にサイクルが存在するのかどうかを検査する別のプロセスあるいはスレッドが存在し、一定周期で全ての使用中のトランザクションを検査するものです。この構造は、必然的にデッドロックに参加したトランザクションの一時的なサービスの中止をもたらします。高速な応答速度を保障しなければならないハイブリッド メモリデータベースにおいて、デッドロックが発生した後、一定時間の間サービスが中止されるということは極めて致命的な結果をもたらすため、このようなデッドロック検知技法は適切ではありません。この問題を解決するため、ALTIBASE では、トランザクションのロック要求の際に、トランザクションプールを利用して即時に非常にデッドロックを発生させたかどうかを検査するアルゴリズムを適用し、デッドロックによるトランザクションの致命的な遅延現象を根本的に解決しています。
また、ALTIBASE のトランザクションの分離レベル(isolation level)は、commit read を基本として、repeatable read や no phantom read レベルを動的にサポートするため、ユーザの必要に合わせて適切な分離レベルを選択して使うことができます。
データベースに対する同時ユーザ数は、データベースの特性や該当システムの容量と密接な関係があります。しかし、システム容量が増える比率だけ実際にデータベースがサポートする同時ユーザ数は比例関係を持たないことが一般的であり、特にデータベースがサポートするサービスアーキテクチャーがこのようなリソースに関する問題と直接的な関連性があります。 伝統的な方法として、サービス当り一つのプロセスを生成する構造を持つアーキテクチャは、ユーザ数分のプロセスが生成されなければならず、それによるリソースの無駄使いが激しい状態では、大容量ユーザをサポートするための解決策を見つけるのが困難です。限定されたプロセスで大量のユーザーをサポートするとしても、リソースをユーザ間で時間差をつけて分けて使うこととなり、完全な解決策であるとはいえません。 このような問題から、現在のデータベースの構造はマルチスレッドアーキテクチャーに移行している傾向であり、ALTIBASE は、設計当初からマルチスレッドを基本に検討されています。 ALTIBASE では、スレッドアーキテクチャーを基本にサービススレッドプールやサービスセッションプールを提供し、2 段階のスレッド構造を提供します。サービスセッションプールは、クライアントの要求を直接担当し、クライアントに情報を返すセッションを維持するものであり、サービススレッドプールは、このようなクライアントのサービスを実際に下位モジュールで実行します。サービスセッションプールやサービススレッドプールの数は、プロパティにより該当システムの負荷に合わせて適切な値を選択することができるため、必要以上のサーバーリソースを消耗することがないよう制御できます。また、クライアントに対する高速な応答を保障するために、一定の数までのクライアントにはサービススレッドとの 1 : 1 接続により最大の性能を保障し、一定の数以上のクライアントが接続される場合は、N : M の接続に自動変換し、サーバーリソースを効率的に利用できるクライアント-サーバー間の混合サービス(Hybrid Architecture)方式を提供します。
特殊なアプリケーションに合わせて開発されたリアルタイムシステムの場合、多くのシステムはクエリ処理言語(SQL)を提供しないか、SQL の一部の機能だけを提供する API によるアプリケーションプログラムの作成を要求します。このような方式は、アプリケーションプログラムの作成を難しくし、開発費用を膨らませ、メンテナンスも困難にします。
ALTIBASE は、Ad-hoc 方式のプログラミングの開発ではなく、標準仕様である SQL-92 をサポートすることにより、簡単にデータを変更してアクセスできる方法を提供します。そのため、開発期間を短縮し、メンテナンス費用も大幅に削減することができます。
また、単純なクエリ処理機能や性能のみに重点を置いている他の製品とは異なり、通信サービスなどのように単純なクエリ性能を要求する特定分野はもちろん、複雑な分析や処理のための様々なパターンのクエリが要求される汎用分野にも適用できるように、高性能、高機能、大容量のクエリ処理を提供します。
ALTIBASE のクエリ処理機能は、最適化されたメモリ管理やディスク管理により、高性能のクエリ処理を提供します。例えば、メモリやディスクの特性に合わせて最適化された cost-based optimizer の提供、最適の join optimizer による Nested Loop Join、ハッシング(Hashing)またはソート(Sorting)を利用した Join の実行方法をサポートします。また、高速なデータ照会のために効率的なインデックス使用アルゴリズムをサポートすることにより、高性能なクエリ処理を提供します。
また、rule-based optimizer では、複雑なアプリケーションプログラムのクエリ性能が保障できない短所を補い、メモリの特性に合わせて最適化された cost-based optimizer をサポートすることにより、単純なクエリの性能はもちろん、複雑なクエリに対しても高性能のクエリの実行を可能にします。
ALTIBASE のクエリ処理機能は、機能的な側面において一般的な Inner Join だけでなく、Outer Join(full、left、right outer join)など、様々なジョイン(Join)機能のサポート、複雑なスキーマのアプリケーションプログラムに適合したサブクエリ(subquery)処理や inline-view 機能、ユーザがデータベーススキーマによってクエリ実行プラン(execution plan)を自由に変更し、照会できる機能、多様なシステム提供関数(built-in function)や条件文のサポート、SET 演算(union、intersect、minus)のサポートなど、一般的なデータベースアプリケーションプログラムで必要とされる多くの機能を提供します。
また、データがメモリ領域に保存されていても、ディスク領域に保存されていても、Join 文を自由かつ制限なしに使える特徴を持っています。
複雑なアプリケーションプログラムをデータベースに保存・管理することが容易なストアド・プロシージャ(stored procedure)機能、sequence 機能、foreign key 機能などのDDL、DML、DCL、二重化(replication)関連の SQL 文などをサポートすることにより、SQL 文を使ってデータベースを簡単に管理することができます。
ALTIBASE のクエリ処理機能は、アクセスするレコードがメインメモリに存在する特徴を生かし、それに最適化されたアルゴリズムで高機能のクエリを高性能で処理することにより、色々な分野に適用され、アプリケーションプログラムの開発を容易に行うことができます。
ALTIBASE は、従来の RDBMS がサポートする標準プログラミングインターフェースを提供しており、プログラマーのデータベースアプリケーションプログラム開発を容易に行なうことができます。

Windows 環境において、Visual Basic、Visual C++ のような RAD ツールで ALTIBASE サーバーに接続してデータベースを活用するためには、ODBC ドライバーを活用しなければなりません。 ALTIBASE は、ODBC ドライバーを提供しており、ユーザはこのドライバーを自分の Windows システムに登録することにより RAD ツールで ALTIBASE を使うことができます。 ALTIBASE の ODBC は、Core Level、Level 1、そして Level 2 の仕様をサポートします。
ALTIBASE は、従来の RDBMS がサポートする標準プログラミングインターフェースを提供しており、プログラマーのデータベースアプリケーションプログラム開発を容易に行なうことができます。
ウェブ環境において、データベースアプリケーションプログラムを開発したり、アプリケーションプログラムの移植性を考慮して JAVA の仮想マシンで行われるデータベースアプリケーションプログラムを開発するために、ALTIBASE は、JDBC をサポートします。JDBC のインターフェースを活用すると、ALTIBASE と BEA 社の WebLogic を連動しやすく、JSP で Altibase アプリケーションプログラムを開発することが更に容易になります。 ALTIBASE の JDBC は、JDBC 2.0 仕様をサポートしています。
SES C / C++ 前処理機(pre-compiler)は、SQLCLI に比べて比較的に簡単に ALTIBASE アプリケーションプログラムが作成できます。C または C++ プログラミング言語で Embedded SQL を使うことにより、ALTIBASE のデータベースへ簡単にアクセスできますので、プログラマーの記述するコード量を削減し、SQLCLI と同等の性能を持つプログラムが作成できます。 SES C / C++ は、Oracle の Pro*C / C++ と同じ仕様をサポートするため、従来の Oracle のアプリケーションプログラムを ALTIBASE に簡単に移植できます。
PSM は、Oracle の Stored Procedure のような機能を提供するデータベーススクリプト言語です。ユーザは、複雑なビジネスロジックを PSM で作成して ALTIBASE サーバーに保存しておき、必要な時にクライアントから呼出して使用すると、全体的なデータベースの性能を向上することができます。 PSM は、ストアド・プロシージャや関数をサポートし、ビジネスロジックが簡単に作成できるように、if、case、while、for、loop、continue、exit、null statement のようなフロー制御文を提供しています。
ミッションクリティカルな分野のデータベースサービスは、どのような場合でもサービスが中断されてはいけません。データベースシステムの故障や、データベースメディア(ディスク)の破損により、サービスが中断された場合、提供できなかったサービスに対する経済的な損失を被るだけではなく、会社の信頼度も低下してしまいます。 このような問題を解決するための対策案が、データベースの二重化機能(レプリケーション)です。

レプリケーションとは、物理的に離れている複数のデータベースに対し、ローカルデータベースの変更された内容をリモートデータベースにコピーして管理することを言います。 ユーザは、一つのデータベースについてのみ作業を行ってもデータベースの二重化システムにつながっている他のデータベースにも作業内容が同様に適用され、複数のデータベースを同時に管理することができます。このようなデータベースの二重化は、データベースの無停止サービスを可能にします。
ALTIBASE は、データベースの変更ログを使用した Point-to-Point の二重化技法を使います。ローカルサーバーがデータベースの変更ログを XLOG という実行計画に置換えてリモートサーバーに転送し、リモートサーバーは、この XLOG をトランザクションを回復するのと同様な方法で反映します。 ALTIBASE は二重化したサーバーの独立性を保障するため、二重化トランザクションがローカルトランザクションに与える影響を最小化します。二重化は Active-Active、Active-Standby のモードを提供しており、ALTIBASE 内部で Replication Manager、Replication Sender、Replication Receiver という二重化処理を実行する専用スレッドで処理を実行します。
ALTIBASE の二重化インターフェースは、SQL に同様な構文で提供されるため、対話型 SQL ツールまたはアプリケーションプログラムから、簡単に利用することができます。二重化のインターフェースは、次の通りです。
ALTIBASE は、N-Way 二重化を提供することにより、Network の構造の二重化位相を提供します。
ALTIBASE の二重化は次のようなミッションを基に開発されています。
Message Queuing System は、それぞれのアプリケーションがメッセージを利用し、双方円滑に通信できるようにサポートするシステムのことを言います。 このとき、通信する送信側と受信側の 2 つのアプリケーションは、単一システムの内部または物理的に区分されていますが、ネットワークでつながった他のシステムに存在することもあります。 Message Queuing System は、2 つのアプリケーションをつなぐためのソケットの生成や、パケットに対する flow control、例外状況の処理に対する全てのものをアプリケーションで直接処理しなければならない煩わしさを最小化します。

ALTIBASE は、message queuing system で使われる Queue を一般のユーザテーブルとして取り扱い、管理します。従って、それぞれのQueueに対するロギング機能やトランザクション機能、同時性制御などのような ALTIBASE の全ての機能を Message Queuing System でそのまま使うことができます。
ユーザーがデータベースアプリケーションを効率的に開発・管理するためには、様々な付加機能を提供するデータベースツールが必要となります。例えば、クエリーの実行ツールやデータのアップロードツールなどです。
ALTIBASE は、ユーザーが効率的かつ、簡単な方法でデータベースを管理できるよう以下のツールを提供します。
このユーティリティは、ALTIBASE のサーバー管理ツールです。データベース管理者は、このユーティリティを利用して ALTIBASE サーバーをスタート/終了させ、サーバー運用中にその状態を把握し、適切な管理が行えます。特に、configuration 情報、セッション情報、メモリ使用情報、データベース情報、二重化情報を閲覧し、管理できる機能を提供します。
OLTP、DWHで利用できる高性能メモリデータベース
従来のメモリデータベースの用途は、通信分野などにおいて単なる簡単なトランザクションを高速で処理するために主に使われてきましたが、最近においてはビリング、顧客管理など、複雑なアプリケーションにもメモリデータベースが適用されてきています。 一般的なメモリデータベースは、単純なクエリ処理の性能に重点をおいていますが、ALTIBASE は汎用のデータベースとして利用できることを目標に複雑なクエリ処理をサポートするだけでなく、その処理性能にも重点をおいてより優れたものとなるよう開発しています。複雑なSQLの処理性能に対するベンチマーキングツールとしては TPC-H があります。ALTIBASE は、TPC-H のベンチマーキング性能においても優れた結果を出しています。

| No. | Query 特徴 |
|---|---|
| Q 1 | 600 万件に対する index scan、8 個の aggregation 演算(SUM、AVG、COUNT)を含む、2 columns group by、2 columns order by |
| Q 2 | 5 join(20 万、1 万、80 万、25、5)in outer query、4 join(80 万、1 万、25、5)in subquery、4 columns order by、outer column reference(join predicate) |
| Q 3 | 3 join(15 万、150 万、600 万)、sum(expression)、3 columns group by、2 columns order by、limit |
| Q 4 | count(*)、1 column group by、1 column order by、exists subquery(600 万)、 outer column reference |
| Q 5 | 6 join(15 万、150 万、600 万、1 万、25、5)、sum(expression)、1 column group by、1 column order by |
| Q 6 | sum(expression)、600 万件に対する index scan |
| Q 7 | inline view、6 join(1 万、600 万、150 万、15 万、25、25)、AND / OR が混合された predicates、3 columns group by、3 columns order by、SUM |
| Q 8 | 8 join(20 万、1 万、600 万、150 万、15 万、25、25、5)、inline view、1 column group by、1 column order by、aggregation |
| Q 9 | star query、6 join(20 万、1 万、600 万、80 万、150 万、25)、inline view、2 columns group by、2 columns order by、like predicate |
| Q 10 | 4 join(15 万、150 万、600 万、25)、7 column group by、1 column order by、aggregation、limit |
| Q 11 | 3 join(80 万、1 万、25)in outer query、3 join(80 万、1 万、25)in subquery、1 column group by、having、1 column order by、aggregation |
| Q 12 | 2 join(150 万、600 万)、1 column group by、1 column order by、aggregation |
| Q 13 | left outer join(15 万、150 万)、inline view、1 column group by、2 column order by、like predicate、aggregation |
| Q 14 | 2 join(600 万、20 万)、aggregation、many expression in target |
| Q 15 | create view => inline view、subquery、1 column order by、aggregation |
| Q 16 | 2 join(80 万、20 万)、in predicates、like predicate、3 columns group by、4 columns order by、count(distinct)、subquery |
| Q 17 | 2 join(600 万、20 万)、subquery(600 万)、outer column reference(join predicate)、aggregation |
| Q 18 | 3 join(15 万、150 万、600 万)、subquery(600 万)、5 columns group by、having、2 columns order by、aggregation, limit |
| Q 19 | 複雑な predicate 使用(多くの AND、OR 演算者が使用、in predicates)、2 join(600 万、20 万)、aggregation |
| Q 20 | 2 join、多くの subquery、outer column reference、1 column order by、ggregation |
| Q 21 | 4 join(1 万、600 万、150 万、25)、exists/not exists subquery(600 万)、outer column reference、1 column group by、2 columns order by |
| Q 22 | 複雑な predicate を使用(in predicate、substring、not exists subquery)、1 column group by、1 column order by、aggregation |
| 区分 | Throughput(TPS) |
|---|---|
| Select | Minimum 6,000 ~ Maximum 20,000 |
| Insert | Minimum 5,000 ~ Maximum 11,000 |
| Update | Minimum 5,000 ~ Maximum 13,000 |
| Delete | Minimum 5,000 ~ Maximum 12,000 |
ハイブリッドメモリデータベースは、データの処理量や規模に制約を受けず、高速なトランザクション処理性能を保障できるため、適用範囲に制限されることなく幅広い分野で適用することができます。 特に、ローエンドからハイエンドに至るまで、伝統的に強みをみせてきた金融、通信に限らず、インターネットポータル、銀行、製造、流通、公共など、全ての産業分野に幅広く適用することができます。 ALTIBASEの適用可能な分野は、以下の通りです。
ALTIBASE では、他社製の DBMS と連携することが可能です。一部の連携ツールについては、ソースを公開しておりますのでお客様のシステム環境への対応が柔軟な連携ツールとしてカスタマイズ頂くことも可能です。

| ツール名 | 連携元DB | 連携先DB | 同期方式 | 備考 |
|---|---|---|---|---|
| ALTIMIG | ORACLE | ALTIBASE | 一括同期 | ソースを提供 |
| JSync | ORACLE | ALTIBASE | 差分同期 | ソースを提供 |