Hasura Graphqlエンジンと分散SQLを使用したリアルタイムロケーションアプリケーションの配備


Hasura GraphSQL生態系の主要なベンダーの1つです.彼らはあなたのデータベースとマイクロサービスに接続するオープンソースエンジンを提供し、自動生成されたGraphSQLバックエンドを生成します.GraphSQLは、あなたのAPIのためのクエリ言語(より具体的には仕様)であり、あなたのデータのために定義するタイプシステムを使用してクエリを実行するためのサーバー側のランタイムです.Graphqlは、しばしばマイクロサービス、モバイルアプリケーション、および残りの代替として使用されます.GraphSQLは任意の特定のデータベースまたはストレージエンジンに縛られていないが、代わりに既存のコードとデータによってバックアップされているが、YugabyteDBは、水平スケーラビリティ、フォールトトレランス、および単一のシステム内のグローバルデータ配布を与えるGraphSQLに最適です.
このブログの記事では、どうすればよいかを示します.
  • Google Kubernetes Engine(GKE)上で3ノードのyugabytedbクラスタをインストールします
  • GSK上でhasuraグラフ式エンジンを配備する
  • スタンドアップハサラの“リアルタイムの場所を追跡”アプリローカルとGKS上のリソースに接続する
  • The “realtime location application” は反応を使用して構築され、3ノードのyugabytedbクラスタによってバックアップされたHasura Graphicalエンジンによって供給されます.これは、ユーザーのためのユーザーのためのインターフェイスを使用して車の位置を追跡してハラライブクエリを使用して、リアルタイムです.アプリケーションは、Hasura Lexqlエンジンのリアルタイム機能を使用してサブスクリプションを使用します.
    分散SQLまたはyugabytedbに新しい?を読む.

    分散SQLとは

  • 分散SQLデータベースは、クラウドやクラウド固有の環境にデータインフラストラクチャを移動することに興味を持っている組織に人気を集めています.これは、TCOを減らすか、Oracle、PostgreSQL、MySQL、SQL ServerのようなモノリシックRDBMSの水平スケーリングの制限から離れることによって、しばしば動機づけられます.分散SQLの基本的な特徴は以下の通りです.
  • 外部キー、部分インデックス、ストアドプロシージャ、トリガーのような伝統的なRDBMS機能をサポートして、データの問い合わせとモデリングのためのSQL APIを持たなければなりません.
    単一のノードがボトルネックになるように、自動分散クエリ実行.
  • 自動で透明な分散データストレージをサポートする必要があります.これはインデックスを含みます.そして、それは1つのノードがボトルネックになるように、クラスタの複数のノードの向こう側に鋭くされなければなりません.データ配布は、高性能と高可用性を確実にします.
  • 分散SQLシステムはまた、強く一貫したレプリケーションおよび分散酸取引を提供するべきである.
  • 分散SQLの詳細については、チェックアウトしてください.“What is Distributed SQL?”

    何がyugabytedbですか?


    YugabyteDB オープンソースの高性能分散SQLデータベースは、Googleのスパナに触発されたスケーラブルでフォールトトレラントデザイン上に構築されます.YugabyteDBはPostgreSQLのワイヤ互換、クラウドネイティブ、GraphSQLプロジェクトとの深い統合を提供し、ストアドプロシージャ、トリガとUDFSのような高度なRDBMS機能をサポートしています.

    Step 1 : Hum 3を使用したGKEクラスタ上でのyugabytedbのインストール


    このセクションでは、クラスタ上のyugabytedbをインストールします.完全な手順を文書化here . GKEクラスタを起動し、出発点として実行していると仮定します.
    最初にすべきことは、チャートリポジトリを追加することです.
    $ helm repo add yugabytedb https://charts.yugabyte.com
    
    さて、更新を取得します.
    $ helm repo update
    
    名前空間を作成します.この場合、我々はそれを呼びますyb-demo .
    $ kubectl create namespace yb-demo
    
    予想される出力:
    namespace/yb-demo created
    
    私たちは現在、YugabyteDBをインストールする準備ができました.以下のコマンドでリソース制約付き環境に値を指定します.
    $ helm install yb-demo yugabytedb/yugabyte \
    --set resource.master.requests.cpu=1,resource.master.requests.memory=1Gi,\
    resource.tserver.requests.cpu=1,resource.tserver.requests.memory=1Gi,\
    enableLoadBalancer=True --namespace yb-demo --wait
    
    クラスタの状態を確認するには、以下のコマンドを実行します.
    $ kubectl get services --namespace yb-demo
    

    注意:外部IPyb-tserver-service yugabytedbとhasuraの接続を確立するために使用します.このデモでは35.224.XX.XX とysqlポートは5433 .

    ステップ2 : hasgabytedbを使用するためにhasuraを設定する


    以下のコマンドを実行することによって、Hasura Kubernetes配備とサービスファイルを得てください.
    $ wget https://raw.githubusercontent.com/hasura/graphql-engine/master/install-manifests/kubernetes/deployment.yaml
    
    $ wget https://raw.githubusercontent.com/hasura/graphql-engine/master/install-manifests/kubernetes/svc.yaml
    
    データベースURLを変更するdeployment.yaml YugabyteDBのIPを含むファイル.このファイルはviのようなテキストエディタで編集できます.デフォルトではyugabyte YugabyTeDBのユーザーはパスワードとデフォルトのデータベースを持っていませんyugabyte .
    このチュートリアルでは、次のように変更します.
    value: postgres://yugabyte:@35.224.XX.XX:5433/yugabyte
    
    注:あなたがすべてを実行したい場合はyb-demo 名前空間、両方の名前空間の値を変更することを確認しますdeployment.yaml and svc.yaml ファイル.これは私がこのデモのために選んだセットアップです.
    ファイル使用の保存後kubectl 以下のコマンドを使用してHasura配備を作成するには、次の手順に従います.
    $ kubectl create -f deployment.yaml
    
    deployment.apps/hasura created
    
    $ kubectl create -f svc.yaml
    
    service/hasura created
    
    外部IPを見つけて、Hasuraコンソールを開くには、以下のコマンドを実行します.
    $ kubectl get services --namespace yb-demo
    

    今すぐ使用http://<EXTERNAL-IP>/console hasuraコンソールにアクセスする.この場合は34.68.XX.XX . さあ、hasuraコンソールを見てください.

    ステップ3:リアルタイム追跡場所アプリをインストールする


    ステップ3では、ローカルに動作します.このデモの目的のために、私はMacにいます.

    サンプルアプリケーションのダウンロード


    $ git clone https://github.com/hasura/graphql-engine
    
    $ cd graphql-engine/community/sample-apps/realtime-location-tracking
    

    hasura cliをインストール


    $ curl -L https://github.com/hasura/graphql-engine/raw/stable/cli/get.sh | bash
    

    設定を変更します。YAMLファイル


    移動するhasura/ ディレクトリと編集config.yaml hasuraサービスの外部IPを持つファイル.例えば、
    endpoint: http://34.68.XX.XX
    

    構成を変更します。YAMLファイル


    同じ範囲内でhasura/ ディレクトリ変更docker-compose.yaml ファイルを以下のように変更します.
    パスワードの必要性を排除します.
    environment:
    - “POSTGRES_PASSWORD:“
    
    ポートの割り当てを変更します.
    ports:
    - “5433:5433“
    
    接続文字列をyugabytedbパラメータで指定します.
    environment:
    - HASURA_GRAPHQL_DATABASE_URL: postgres://yugabyte:@35.224.xx.xx:5433/yugabyte
    

    定数を変更します。jsファイル


    移動するsrc/ ディレクトリと編集constants.js ファイルを以下のように変更します.
    //Constants file
    export const HASURA_GRAPHQL_URL = '34.68.XX.XX/v1/graphql';
    const HASURA_GRAPHQL_ENGINE_HOSTNAME = '34.68.XX.XX';
    

    移行を適用する


    戻るhasura/ ディレクトリを作成し、移行スクリプトを実行します.
    $ hasura migrate apply
    
    これで、Hasuraコンソールのサンプルアプリのテーブルを見ることができます.

    アプリケーションを起動する


    我々はすぐにアプリケーションのルートでアプリケーションを実行する準備ができて~/graphql-engine/community/sample-apps/realtime-location-tracking/注意:ノードをインストールする必要があります.あなたのシステムにすでに存在しないならば、js.
    $ npm start
    
    あなたは、ブラウザのウィンドウをサンプルアプリケーションのランディングページを開くを参照してくださいする必要があります.

    をクリックして“トラックの場所”ボタンをリアルタイムの場所の追跡の例を表示します.

    結論


    それだ!これで、Gake上で3ノードのyugabytedbクラスタの上に実行されているhasura - graphqlエンジンがあります.GraphSQLのリアルタイムの場所を追跡するアプリケーションは、ローカルで実行しているHasuraとYugabyteDB雲の中で活用しています.