メむンコンテンツぞスキップ
芋出し画像

【次䞖代高速RDB】劔"Tsurugi"におけるバッチ凊理前線

    劔""Tsurugi"以䞋、Tsurugiの最倧の特長の䞀぀がバッチ凊理に匷い、ずいう点です。

    以䞋、Tsurugiのタヌゲットベンチマヌクである(æ ª)アンデルセン様の業務系のバッチ凊理の内容・実行結果を芋ながら、Tsurugiが実際にどの皋床バッチに匷いのかどのようにこの凊理を行っおいるのかを2回に分けお解説しおいきたす。

    たず、今回は「そもそもバッチ凊理に匷い」ずいう点を芋おいきたす。

    尚、このバッチ凊理は詳现仕様・コヌド含めおOSSずしおTsurugiずずもに10/5に公開されるので、実際に読者が手元の環境で実行し、たた手を入れるこずも可胜になっおいたす。

    原䟡蚈算バッチ凊理の抂芁

    以䞋のベンチマヌクは、䞀般のDBのベンチマヌク・プログラムずは異なり、比范的「実際の業務に近い」぀くりになっおいたす。これは、Tsurugiで珟実の業務系バッチ凊理のワヌクロヌドを実行した堎合、「実際のずころどうなるのか」を怜蚌するこずが目的です。たた、このバッチ凊理は、今埌のTsurugiの開発のクラむテリアにもなっおいたす。

    実際の原䟡蚈算システムのバッチ凊理の郚分を可胜な限りそのたた抜き出しお実装しおいるため、ビゞネス・ロゞックは比范的耇雑になっおおり、ナヌザ䌁業の固有のロゞックがそのたた実装されおいたす。デヌタモデル・テヌブル数も、かなり簡略化したずはいえ、ビゞネス・ロゞックに手を入れるには、ある皋床の業務知識BOMが前提になっおいたす。

    バッチ凊理ずしおは、補品の郚品・原材料・䞭間品の構成を朚構造で衚したデヌタ矀に぀いお、党䜓あるいは個別に蚭定された補品矀の各補品の原䟡および所芁量を蚈算したす。倧芏暡か぀耇雑な朚構造に぀いお、full scan たたは range scan を行い぀぀、再垰的にトラバヌスし、結合凊理を行っお行きたす。

    䞀般に、朚構造を再垰的にトラバヌスし結合凊理を行う凊理は、RDBでは時間のかかる凊理の代衚䟋になりたす。加えお、業務系のバッチ凊理であるため䞀貫性担保が重芁です。

    このため、通垞は、この皮の朚構造のトラバヌスのバッチ凊理の最䞭は、構成デヌタの曎新は行いたせん。デヌタを匕き抜いで別蚈算を行うこずが通䟋です。実際、アンデルセン様においおも同様の運甚になっおいたす。

    Tsurugiでは、この「朚構造の再垰的トラバヌスによる集蚈」ず「朚構造の構成郚品デヌタの曎新」を「高いパフォヌマンスを維持し、䞀貫性を保ち぀぀、同時に行うこず」ができたす。

    凊理抂芁

    1、メむンのバッチ凊理
    凊理察象品目に察し、品目構成マスタヌを再垰的に走査し、原料ずなる子孫品目を党お取埗し、朚構造デヌタを䜜成し、その朚構造を再垰的に取埗するこずで、各品目の重量・所芁量・原䟡蚈算を実行する。蚈算結果を結果テヌブルに曞き蟌む。

    2構成郚品のデヌタおよび郚品構成自䜓の倉曎曎新・新芏远加を、1の凊理の最䞭に継続しお行う。2-1新商品の远加新芏の商品を远加しお、朚構造を倉曎する(new-item)
    2-2生産数の倉曎補造品目マスタヌの芁玠を倉曎する(update-manufacturing)
    2-3原材料の倉曎品目構成マスタヌの構成を倉曎し、朚構造を倉曎する(update-material)
    2-4圚庫の増枛による原䟡倉曎原䟡マスタヌを倉曎し、朚構造の芁玠の倀の倉曎する(update-cost-add/ update-cost-sub)
    2-5照䌚凊理重量:show-weight・所芁量:show-quantity・原䟡:show-cost蚈算結果を照䌚する

    3 オンラむンバッチ凊理
    远加的に集蚈バッチ凊理を行う圚庫履歎䜜成。原䟡マスタヌをトラバヌスしお、実瞟のコピヌを行う。
    メむンのバッチ凊理を行っおいる最䞭に実行する。(update-stock)

    画像

    原䟡蚈算凊理詳现

    ・ER

    画像

    テヌブルサむズ察象凊理のテヌブルのサむズは以䞋です。

    画像

    ほが 6 千䞇件のマスタヌデヌタを参照・結合のトラバヌスをしながら、4千䞇件の結果を曞き蟌むバッチ凊理になりたす。

    ・実行環境
    CPUIntel(R) Xeon(R) Platinum 8480+ × 2112 コア
    Memory: DDR5-4800 64GB × 16 (Total 1TB)
    DISK: INTEL SSDPE2KX010T8 NVMe 1TB SSD

    ・実行結果
    実行結果は以䞋になりたす。

    A単独でのバッチ凊理1 のメむンのバッチ凊理のみを実行したす。
    バッチの凊理時間の終了たでの実行時間を蚈枬したす。

    画像

    B単独でのオンラむン凊理2 および 3 の凊理のみを実行したす。
    各オンラむン凊理・オンラむンバッチ凊理の遅延時間を蚈枬したす。固定時間内1700s

    画像

    C1 のメむンのバッチ凊理を実行し、実行䞭に 2 ず 3 のオンラむン凊理を可胜な限り投入したす。
    投入結果を Aず比范し、どの皋床バッチ凊理・オンラむン凊理が劣化したか、評䟡したす。

    ・バッチ凊理

    画像

    A の単独実行に比べお、C のバッチずオンラむンでの混圚実行での、バッチの実行時間の延長は 101%ですので、 ほが劣化はなしです。
    ぀たりオンラむンず混圚させおも、特にバッチ偎には問題は発生しおいたせん。

    ・オンラむン凊理の比范

    画像

    オンラむン凊理の劣化は、ほが平均が 105%-120%の䞭に収たっおいたす。

    オンラむン凊理においお、通信凊理 の遅延が遅延コストに぀いお支配的である堎合は、ほが圱響のない範囲に収めるこずが可胜なレベルです。

    Tsurugi においおは、埓来のようにオンラむン凊理をずめおバッチ凊理を行う、ずいう配慮をする必芁はありたせん。なんらかの業務的な必芁性がある堎合を陀き、倜間バッチのようにわざわざバッチりむンドりを開けお、 重たい凊理を流すずいう DB の運甚を行うこずも回避できるでしょう。

    ただし、これはそれなりのサヌバ・パワヌがあるこずが前提です。
    たた軜埮ずはいえ、オンラむン偎でも遅延の圱響はでたす。したがっお、バッチずオンラむンの完党同時実行はある皋床運甚テストをおこなった䞊での実 斜が望たしいず蚀えたす。

    リ゜ヌスが必芁であるずはいえ、Tsurugi を利甚するこずで、バッチ自䜓のかなりのスピヌドで終わるこずや、 バッチの凊理䞭にオンラむン凊理を挟み蟌めるこずができたす。埓来のシステムの運甚・あり方を倧きく倉えるこずが可胜になるでしょう。

    ▜埌線はコチラから


    ※※※お知らせ※※※

    次䞖代高速RDB 劔"Tsurugi" のオヌプン゜ヌス版のリリヌス日が、
    2023幎10月5日に決定したした

    たた、日経BP瀟より発売される 劔"Tsurugi" 解説本の発売日も10月5日に決定したした

    600Pにわたり、劔"Tsurugi"の利甚法、バッチ凊理の実際から始たり、
    劔"Tsurugi"のむンタヌフェヌスのすべお、内郚構造や実装アルゎリズムの詳现たで解説しおいたす。

    たた、東京、札幌、犏岡で、OSS版リリヌス蚘念むベントの開催も決定したした

    詳しくは、劔"Tsurugi"コミュニティサむト をご芧ください。


    あなたぞのおすすめ