sql >> データベース >  >> RDS >> Database

RDBMSとNoSQLのブリッジング:2DXUIクラスターの概要

    2DXは、メモリ内のブラウザNoSQLとストアドプロシージャで構築されたJavaScriptインタプリタをホストするRDBMSで構成されるWebUIフレームワークです。 2DXのNoSQLデータベースコンポーネントとRDBMSデータベースコンポーネントはどちらも、通常の形式でシリアル化されたデータに対応するように設計された同じEntity-Attribute-Valueデータベーススキーマに従います。これは、リレーショナルデータモデルを、XMLやJSONなどの業界標準に見られるシリアル化されたデータ形式に縮小することで開発されました。

    Webブラウザ用のNoSQLクライアントは軽量のJavaScriptシングルトンオブジェクトであり、抽出操作でのBig-O表記を減らすためにインデックスが付けられたシリアル化されたデータクエリインターフェイスを備えたデータベースです。さまざまなドキュメントタイプが、関連するAPIドライバーを通じてサポートされます。現在サポートされているドキュメントタイプは、WebサイトDOMツリーの「UI」であり、リレーショナルデータの「DB」と開発中のピボットテーブルの「OL」をサポートしています。 2DXクライアントは、特定のAPIドライバーを介してAngularやjQueryなどのサードパーティのJavaScriptフレームワークに接続し、クライアントUI機能を広く使用されているWeb開発ツールに拡張します。

    「UI」ドキュメントのDOMツリーに含まれるWebページは、組み込みのHTMLレンダリングおよびキャッシュエンジンを介して画面に表示されます。 UI操作クライアントのNoSQLデータベースは、初期化時にメモリ内DOMコンテナ「newJS2DX()」を作成します。この機能により、DB-UIメモリへの直接アクセスが可能になります。ベンチマークは、2DXが10〜20ミリ秒間隔で複数のWebページをレンダリングでき、ブラウザウィンドウをクラッシュさせることなく200万を超えるHTML要素を含むDOMツリーをロードできることを示しています。

    2DXサーバーは、シリアル化されたデータを通常の形式に、またはその逆に変換するストアドプロシージャをホストするRDBMSデータベースです。ストアドプロシージャは、プログラムのソースコードが通常の形式で保存されているJavaScriptインタープリターを表します。送信されたクライアントデータをコミットする以外に、2DXサーバーは、強く型付けされたJavaScriptで記述された完全なビジネスロジック対応のオブジェクト指向プログラムを実行できます。 CGIドライバーを介してクライアントインスタンスに接続します。

    クエリのパフォーマンスを高速化するためにNoSQLを選択する企業が増えるにつれ、リレーショナルデータとの相互運用性はアプリケーションの中間層に残されることがよくあります。 2DXは、RDBMSにネイティブな永続ストアモジュールでホストされるプログラミング環境を備えた中間層の必要性を排除します。クライアントによって送信されたデータは、リレーショナルデータベースによって処理され、コミットされます。テーブル行が更新されたトランザクションログは、NoSQLサーバーまたはファイルシステムに非同期で公開されます。クライアントデータベースインスタンスは後者を使用して、UI画面でのレプリケーションと即時可用性のためにリレーショナルデータ更新のログを取得します。保留中のトランザクションがクライアントインスタンスで再生されると、サーバーデータベースと同期します。

    2DXクライアント/サーバーデータベースクラスター構成により、リレーショナルデータベースへのクライアント要求のコミットが必要な大規模なデータ環境での低遅延が保証されます。さらに、このようなクラスターにより、ユーザーの入出力操作がRDBMSトランザクションログに確実に記録されます。そのUIレンダリングパフォーマンスは、Webゲームサービスで使用するために2DXを開く可能性があります。将来のバージョンでは、シリアル化をバイパスするクラスターのクライアントとサーバーのデータベースコンポーネント間での直接データベースログ配布と、汎用RDBMSの代わりに独自のDBMSサーバーが計画されています。


    1. ビッグデータの3つの主要な特徴を理解する

    2. rownum=3の給与からrownumを選択します。

    3. Windows Azure VMのパフォーマンスの比較、パート1

    4. Golangで*DB.exec()またはプリペアドステートメントを使用するのはなぜですか?