みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
いつもお世話になっております、ファイルメーカーの処理速度に関する質問です。
ファイルメーカーを使用してネット通販サイトにおける商品管理にまつわるシステムを構築しております。
最初は品番や値段などの情報を格納する程度だったのですが、開発が進むにつれて徐々に処理速度が重くなってきています。
今現在は1つのファイルメーカーファイル内に以下のような内容でテーブルを構築しています(ほんの一部の例となります)
・商品マスタテーブル(ブランド名や商品カテゴリ情報、リンク付き画像HTML※1などを格納)
・ブランド別テーブル(ブランド毎の説明文や、ブランド別のリンク付き画像HTMLリストなどの情報を格納)
・商品カテゴリ別テーブル(商品カテゴリ毎の説明文や、商品カテゴリ別のリンク付き画像HTMLリストなどの情報を格納)
※1 リンク付き画像HTMLは、以下のようなHTMLソースです
<a href="商品購入ページURL"><img src="商品画像URL"></a>
ブランド名や商品カテゴリ名を基準にリレーションを行い、ブランド別やカテゴリ別に、リンク付き画像HTMLリストを並べる等して商品一覧ページを構築しています。
このような場合、ひとつのファイルメーカーファイルで複数のテーブルを用意するよりも、
以下のように複数のファイルメーカーファイルを用意して、それぞれのファイルへアクセスする方が処理速度的には有利なのでしょうか?
・商品マスタファイルメーカーファイル
・ブランド別ファイルメーカーファイル
・商品カテゴリ別ファイルメーカーファイル
また、このようにファイルを分ける場合、今現在のように、ブランド名や商品カテゴリ名を基準にリレーションをする事は可能なのでしょうか?
過去に、計算フィールドを多用し過ぎて処理速度がとても重くなった事があり、
その時は計算フィールドをテキストフィールドに変更し、スクリプトで適時更新を行う、といった形に仕組みを変更して速度を向上したのですが、
最近はそれでも重くなってきてしまい、また、更に大規模なシステム開発も予定しており、
現在の仕組みのまま開発すべきか、それともファイルを分けるなど基礎的な部分の仕組みを変更すべきか悩んでいます。
PCのスペックに関してはメモリ128GBと、他もかなりハイスペックなので、これ以上の改善は難しいと思います。
また、楽天市場やYahooショッピングに出店している為、サーバーにデータベースを置く(あまり詳しくないため正しい表現で無かったら申し訳ないです)などが出来ず、
例えばカテゴリページで値段が安い順、高い順といったソート機能を設ける場合、安い順に並べたHTMLページと高い順に並べたHTMLページが必要となり、
そういった都合でファイルメーカー内の構造がとても複雑になっており、処理速度が重くなってきております。
以上、何卒ご教授頂ければと思います、宜しくお願い致します。
Offline
おそらく、ファイルを分けても、速度はあまり変わらないでしょう。ファイルを分けるメリットは、データの管理上のものだけと思っていいと思います。
ファイルがかなり大きくなっていると思います。時々、ファイルの最小化保存を行ってみると、劇的に早くなることがあります。一度試してみられるといいかもしれません。
また、多量のレコードを扱い、頻繁に検索、ソートが行われる構造ですと、索引の持たせかたで速度が大きく変わることもあります。(構造的には全く違いますが、最適な複数集計フィールドの逐次計算で私の改変ファイルとオリジナルファイル)
ECサイトへのhtmlの書き出しは、SQLを使って外部から行った方が早いかもしれませんね。
Last edited by Shin (2020-05-11 18:38:40)
Offline
Shin 様
ご回答、誠にありがとうございます。
>おそらく、ファイルを分けても、速度はあまり変わらないでしょう。
ありがとうございます!お陰で不毛な作業をせずに済みました!
>ファイルがかなり大きくなっていると思います。時々、ファイルの最小化保存を行ってみると、劇的に早くなることがあります。
そのような方法がある事を初めて知りました!以下ページの最適化保存という作業の事でしょうか?
https://support.claris.com/s/article/Fi … anguage=ja
>多量のレコードを扱い、頻繁に検索、ソートが行われる構造ですと、索引の持たせかたで速度が大きく変わることもあります。
ありがとうございます!頂きましたリンク先も含め参考にさせて頂きます!
>ECサイトへのhtmlの書き出しは、SQLを使って外部から行った方が早いかもしれませんね。
なるほど!ファイルメーカーで完結しない方が良い場合もあるのですね!
諸々ご回答頂きありがとうございます!最適化保存の件だけ、引き続きご教授頂けますと幸いでございます。
お手間をお掛けしてしまい申し訳ございませんが、引き続き宜しくお願い致します。
Offline
慌てて書いたので、書き間違いました。最適化保存(サイズ小)です。
Offline
>例えばカテゴリページで値段が安い順、高い順といったソート機能を設ける場合、安い順に並べたHTMLページと高い順に並べたHTMLページが必要となり、
もし、生成したページ自体をレコードに保存してるとしたら、それが原因かもしれません。長大なテキストは、スペック上は保存可能でも編集時に非常に遅くなります。
大きなテキストは、変数の中で処理するといいと思います。変数ですと、loopでのマージ作業もかなり早くなります。
Offline
>慌てて書いたので、書き間違いました。最適化保存(サイズ小)です。
ありがとうございます!さっそく試してみます!
>生成したページ自体をレコードに保存してるとしたら、それが原因かもしれません。長大なテキストは、スペック上は保存可能でも編集時に非常に遅くなります。
その通りかもしれません!現在は以下のような感じでシステム構築しております!
※以下全てテキストフィールド
【商品マスタ】約2000レコード
・商品名
・商品コード
・値段
・画像URL
・カテゴリ名
・アイテムリスト ← スクリプト「フィールド内容の全置換」で下記のような計算式で全置換
"<a href=\"" & 商品コード(を利用して作られたページURL) & "\"><img src=\"" & 画像URL & "\">" & 商品名 & "</a>"
【カテゴリマスタ】約50レコード
・カテゴリ名
・カテゴリ紹介文
・カテゴリページHTML ← スクリプト「フィールド内容の全置換」で下記のような計算式(色々省略してます)で全置換
"<html>
<head>~</head>
<body>
<div>" & カテゴリ名 & "</div>
<div>" & カテゴリ紹介文 & "</div>
<div class=\"itemlist\">"
& List ( 商品マスタ::アイテムリスト )
& "</div>
</body>
</html>"
このような経緯で出力した カテゴリマスタ::カテゴリページHTML のテキストフィールドを、スクリプト「レコードのエクスポート」でhtmlファイルとして出力しています。
似たような考え方で商品ページ等も書き出しており、更には自社サイト、楽天市場、Yahooショッピングと3モール分ありますので、
最終的には約5万ファイルをスクリプトで書き出すような運用を行っております(一連のスクリプトが完了するまでに1時間くらいかかります)
このような運用が「生成したページ自体をレコードに保存してる」という事に当たるのでしょうか?
>大きなテキストは、変数の中で処理するといいと思います。
コメントありがとうございます!変数の中で処理との事ですが、上記のような運用の場合、どのように活用すれば良いのでしょうか?
質問ばかりで申し訳ございません!お時間ございましたらご回答頂けますと大変助かります!
引き続き何卒宜しくお願い申し上げます!
Offline
具体的な構造が今ひとつ見えないので何とも言えませんが、商品レコードが2000でカテゴリが50種類、最終生成物のファイルが2000個ではなくて5万というのがどういう計算なのか。というのも、5万個もファイルを書き出すスクリプトが1時間で終わるなら、一つ72ms平均なので、いまのファイルメーカーの性能ではその程度のものじゃないかと思います。
これが、一つのアイテムをなにか編集するたびに1時間かかるのがお困りということでしたら、変更物だけ書き出すというロジックにすべきと思います。ただ、一カ所の変更が全部に及ぶような構造であれば、ある程度の時間が必要だと思います。
Offline
Pages: 1
[ Generated in 0.005 seconds, 9 queries executed - Memory usage: 545.95 KiB (Peak: 566.86 KiB) ]