![How to Build Your Backend with Hasura and PostgreSQL](https://img.php.cn/upload/article/000/000/000/173906413566737.jpg)
堅牢なバックエンドの構築には、多くの場合、CRUDの運用、承認、およびビジネスロジックの広範なコーディングが含まれます。これは、時間のかかるプロセスです。 この記事では、HasuraとPostgreSQLがバックエンド開発を合理化し、最小限のコーディングの取り組みでより高速なアプリの起動を可能にする方法について説明します。
オープンソースのGraphQLエンジンである
Hasuraは、データベーススキーマからGraphQLとREST APIを自動的に生成します。 データモデリング、リアルタイムクエリ、イベントプログラミング、ロールベースの承認、およびGraphQLアクションを介したカスタムビジネスロジック実行をサポートしています。
強力なオープンソースリレーショナルデータベースであるPostgreSQLは、OracleおよびMicrosoft SQL Serverに匹敵するエンタープライズレベルの機能を提供し、大規模なアプリケーションに信頼できる選択肢となっています。 NetflixやSpotifyなどの企業が使用しているのは、その機能を強調しています。 Hasuraは他のデータベースをサポートしていますが、この記事では、アクセシビリティとオープンソースの性質のためにPostgreSQLに焦点を当てています。 MySQLサポートが計画されています
このガイドは、Webおよびモバイルアプリ向けのスケーラブルなバックエンドを構築するためのHasuraの機能を強調しています。 また、SQLを介してアクセスされるPostgreSQLの機能が複雑な計算と分析を実行し、カスタムサーバー側のコードの必要性を減らす方法も示しています。
重要な利点:
迅速なバックエンド開発:Hasuraの自動生成APIはコーディング時間を大幅に短縮します。
postgreSqlパワー:
データの整合性とパフォーマンスを強化するためのPostgreSQLの高度な機能(テーブル継承、並行性制御、JSON/空間データ型)を活用してください。
-
リアルタイム機能:Hasuraのリアルタイムクエリ、イベントプログラミング、およびロールベースの承認は、非常にレスポンシブなアプリケーションを作成します。
- 簡単な展開:監視やキャッシングなどの機能を備えたスケーラブルで安全なグローバルに分散したアプリケーションのために、ローカル開発またはhasuraクラウドを使用してhasuraを展開します。
包括的なWebコンソール:- Hasuraの直感的なWebコンソール内のデータモデリング、CRUD操作、および複雑なクエリを管理します。 認証およびファイルストレージプロバイダーと統合します
合理化されたワークフロー:
Hasuraの移行ツールと、開発と生産の間のシームレスな移行のために環境のステージングを利用して、CI/CDをサポートします。
-
なぜpostgresql?
- を選択するのか
PostgreSQLのようなリレーショナルデータベースは、スキーマモデリング、参加操作、酸トランザクションなど、データの整合性のために重要な他のデータベースタイプよりも利点を提供します。 PostgreSqlはさらに優れています:
-
テーブル継承:効率的なデータモデリング。
-
Advanced Concurrency Control:マルチユーザー環境で大量のデータを効果的に書き込みます。
- フォールトトレランスとデータの整合性:データの破損リスクを削減します。
- 一意のデータ型:JSONおよび空間データ型をサポートし、さまざまなアプリケーションに有益です。
PostgreSQLは、分析タスクのカスタム関数とトリガーを実行し、個別のサーバー側コードの必要性を排除する計算サーバーとしても機能します。 これは、
を使用して達成されます
ビュー:- 複雑なクエリを簡素化します。
関数と演算子:- 日付のフォーマット、パターンマッチング、算術演算を実行します。
拡張機能:
postgreSQLの機能(例:postgis)。-
手続き型言語:
ユーザー定義の関数とストアドプロシージャを書き込む(例:pl/pgsql)。
-
Hasuraは、GraphQLを介してこのPostgreSQLロジックを公開し、FrontEndアプリケーションに簡単にアクセスできるようにします。
postgreSqlの例:
例1(オンラインユーザービュー):現在アクティブなユーザーを取得するビュー:
半径1000メートル以内の店舗を見つける:CREATE OR REPLACE VIEW "public"."online_users" AS
SELECT users.id, users.last_seen
FROM users
WHERE (users.last_seen >= (now() - '00:00:30'::interval));
ログイン後にコピー
SELECT id, name, address, geom
FROM Seattle_Starbucks
WHERE ST_DWithin(geom, ST_MakePoint(-122.325959,47.625138)::geography, 1000);
ログイン後にコピー
Hasuraは、データベースのAPIを生成するオープンソースのリアルタイムGraphQLエンジンです。そのWebコンソールでは、を許可します
スキーマモデリング:テーブルの作成、関係の定義、およびデータの管理
crud操作:- アクションの作成、読み取り、更新、削除を実行します。
ロールベースのアクセス制御:- 粒状許可を実装します
GraphQL/RESTエンドポイントの作成:
データのAPIを生成します。-
sql実行:
カスタムsqlクエリを実行します。-
アクション&トリガー定義:
タスクを自動化し、イベントを処理します。-
-
注:Hasuraは、個別の認証プロバイダー(Auth0、Firebaseなど)とファイルストレージサービスとの統合が必要です。 nhostは統合されたソリューションを提供します。
hasuraの起動:![How to Build Your Backend with Hasura and PostgreSQL](https://img.php.cn/upload/article/000/000/000/173906413874892.jpg)
-
docker:ローカル開発に推奨され、簡単なセットアップとレートの制限なし。
- hasuraクラウド:監視やキャッシュ機能を含む、スケーラビリティ、セキュリティ、およびグローバル配信を備えた展開を簡素化します。 制限付きの無料ティアが利用可能です。
hasura機能(詳細な概要):
- データマネージャー:テーブルの作成、関係の定義、データ型(JSONおよびカスタムタイプを含む)の管理のためのVisual Schema Designer。
承認:- 挿入、選択、更新、および削除の粒状権限を備えた役割ベースのアクセス制御。
Queries:コンソール内でさまざまなGraphQLクエリ(シンプル、ネスト、集約、フィルタリング)を実行します。 -
突然変異: トランザクションをサポートして挿入、upSert、更新、削除操作を実行します。
-
subscriptions:WebSocketsを介してGraphQLサブスクリプションを使用してリアルタイムデータ更新を実装してください。
- リモートスキーマ:データとロジックについては、サードパーティAPIと統合します。
アクション:- プログラミング言語を使用してWebHooksを介してカスタムビジネスロジックを実行します。
イベントトリガー:
データベースイベントに基づいてWebhooksを呼び出します(挿入、更新、削除)。 手動の呼び出しをサポートしています。-
スケジュールされたトリガー:
定期的に(Cron)またはWebhooks経由で1回(1回限り)タスクを実行します。 -
移行と環境:- データベースとHasuraメタデータの移行ファイルを使用してスキーマの変更を管理し、CI/CDワークフローをサポートしています。
展開オプション: -
hasuraクラウド:
最も簡単な生産展開。
外部ホスティング:
Heroku、Digital Ocean、Render、Azure、Kubernetes、AWS(より複雑な)。
- nhost:postgreSQL、hasura、認証、ストレージを含むオールインワンBAASソリューション。
- 概要:
hasuraとpostgreSqlは、迅速なバックエンド開発のための強力な組み合わせを提供します。 コーディングの努力の削減、リアルタイム機能、堅牢な機能により、スケーラブルで保守可能なアプリケーションを構築するための魅力的なソリューションになります。 あらゆる面でいくつかの代替案ほど機能が豊富ではありませんが、その使いやすさ、パフォーマンスに焦点を当て、オープンソースの性質が重要な利点です。
よくある質問(FAQS):(提供されたFAQは既に包括的でよく書かれています。変更は必要ありません。)
以上がhasuraとpostgresqlでバックエンドを構築する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。