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

PostgreSQLデータベースを使用してWebアプリで完全なオフライン機能を使用するにはどうすればよいですか?

    簡単な答え:現在このようなものが存在することはわかりません。

    ただし、理論的には、これを機能させることができます...(長い答え:)

    1. レベルアップ用のPostgreSQLバックエンドを作成します(MySQL用に1つ存在します:https://github.com/kesla/mysqldown)
    2. pouch-serverを接続して、pouchdbの既存のleveldbアダプターを使用してPostgreSQLデータベースから読み取り/書き込みを行います(これは、postgresバックエンドを使用するように構成する必要があります)。おめでとうございます。PouchDBを使用してデータを同期できるようになりました!

    このようなアプローチがアプリケーションにとって実際に実用的であるかどうかは、答える必要のある別の質問です。

    たとえば、「このアプローチを使用して、複数のテーブルを持つ既存の複雑なスキーマをクライアントに同期できるか」と疑問に思われるかもしれません。答えはおそらくそうではありません-leveldownのmysqldown実装は、3つのフィールドを持つ単一のMySQLテーブルを使用します:idkey 、およびvalue (ソース)、そして私はどんな汎用PostgreSQLアダプターも似ていると思います(しかし、あなたのアプリのためだけに特別な目的のアダプターを作ることができないとは何も言いません!)

    一方、既存のデータベーススキーマにcouchdb互換のAPI(またはサブセット-たとえば、添付ファイルは必要ない場合があります)を実装する場合、クライアントでPouchDBを使用して直接通信することを妨げるものは何もありません。実際のCouchDBであるかのように-URLを入力して、replicate()を呼び出すだけです。 !どこかでリビジョンなどを追跡する必要があるため、レプリケーションプロトコルの実装はかなりの作業になる可能性がありますが、技術的には不可能ではありません。

    ブラウザ用に設計されたレベルアップのバックエンドストレージの実装もあります。 level.jsを参照してください。これは、サーバー側のPostgresレベルアップバックエンドとブラウザーの間で同期する別の方法である可能性があります。

    TL; DR :現在、Javascriptデータベースに関して多くの作業が行われています。 Postgresとの同期は不可能ですか?おそらくそうではありません。大変な作業になりますか?間違いなく。価値がある?誰が知っていますが、それはクールでしょう。



    1. MySQLとPostgreSQLのHAProxy統計を理解する

    2. LaravelOrderByリレーションシップカウント

    3. エラー「ORA-01790:式は対応する式と同じデータ型である必要があります」を修正しました

    4. MySQLクエリでテキストを数値に変換する