会計SEのメモどちらかといえば落ちこぼれSEな私が泥水を飲む思いで身に付けた会計についての知識を公開しています。配賦ロジックTweet管理会計システムに於いて、システム構築の最初に絶対にやっておくべきことがあります。必要な処理時間の目途を付けておくことです。管理会計システムのデータは莫大な大きさになります。例として、サイゼリヤの管理会計システムを考えてみましょう。※もちろん、私は中の人ではないので全て妄想です。管理会計システムでは、各データの組み合わせのレコードを大量に作ることになります。サイゼリヤは、店舗数が約800店舗。これを収支管理単位にすると仮定しましょう。勘定科目数は、中の人でないとわからないことですが、普通ならまあだいたい200個という感じでしょうか。実際に経理の現場で使っている勘定科目数だと思ってはいけません。公表される財務諸表の勘定科目は、一般に、かなり集約されて表示されています。それぞれの勘定科目を「変動費」と「固定費」に分けて把握する必要があります。出費や売上が、どの組織として生まれたものかを把握する必要があります。組織体系も、サイゼリヤのホームページではわからなかったのですが、管理会計として扱う組織数は10個と仮定しましょう。3,200,000となります。このメッシュのデータを少なくとも毎月ごとに必要になると思いますので、320万レコードが毎月発生する事になります。1レコードが500バイトと仮定すると。1.49GBつまり、一ヶ月あたり約1.5GBのデータが、少なくとも発生するという事です。でかいでしょ?で、この1.5GBのデータを作成するために、様々な配賦計算をしたりします。配賦計算では全てのレコードを網羅して行う計算が多いため、この1.5GBを何十回も走査するわけです。会計ソフト「勘定奉行」でも、配賦計算の処理時間の目安を聞いたところ「まあ、だいたい1時間くらい見て頂いた方がいいですね~」という答えが返ってきました。※もちろん、データの整備状況によるのでしょうが。いうことで、管理会計システムは、バッチ処理の時間がすごくかかるのが普通です。処理時間を短縮するためのパフォーマンスチューニングが重要になります。具体的な対策としては、1.DB上のインデックスの適切な付与2.HDDのストライピング3.SSDの導入4.極力、処理をメモリ上で済ます5.帳票毎に、帳票出力専用の集計テーブルを作成のような対策が考えられます。「めんどくせーからプライマリーキーのインデックスしか付けてねーよ」といったものが実は多いと個人的に感じています。「やって当然のインデックス最適化を確実にやる」ということが重要です。2.HDDのストライピングストライピングも重要ですね。実質的にはあまり選択の余地が無いかもしれません。管理会計システムには、SSDの導入を是非検討して頂きたいところです。処理結果のテーブルだけはHDDに持たせて、途中のワーク系のテーブルだけSSD内に置くとか。考えれば導入の仕方は色々考えられると思います。4.極力、処理をメモリ上で済ます今はメモリも安くなりましたから、全てメモリ上に読みこんでしまって、ディスクに対する読み書きを極力減らすという事も考えられます。これには注意が必要です。いうのも、メモリ上で全てを済ましてしまうと、運用時に途中計算がわかりにくくなるのです。相手は一ヶ月あたり320万ものレコードです。デバッガーでの調査にも限界があります。処理の途中経過は、ポイントごとになるべく物理テーブルに落としておくべきです。すると保守性がかなり向上します。運用者と綿密に打ち合わせて、ポイントを決めて、物理テーブルに落とすようにしましょう。その莫大なデータを対象に帳票出力するわけで、帳票出力にも時間がかかります。一ヶ月あたり1.5GBですから、例えば通年の帳票を出そうとすると12倍の18GBのデータを、読み込んで、集計等を行って、帳票出力することになります。帳票出力のボタンを押すたびに、この18GB全てを対象に処理すると、ボタンを押してから帳票が出るのに1時間かかる、なんていう状況も大いにあり得ます。帳票の種類の数だけ集計テーブルを作って、帳票出力する際にはその集計テーブルからデータを読み込んで出力する、という作りにすることも検討した方が良いでしょう。データが冗長化してイヤな感じはしますが、現実解としてはこれを選択せざるを得ない事が多いと思います。ここでは「データは月毎に作成」という仮定を置きましたが、サイゼリヤのような外食産業の場合、経営者としては日別のデータが欲しいはずです。ここではメニューの概念を完全に無視しましたが、当然、メニュー毎にどのくらい儲かっているか、も知りたいはず。メニューも収支管理単位として扱いたいハズです。メニュー数は、今ざっと数えたところ100個強といったところでした。データが生成される、という可能性もあります。テラバイトの単位になるともうお手上げな感じもするので、何かをあきらめる必要が出てきますね。「組織毎の数字を見るのはあきらめる」とか、「日別にデータ生成するのは売上高だけにする」とか。このように、処理時間がボトルネックとなって実現できないことが結構出てきます。管理会計システムの開発案件に携わるなら、プロジェクト開始時点から、この辺の感覚を持っておいた方が良いでしょう。コメントをキャンセルメールアドレスが公開されることはありません。technology.。