1

簡単に1GB(10GBになる可能性があります)のSQLiteファイルがあります。Office Wordと同様に、デスクトップアプリケーション(C ++)の「名前を付けて保存」および自動保存機能をエミュレートしたいと思います。私の考えでは、バックアップするたびにファイル全体のコピーを作成することは現実的ではありません。

SAVEPOINTの調査を開始しました。これはこれにアプローチする方法ですか?ただし、セーブポイントを使用して、コミット/リリースするまでではなく、セーブポイント間で作成した挿入をクエリできるかどうかはわかりません。

フィードバックをいただければ幸いです。

また、一歩下がって、この名前を付けて保存/自動保存のメカニズムが良いアイデアかどうかを考えています。現在、すべてのSQLコマンドをファイルに即座に保存しています(たとえば、ユーザーテキストをテーブルのコメントフィールドに保存しています)。アプリケーションに元に戻す/やり直し機能が実装されています。大きなsqliteファイルでデスクトップアプリケーションを作成している人はいますか?

4

1 に答える 1

2

それはあなたのアプリケーションが何をしているかに依存します。行を挿入および削除するだけの場合は、簡単に元に戻すことができます(履歴テーブルを保持します。実行間で保持したい場合を除いて、一時テーブルとして最適です)が、元に戻る/やり直し機能を無効にします)。 SQLiteでは、テーブルの作成後に変更できるのはごく限られているため、元に戻すのはさらに困難です(たとえば、列を削除するには、テーブルをコピーして古いテーブルを削除する必要があります)。とはいえ、変更のたびにコミットしている限り、ユーザーに表示される保存アクションのないアプリケーションを作成できます。コミットするたびに、変更をディスクに自動的に永続化するだけです。

「名前を付けて保存…」機能は、データを新しいファイルにコピーする必要があるため遅くなります。また、HDDの代わりにSSDを使用している場合でも、複数のGBでは時間がかかります。本当に必要ですか?ユーザーは、データベースファイルを自分でコピーすることができます(SQLiteはそのように優れています)。ただし、その時点でアプリケーションでデータベースファイルを開いていない場合に限ります。

于 2012-04-04T08:51:56.947 に答える