初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2019-06-15 12:59:58

hifumin50
Member

FileMaker18 ESSについて

皆様こんにちは。
質問させて下さい。
2000万件のテーブル(MySQL)を集計して出力する場合は、
ODBC データ取込みで、MySQLのViewテーブルを読み込んで処理すると早いのですが、
MySQLにレコード単位で投入する場合はESSから投入しても速度的に問題ないのでしょうか?
それともinsertやupdateする時も「SQLを実行」した方がよいのでしょうか?
その時にトランザクションをかけられるものでしょうか?

色々調べてみたのですが、イマイチ理解できなかったのです。
何卒よろしくお願いします。

Offline

#2 2019-06-15 15:06:31

Hiro
Member

Re: FileMaker18 ESSについて

FMのSQL動作は概して酷く遅いところに、更にESSは非常に凡長な処理プログラムのようで、あまり本格的実用には供さないというのが通説になっているようです。
ESSは導入が楽ですから、一度ご自身でちょっと体感して判断されると良いかもしてません。

Last edited by Hiro (2019-06-15 15:15:49)

Offline

#3 2019-06-15 16:16:28

hifumin
Guest

Re: FileMaker18 ESSについて

Hiro様
ご返信ありがとうございます。

大量データの集計などはFMだとテストの際に酷く遅くなる事は実験済みで、
集計などはMySQLでView Tableを介してODBC取込みを実行してレスポンスは確保できたようなのです。
レコード投入に関してもESSからで問題ないように見えているのですが、ESS経由でのMySQLのupdateやinsert処理はFMS側で
トランザクション処理が出来ているのか実験方法が思いつかずなのです。。。

FMServer18 は2000万件程度のレコード数を取り扱う事は普通なのでしょうか?

環境
FileMakerServer18
Windows2012Server IIS+PHP7.2 + MySQL8
同時接続 : 50

#4 2019-06-15 19:06:15

Hiro
Member

Re: FileMaker18 ESSについて

ESSとトランザクションの解説資料は少なく、オフィシャルpdf公開資料ぐらいかな...。
【 FileMakerデータベースとSQLデータベースとの統合活用 】
読んでいただければ、ほほご質問の解説があると思います。更なる個別疑問が出たら、その個別テーマでググって調べてください。

【※ KEYPlanning木下氏 著pdf公開資料 のP18から要点箇所のみ一部抜粋】(全体も後で熟読ください。)

ページ18  【 FileMakerデータベースとSQLデータベースとの統合活用 】

■ESS に適していないシステム例

ここでは、あえて ESS には向いていない用途の例も挙げてみたいと思います。
    1. 高度なパフォーマンス・チューニングが必要なシステム
    2. トランザクション制御が必要なシステム

「ESS の位置づけ」の章で触れたように、ESS が開発された目的は「FileMaker によるシステムに SQL データベース をシームレスに統合すること」です。SQL の知識が不要で、FileMaker 上の操作を自動的に SQL に翻訳するという ESS の特徴は、見方を変えれば「パフォーマンス・チューニングの余地が少ない」ことになります。

大きな効果が期待できるチューニングは、索引設定、ビュー作成といった SQL データベース上での作業になりますので、 まずはそれを試してみます。また、必要以上に SQL データベースへの問い合わせが発生しないよう、リレーションの 階層、画面構成や操作フローを目的別に絞り込んでみましょう。

それで期待した速度がえられない場合には、ESS ではなく、自分の好きな SQL クエリー文を生成することができる ODBC インポート、[SQL を実行]スクリプトで代替できるかを検討するような順序になるでしょう。

また、FileMaker は[レコードを開く]スクリプトによって、1レコード単位でロックする機能はありますが、 commit、rollback による、いわゆるトランザクションの機能はありません。FileMaker テーブルでは、処理速度を犠 牲にすれば擬似的なトランザクション制御も可能ですが、シャドウテーブル上では[レコードを開く]スクリプトが効 果を持たないので、一括更新の処理で一貫性を保つことは極めて困難です。

FileMaker から SQL データベースに対する一括更新が必要な場合は、ESS ではなく、[SQL を実行]スクリプトでの 実現を検討することになります。

Last edited by Hiro (2019-06-15 20:43:42)

Offline

#5 2019-06-16 09:26:54

hifumin50
Member

Re: FileMaker18 ESSについて

Hiro様
丁寧なご説明ありがとうございます。
精査した結果、年間投入レコード数は38万件(5年間の運用で190万件)が上限と解析できましたので、
MySQL(ESS)ではなくてFileMakerでデータ保持しても大丈夫かなと思いはじめてます。
しかし、集計業務が多く1画面で4個くらいのピボットテーブルが必要なレイアウトも多いのです。
MySQLで保持しておけば、SQLで集計しViewTableから引っ張ってこれるのですが、レイアウトも複雑になりそうで躊躇しています。。。
FileMakeerで簡単にピボット表示できる手はありますでしょうか?
よろしくお願い申し上げます。

FMS18  Windows2012 IIS & PHP7.2

Offline

#6 2019-06-16 13:40:58

Hiro
Member

Re: FileMaker18 ESSについて

なる程、FMの弱点・能力不足を外部SQLでカバー、という発想ですか?
アイデアは良いのですが、実装は本末転倒で全くの逆効果ですネ!

そのアイデアを生かして、このような展開・構成に是正するのは如何でしょう?
「外部SQLサーバ 対 FMクライアント」→「FMS内SQLサーバ 対 FMP内SQLクライアント」
要するに、FMサーバ・クライアントで「SQLクエリー(ExecuteSQL)」を使う手法です。

詳しくは、とりあえず以下などの例を参考ください。
・関連過去ログid#8199:『FileMaker CloudにおけるExecuteSQL関数のパフォーマンスってどうですか?
・関連解説例:『FileMaker ExecuteSQL関数に対するSQLインジェクションの考察
・関連解説例:『FileMaker - ExecuteSQLの結果をVirtual Listとして利用する

Offline

#7 2019-06-16 16:37:57

hifumin50
Member

Re: FileMaker18 ESSについて

Hiro様
ありがとうございます(m__m)
まさにこれです!!
サーバーサイドでSQLを回して、結果だけを受け取る手法。
これやってみたいです。
早速ExecuteSQLでvirtualListを取得し、思った感じにできるかトライしてみます。
FileMaker自体何年も触っていないので浦島太郎状態なのです。
なのでちょっと理解して実装するまでに時間かかるし、多分初歩的な事でまた投稿すると思います(泣)
何卒よろしくお願い申し上げます。

Offline

#8 2019-06-16 19:56:45

Hiro
Member

Re: FileMaker18 ESSについて

拙い説明で即核心を理解されたので、こちらも嬉しいです。
最近のFM機能をキャッチアップして行くのも大変ですよネ。

今回の件でググってたら、こんな関連ページ※があって、
今風で思い付かないグッドな活用法だなあと刺激を受けましたので、
チョット紹介しておきますネ。

>※『FileMakerが苦手な"集計"で販売実績などをサクッと見たい時

Offline

Registered users online in this topic: 0, guests: 1
[Bot] ClaudeBot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.007 seconds, 9 queries executed - Memory usage: 536.9 KiB (Peak: 541.8 KiB) ]