SQLpage はSQL専用の Web アプリ ビルダーです。データ サイエンティスト、アナリスト、ビジネス インテリジェンス チームが、従来の Web プログラミング言語や概念を気にすることなく、強力なデータ中心のアプリケーションを迅速に構築できるようにすることを目的としています。
SQLPage を使用すると、データの選択、グループ化、更新、挿入、削除を行うためのクエリを含む単純な.sql
ファイルをデータベースに書き込むことができ、データをテキスト、リスト、グリッド、プロット、フォームとして表示する見栄えの良いきれいな Web ページを取得できます。 。
コード | 結果 |
選択 コンポーネントとして「リスト」、タイトルとして「人気の Web サイト」;SELECT タイトルとして名前を付け、 URLをリンクとして、 ケースタイプ WHEN 1 THEN '青' ELSE '赤' 色としての終わり、 説明、アイコン、アクティブな Web サイトから; | |
コンポーネントとして「チャート」、タイトルとして「四半期収益」、タイプとして「エリア」を選択します。 四半期 AS x、SUM(収益) AS yFROM 財務GROUP BY 四半期 | |
コンポーネントとして「フォーム」、タイトルとして「ユーザー」、検証として「新しいユーザーの作成」を選択します。 名前、タイプ、プレースホルダー、 必須、説明FROM user_form;INSERT INTO userSELECT $first_name、$last_name、$birth_dateWHERE $first_name IS NOT NULL; | |
コンポーネントとして「タブ」を選択し、中央として true を選択します。タイトルとして「すべてのカードを表示」を選択し、「?」を選択します。リンクとして、 $tab はアクティブなので null;選択 format('%s カードを表示', color) をタイトルとして、 format('?tab=%s', color) をリンクとして、 $tab=tab_example_cards からアクティブな色を色ごとにグループ化します。 コンポーネントとして「カード」を選択;選択 タイトル、説明、色 image_url を top_image、linkfrom tab_example_cards、$tab は null または $tab = color、コンポーネントとして「text」を選択、contents_md として sqlpage.read_file_as_text('footer.md') |
SQLite ( Spatialiteなどの拡張機能をロードする機能を含む)。
PostgreSQL、およびYugabyteDB 、 CockroachDB 、 Auroraなどの他の互換性のあるデータベース。
MySQL、およびMariaDBやTiDBなどの他の互換性のあるデータベース。
Microsoft SQL Server、および互換性のあるすべてのデータベースとプロバイダー ( Azure SQLやAmazon RDSなど)。
SQLPage の Web サイトにある公式のスタートガイドをお読みください。
最も簡単に始める方法は、リリース ページから最新リリースをダウンロードすることです。
オペレーティング システム (Linux、MacOS、または Windows) に対応するバイナリをダウンロードします。
解凍します: tar -xzf sqlpage-*.tgz
実行します: ./sqlpage.bin
サーバー上で実行するには、docker イメージを使用できます。
ドッカーをインストールする
ターミナルで次のコマンドを実行します。
docker run -it --name sqlpage -p 8080:8080 --volume "$(pwd):/var/www" --rm lovasoa/sqlpage
( "$(pwd):/var/www"
により、sqlpage は現在の作業ディレクトリから SQL ファイルを実行できます)
この例の内容を使用して、index.sql というファイルを作成します。
ブラウザで https://localhost:8080 を開きます
オプションで、sqlpage の構成ファイル、カスタム コンポーネント、および移行 (configuration.md を参照) を含むディレクトリをコンテナ内の/etc/sqlpage
にマウントすることもできます。
docker run -it --name sqlpage -p 8080:8080 --volume "$(pwd)/source:/var/www" --volume "$(pwd)/configuration:/etc/sqlpage:ro" --rm lovasoa/sqlpage
たとえば、次のように使用できます。
Web サイトをsource
という名前のフォルダーに配置し、 sqlpage.json
configuration
という名前のフォルダーに配置します。
独自の Docker イメージを構築する場合、生の sqlpage イメージをベースとして使用することはお勧めできません。これは、このイメージが極端に削ぎ落とされており、必要な依存関係が含まれていない可能性があるためです。代わりに、debian をベースとして使用し、sqlpage バイナリを公式イメージから独自のイメージにコピーするだけです。
FROM debian:stable-slimCOPY --from=lovasoa/sqlpage:main /usr/local/bin/sqlpage /usr/local/bin/sqlpage
x86_64 アーキテクチャ用にのみコンパイルされたバイナリを提供しますが、arm64 や armv7 などの他のアーキテクチャ用の Docker イメージも提供します。 Raspberry Pi または安価な ARM クラウド インスタンスで SQLPage を実行したい場合は、Docker イメージを使用するのが最も簡単な方法です。
Mac OS ユーザーの代替手段は、SQLPage の自作パッケージを使用することです。
自作をインストールする
ターミナルで次のコマンドを実行します。
brew install sqlpage
SQLPage は、Rust で書かれ、単一の実行可能ファイルとして配布される Web サーバーです。 .sql
で終わる URL へのリクエストを受信すると、対応する SQL ファイルを見つけてデータベース上で実行し、Web リクエストからの情報を SQL ステートメントのパラメータとして渡します。データベースがクエリに対して行を返し始めると、SQLPage は行内の各情報を事前定義されたコンポーネントのテンプレートの 1 つのパラメータにマップし、結果をユーザーのブラウザにストリーミングして返します。
TODO リスト: SQLPage を使用して基本的な CRUD アプリケーションを作成する方法を示す、単純な Todo リスト アプリケーション。
プロット、テーブル、フォーム、およびインタラクティブ性: プロット、テーブル、フォーム、およびインタラクティブ性を使用して、URL パラメーターに基づいてデータをフィルター処理する方法を示す、短いコメント付きのデモ。
小さなスプリットワイズ クローン: 共有経費トラッカー アプリ
Corporate Conundrum: SQL で実装されたボード ゲーム
マスター/詳細フォーム: 1 対多の関係を持つデータベース テーブルにデータを挿入するための単純なフォーム セットを実装する方法を示します。
SQLPage 自身の公式 Web サイトとドキュメント: プロジェクトの公式サイトの SQL ソース コード、https://sql.datapage.app
画像ギャラリー: ユーザーがログインして画像をアップロードできる画像ギャラリー。セッション Cookie を使用したユーザー認証システムの実装と、ファイルのアップロードの処理を示します。
ユーザー管理: ユーザー登録、ログイン、ログアウト、機密ページを含む認証デモ。 PostgreSQLを使用します。
JSON API の作成とフロントエンドでの React コンポーネントの統合:SQLPage Web サイトに React コンポーネントを統合する方法と、SQLPage を使用して REST API を簡単に構築する方法を示します。
ファイルのアップロードの処理: 認証されたユーザーがアップロード フォーム経由で新しい画像を公開できる画像ギャラリー。
CSV ファイルからの一括データ インポート : ユーザーが CSV ファイルをインポートしてデータベース テーブルに記入できるシンプルなフォーム。
PostgreSQL ストアド プロシージャを使用した高度な認証の例
ユーザー管理、ファイルのアップロード、プロット、マップ、テーブル、メニューなどを備えた SQLite の複雑な Web アプリケーション
シングル サインオン: SQLPage で OAuth および OpenID Connect (OIDC) 認証を実装する方法の例。このデモには、CAS (中央認証サービス) クライアントも含まれています。
ダーク テーマ : ユーザーがライト テーマとダーク テーマを切り替え、ユーザーの設定を保存する方法を示します。
SQLPage の replit のオンライン デモを使用すると、コンピューターに何もインストールせずに、すべての例をオンラインで試すことができます。
SQLPage はsqlpage/sqlpage.json
に配置された構成ファイル、またはDATABASE_URL
やLISTEN_ON
などの環境変数を通じて構成できます。
詳細については、 configuration.md
参照してください。
さらに、 .handlebars
ファイルをsqlpage/templates
に配置することでカスタム コンポーネントを作成できます。例。
SQLPage は、HTTP/2 と HTTPS をネイティブかつ透過的にサポートします。 SQLPAGE_HTTPS_DOMAIN=example.com
を設定するだけで、SQLPage は自動的に信頼できる証明書を要求し、それを使用してすべてのユーザーのトラフィックの暗号化を開始します。面倒な手動設定は必要ありません。また、ユーザーに迷惑な「接続は安全ではありません」というメッセージを表示する必要もありません。
SQLpage を AWS Lambda 関数にコンパイルすることで、サーバーレスで実行できます。これを行う簡単な方法は、提供されている docker イメージを使用することです。
docker build -t sqlpage-lambda-builder 。 -f lambda.Dockerfile --ターゲット ビルダー docker run sqlpage-lambda-builder catdeploy.zip > sqlpage-aws-lambda.zip
その後、独自の SQL ファイルをsqlpage-aws-lambda.zip
に追加し、ランタイムとしてAmazon Linux 2 のカスタム ランタイムを選択して AWS Lambda にアップロードするだけです。
サーバーレスを実行する場合、展開するイメージに SQL ファイルを直接含めることができます。ただし、新しいイメージを作成せずに SQL ファイルをオンザフライで更新できるようにしたい場合は、ファイルをデータベース内の次の構造を持つテーブルに直接保存できます。
CREATE TABLE sqlpage_files( path VARCHAR(255) NOT NULL PRIMARY KEY, コンテンツ BLOB、 last_modified TIMESTAMP DEFAULT CURRENT_TIMESTAMP);
ファイルの内容を更新する (または TRIGGER 内で更新する) たびに、必ずlast_modified
更新してください。 SQLPage は、ファイルが変更された場合にのみデータベースからファイルを再解析します。
actix web は HTTP リクエストを驚異的な速度で処理します。
tabler は、プロフェッショナルな外観のクリーンなコンポーネントのスタイリングを処理します。
tabler アイコンは、SQL から直接選択できる大規模なアイコンのセットです。
ハンドルバーは、各コンポーネントの読み取り可能なテンプレートから HTML ページをレンダリングします。
実際のプログラミング言語の代わりに SQL を使用するのはなぜでしょうか? SQL はチューリング完全でもありません。
あなたは間違った問題に焦点を当てています。アプリケーションを宣言的に表現できる場合は、SQL を使用するか別の言語を使用するかにかかわらず、宣言的に表現する必要があります。多くの場合、宣言型コードは命令型コードよりも簡潔で読みやすく、推論が容易で、デバッグが容易です。
SQL は従来の言語よりも単純で、多くの場合プログラマでなくても読むことができますが、非常に強力です。
複雑さが目標の場合、SQL は実際にはチューリング完全であることに注意してください。
再帰クエリがない場合でも、ユーザー操作 (SQLPage など) によって駆動される一連の SQL ステートメントは依然としてチューリング完全であり、チューリング マシンとして機能する SQL ベースの Web サイトを構築できます。
できるからといって、そうすべきというわけではありません...
— Redditで誰かが意地悪をしている
それは「すべきだ」ということではなく、「なぜそうしないのか」ということなのです。必要に応じて線の内側に色を付け続けてください。ただし、ここでは SQL Web サイトを楽しむことにします。
これはMicrosoft Accessと同じですか?
シンプルなデータ中心のアプリケーションを作成するという目標は似ていますが、ツールは大きく異なります。
SQLPage は Web サーバーであり、デスクトップ アプリではありません。
SQLPage は既存の堅牢なリレーショナル データベースに接続します。 Access はデータベースになろうとします。
アクセスは高価であり、独自のものです。 SQLPage はオープンソースです。
SQLPage を使用すると、Visual Basic for Applications の苦しみから解放されます。
この名前は Microsoft FrontPage を参照したものですか?
FrontPage は、90 年代後半に人気があった視覚的な静的 Web サイト ビルダーです。誰かに聞かれるまで知りませんでした。
CSSが好きです。 SQL を書くのではなく、Web サイトをデザインしたいのです。
独自の HTML と CSS を記述したい場合は、 sqlpage/templates
に.handlebars
ファイルを追加し、そこに HTML と CSS を記述することでカスタム コンポーネントを作成できます。 (例)。 html
コンポーネントを使用して生の HTML を記述したり、 shell
コンポーネントを使用してカスタム スクリプトやスタイルを含めたりすることもできます。
しかし、SQLPage では、実際に動作するプロトタイプが完成するまでは、ボタンの境界線の半径について心配する必要はないと考えています。すぐに使える見栄えの良いコンポーネントが提供されるため、データ モデルに集中して迅速に反復できるようになります。
SQLPage は、複数のソースからダウンロードできます。
寄付を歓迎します! SQLPage は Rust で構築されており、フロントエンド部分にはバニラ JavaScript を使用します。
開発セットアップ、テスト、プル リクエスト プロセスの詳細な手順については、貢献ガイドをご覧ください。