1

サーバー上の共通データベースにアクセスするスタンドアロンアプリケーションを開発しています。私の組織では数十人が使用します。

ソフトウェアとデータベースの設計を更新する必要があることはわかっています。これにより、誰かが古いソフトウェアを使用してデータベースに対してクエリを実行する可能性が生じます。

私はすでに、ユーザーが古いバージョンのアプリケーションを起動しようとした場合にキャッチするシステムを導入しています。ただし、これは、ほとんどの時間アプリケーションを維持している人を防ぐものではありません。

私のアイデアは、データベースにバージョンエントリ(tblVersionなど)を配置し、DB内のテーブル(tblVersionを除く)のレコードが追加、更新、または削除されるたびにチェックすることでしたが、単に読み取るだけではありません。

このようにして、ユーザーが古いバージョンのSWを使用している場合でも、(私が思うに)DBを破損する可能性があるものを見つけることができます。DBのバージョンをコードの内容と照合し、追加、更新、または、不一致がある場合は操作を削除します。同時に、DB読み取りのtblVersionに多くのチェックのオーバーヘッドを追加することはありません。

私の質問: これは音ですか?それについて行くより良い方法はありますか?もしそうなら、何ですか?

ありがとう!

4

3 に答える 3

1

tblVersionのアイデアはおそらくかなり健全だと思いますが、ユーザーがデータベースへの書き込みを試みるのを待つのではなく、起動時にチェックしてすぐに失敗することを検討したいと思います。

これが有益である理由はいくつかあります。

  1. バージョンを繰り返し確認する必要がなくなります。特に多くのユーザーがこのシステムを使用している場合は、起動時にこれを1回実行して、かなりの数のクエリを保存できます。
  2. これらのチェックでデータアクセス層を散らかす必要はありません。
  3. 書き込みをチェックすることは、とにかく最高のユーザーエクスペリエンスではないでしょう。ユーザーは、レコードをロードし、いくつかの編集を実行するのに数分を費やし、データベースが古くなっているため、それらすべてを放棄する必要があります。彼らがデータベースで何も役に立たない場合は、編集を終えた後ではなく、事前に知らせてください。

少なくとも、アプリの起動時に確認し、アプリケーションをロードするとすぐに何も保存できないことをユーザーに警告する必要があります。

于 2009-07-22T21:28:09.810 に答える
1

互換性のない新しいアプリのロールアウトが発生し、データベーススキーマ(または解釈)が構造的に互換性があるが意味的に互換性のない方法で変更されるほど長い間アプリを開いている人のユースケースはかなり狭いようです。

現在のスキーマバージョンと最後の互換性のあるバージョンの2つのタプルを持つschemaInfoテーブルを使用すると、アプリケーションを過度に複雑にすることなく、ほとんどの場合に対応できます。

シナリオを本当に心配している場合は、すべての書き込みをチェックするのはひどい混乱です。テーブルのバージョンをチェックし、新しいバージョンを取得するようにユーザーに警告するダイアログをポップアップするタイマーを1〜2時間ごとにオフにします。

さらに良いことに、スキーマの変更が完了したら、DBをバウンスして、既存のすべてのセッションを強制的に切断することができます。

于 2009-07-22T21:36:19.780 に答える
1

私はそれがうまくいくと思います。

ただし、少し違うものをお勧めします。

これには2つの部分があります。

  1. 必須とオプションの2種類の更新を検討してください。アイデアは、更新が必要なときにソフトウェアがより強力に自分自身を更新するということです。そして、開発者としてのあなたは、必要と思われる場合にのみ、必要に応じて更新にフラグを立てます。私は同様のタイプのアプリケーションに取り組んでいますが、実際にはデータベースとはまったく関係のない多くの更新があります...これらはオプションである必要がある更新のタイプです。
  2. 現在のバージョン番号を毎分データベースに照会するコードをアプリケーションに追加します。現在実行中のバージョンが古く、最新の更新が必要な場合は、ユーザーに更新の取得を要求するダイアログボックスをポップアップします。アプリケーションによっては、ユーザーが作業を保存できるようにするコードを追加する必要がある場合もあります。

このアプローチに従えば、更新が必須かオプションかに関係なく、起動時にアプリケーションを自動的に更新できると思います。しかし、ユーザーが実際にアプリケーションを使用している間、私は必要な更新についてユーザーを悩ますだけです。

于 2009-07-22T21:40:54.140 に答える