みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
MacMini OS10.10, FmServer 14の共有環境で、現在値をグローバルで持って、最大値+1でユニーク値を発生するスクリプトを使っています。
当初、年間数千のユニーク値が発生する想定をしていましたが、ユーザーが多くて年間2万件程度に増えてきて、想定外のエラー(重複)が出るようになっています。外部からもアクセスがあり、一部でADSL環境で利用しています。
FMの仕様として、
1)フィールドが移動した時にデータが確定する
2)グローバル値はユーザーの端末に記録される
3)ユニーク設定したフィールドに秒レベルの同時アクセスがあるとそれぞれのクライアントに同じ値が付与され、その後エラーメッセージが出る
という理解をしていますが、
A.この仕様の理解は正しいでしょうか?
B.開発当初は問題が出ていないことから、最大値データを探す処理が遅くなっているような気がします。
例えば、5000データから最大値を探す場合と20000データから探す場合でどの程度の差がある(はず)か、経験値または理論値が分からないでしょうか?
C.この課題を解決したいですが、まず、Bの影響が大きいということであれば、不要データの削除をしてみたいと思います。さらに、安全策として、ユニーク設定を外して、何かのイベントが発生したらまたは時間が経過したら、重複値に+1を足すようなことも考えようと思います。共有データのユニーク値の確保について皆さんのお知恵をお借りしたいですがよろしくお願いします?
Offline
単にユニーク値でいいのでいたら、UUID などの値を使われると良いでしょう。
http://www.filemaker.com/help/15/fmp/ja … ect_header
レコード番号は一応ユニークになるのですが,将来の事を考えて推奨されていません。
Offline
入力値の自動化 - シリアル番号でいいのでは。
Offline
Shinさん、yayaさん。早速の回答ありがとうございます。
Shinさん:
UUIDは初めて知りました。しかし、既に運用中ということと、文字数が多くて後の管理が大変そうですので、検討はしますが、当面新規プロジェクトから考えようと思います。
yayaさん:
「入力値の自動化」ですと、リンクを貼って置いて(ほぼ)同時またはネット遅延の場合にアクセスされても不整合は起きないでしょうか?
少しずつ、悪化したような気がしますが、データ増加に伴う処理時間でどなたか経験値は無いでしょうか?
Offline
一度、最適化保存をしてみてはいかがでしょう。劇的に変わる可能性がありますよ。
Offline
Shinさん:
>一度、最適化保存をしてみてはいかがでしょう。劇的に変わる可能性がありますよ。
気づきませんでした。デー多数を減らすことと、この処理に期待をしてみます。アドバイスありがとうございました。
Offline
「最大値+1」とは「Max(some_field) + 1」のことだと思いますが、これはレコード数が増えると確実に遅くなります。
入力値のシリアルはレコード作成時に瞬時に決定するので計算時間は取られないと思います。
不整合については、そこまでシビアな環境がないので経験がありませんが、ユニーク値に限定しておけば、番号がダブった時にエラーになるから問題ないと思います。
標準の機能を試してみて、駄目なら対策を考えればいいのではないでしょうか。
Offline
Pages: 1
[ Generated in 0.008 seconds, 9 queries executed - Memory usage: 558.49 KiB (Peak: 581.65 KiB) ]