みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
FileMaker 12 Advanced
ODBC接続は完了しています。
接続先のレコードは2億レコード(毎日10万レコード以上増加)
上記レコードをFileMakerにてローカルテーブルに取り込みたいのですが非常に時間がかかります。
条件としては、ほぼリアルタイムもしくは1分以内に取り込める環境を目指しております。
差分取り込みなど方法がありますでしょうか?
みなさまの知恵を頂きたく質問させていただきます。
よろしくお願いします。
12万件の郵便番号データをファイル内で新規テーブルにインポートするだけで、4分以上かかりました。
2億を1分でやるには1秒に300万レコード作らないといけないので、とても無理でしょう。
今回は差分取り込みをお伺いしたく質問させてもらいます。
初回の取り込み時間は承知のうえです。
レコードに変更なしで増加分をインポートするだけなら、SQLでレコードのタイムスタンプとかシリアル番号とかを検索すればいいでしょうけど、
変更された分も必要なら、毎回2億レコードを照合しないといけないですよね。
FM負荷が最小の方法を検討する。ODBCインポートや差分照合インポートは言語道断!
差分だけのCSVファイルを出力してもらい単純CSVインポートとか。
それでも差分10万レコードの1分内インポートの条件は辛いかも?
Offline
finder様、Hiro様
>レコードに変更なしで加分をインポートするだけなら、SQLでレコードのタイムスタンプとかシリアル番号とかを検索すればいいでしょうけど、
>変更された分も必要なら、毎回2億レコードを照合しないといけないですよね。
ODBCインポートならSQLクエリで処理対象日を絞りインポートできます。
>FM負荷が最小の方法を検討する。ODBCインポートや差分照合インポートは言語道断!
ローカルテーブルにODBC接続先のレコードを追加するのはインポートしか無いということでしょうか?
ODBC経由の差分インポートは、とりあえずその管理キーのみを取得しておいて、1レコードごとにクエリーを発生させて取り込む、という動作を行なっているようです。FMからのODBCは非常に鈍足で、10万件で数十分でもキツイかも。差分照合させると、更に遅くなります。
例えば、10分ごとのバッチにしておけば、理論的には2000件程度になるので、ぎりぎり1分程度で処理できるかも。
CSVのファイル渡しにするか、基幹側からXMLでweb連携を行う、などのほうが早いでしょうが、それでも10万件は10分程度は必要でしょうね。
Offline
調査の結果、時間帯にもよりますが1分間に30件程度増加することがわかりました。
ODBCインポートはスクリプトの自動化を行い
SQLクエリで「WHERE VTS LIKE TO_CHAR(sysdate,'yyyymmdd') || '%'」
とすることによりVTS行に含まれる日付テキストで本日分のみをユニークな値で差分インポートできます。
しかしながら、インポート作業のたびにODBC接続を行うため完了までに時間を要しています。(インポート作業自体は1分以内に完了する)
次のことを教えていただきたいです。
1.外部テーブルをFileMaker側にて読み込ますことは可能だが上記に示したSQLクエリー(WHERE VTS LIKE TO_CHAR(sysdate,'yyyymmdd') || '%')での結果のみを反映することは可能か?
2.スクリプトステップでODBC接続をスクリプト実行の間(インポート作業のLoop)はconnectionを不必要とできるか?
よろしくお願いします。
viewを作らないと無理だと思います。
外部テーブルがあれば常時接続してるという話みたいですが。サーバというかODBCドライバによりけり?
viewを作れない場合に、ODBCからのインポートが外部テーブルと同じ接続を使うかどうかは不明。
接続が残るというのは、これでした。たぶんMSのSQLServerですね。
https://fm-aid.com/bbs2/viewtopic.php?id=274
WHERE文に sysdate,'yyyymmdd' を使用しておりましたが、CSEツールにてyyyymmddに本日の日付を
代入する時に時間を要していることが判明。
さらに1日2万レコードということも判明。
ODBCインポート時のSQLクエリーを計算済みフィールドを指定することによりyyyymmddの部分に本日の日付をFileMaker側で代入し
インポートすることによることにより運用レベルのレスポンスを得ました。
皆様ご指導ありがとうございました。
解決したのは良かったけど、FM側は全然関係なくって実行するSQL文がまずかっただけなのねorz
Oracleみたいですけど、ほんとにsysdateに時間がかかるのかな。まあいいですけど
FM初心者です。質問させてください。説明が苦手なのでうまく伝わるかわかりませんが・・・。
データ元からインポートしたいデータが複数あり、一つのテーブルに複数個データをインポートし表示させたいのですが、何か方法はありませんか?
すいません。
投稿する場所間違えました。
Pages: 1
[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 572.43 KiB (Peak: 589.34 KiB) ]