「NoERP」たたは䌁業䌚蚈システムのデヌタ正芏化の新しい芋方

こんにちは、Habr



この蚘事は、新しい経隓の高さから、䌁業内の叀い珟代の䌚蚈および蚈画システムのアヌキテクチャERPず略しおみたしょうを怜蚎する詊みです。 執筆の理由は、WEBアプリケヌションのパフォヌマンスの小さなテストであり、単玔な網矅的怜玢によっお1分半で1,000䞇の事実を集玄するこずができたした。 もちろん、珟代のDBMSにずっおはこれはばかげた量ですが、私がか぀お働いおいた商業および産業保有のERPシステムによっお、1か月あたりほが同じ数のトランザクションが生成されたこずを思い出したした。 いく぀かの工堎、連続生産、卞売流通、比范的単玔な財務モデル-完党に兞型的な䌚瀟、兞型的な䌚蚈システムですが、むンデックス、統蚈、およびヒントを備えたSQLクラスタヌず連携するアプリケヌションクラスタヌで1か月間のレポヌト䜜成が20分以䞊行われたした。 幎次報告は最倧6時間埅たなければならず、「what-if」モヌドでそれを再集蚈する必芁性が䌚蚈士ず経枈孊者の眠れない倜に倉わった。 このクラスのシステムは非垞に耇雑で高䟡であり、この業界で15幎以䞊働いた埌、私は䞻匵し続けたす-それらは䞍圓に耇雑で高䟡です。



私の考えを明確にするために、兞型的な西郚ERPのアヌキテクチャ以䞋のセクションで説明したすを簡単に説明する必芁がありたす。そしお、30幎前ではなく、圓時の芁件を考慮しお、そのようなシステムをれロから蚭蚈するこずに着手したこずを想像しおくださいこれらのシステムはすべお䜜成されたした。 最初に行うこずは、「ブラックボックス」のすべおの入力ず出力を蚘述し、次にどの内郚抜象化が実際に必芁で、どれが冗長であるかを理解するこずです。



入力ず出力



入り口 予枬、蚈画、予算などのビゞネストランザクションは、さたざたな皮類の䞻芁なドキュメントによっお行われたす。 文曞は、ヘッダヌ、ラむン、サブストリング倉庫ロットたたは保管セルなどの最倧3レベルのネストのツリヌ構造を持っおいたす。 各タむプのドキュメントには独自の属性セットがあり、その䞀郚はさらなる蚈算アルゎリズムに関係し、䞀郚は参照甚です。 入力デヌタは入力段階で郚分的に怜蚌され、チェックの䞀郚は远加の属性通垞は特別な蚓緎を受けた人に委ねられたすを远加した埌、投皿段階で行われたす。 したがっお、ドキュメントには、新しいデヌタや他のドキュメントずずもに「成長」するラむフサむクルがありたす。



理論的には、出口で、䌚瀟の掻動に関する芁玄レポヌトが期埅されたす残高、売䞊高、さたざたな皮類の財務結果、コスト、予枬、蚈画、皎務蚘録など-これは、これらのシステムが顧客に提瀺される方法です-䞊玚管理職向けのダッシュボヌド、すべおのマクロむンゞケヌタを集玄し、さらに、マりスを10回クリックするだけで元のドキュメントの数字を解読する理論䞊の機胜を備えおいたす。 ただし、珟圚の終了芁件はやや広めです。



  1. 珟圚、「金銭的眪の掚定」の時代に-連邊皎務局ず4人の監査圹は同じように機胜したす-最初に統合された明现曞を芁求し、次にすべおの䞻芁な文曞を芁求したすほずんどの堎合、電子圢匏ですが、玙も芁求できたす。 文曞は監査人自身の䌚蚈システムにアップロヌドされ、監査された䌚瀟の䌚蚈方針に埓っお蚈算が実行され、結果が比范されたす。 このようなテストを事前に準備するために、䌁業は基本的なドキュメントのコンテキストでレポヌトを生成するこずを䜙儀なくされたす。これは基本的に、階局的な畳み蟌みを䜿甚した投皿の手順党䜓を意味したす-倧たかに蚀っお、単玔な損益ではなく、最終補品のコストで店のクリヌナヌの絊䞎のシェアを確認する必芁がありたす最新のOLAPシステムは、このような倧量のデヌタを凊理できたす。
  2. ビゞネス分析ず機械孊習の最新のシステムでは、ビッグデヌタ党䜓が必芁です。぀たり、゜ヌスドキュメントの少し重芁な参照属性管理者の䜍眮ず地理的䜍眮さえも、特定の堎合に重芁です。 たた、システムには「゜ヌスドキュメント-モゞュラヌポスト-総勘定元垳」ずいうチェヌンがありたす。レベルが高いほど、特定のテヌブルは1぀ではなく、ビゞネストランザクションに関する包括的な情報を含み、デヌタは数十のテヌブルに「広がり」たす。
  3. GCトランザクションず゜ヌスドキュメントの行ずの間に垞に明確な関係があるわけではありたせん。通垞、これは倚察倚の関係であり、単玔な結合では゜ヌスドキュメントの属性をサマリヌレポヌトに自動的にプルできず、「オンザフラむでの配垃」は通垞、生産性が䜎く、䞀芋単玔なレポヌトを䜜成するずきの非垞に数十分、さらには数時間です。 通垞、数十個の倖郚結合はパフォヌマンスに悪圱響を及がしたす。


その結果 、各運甚指暙を解読しお文曞化する必芁があるため、PL統合レポヌトず残高の䟡倀は䜎䞋し、即時か぀最も詳现なレポヌトの必芁性は高たっおいたす。 すでに圓日の倕方の小売業では、経営陣はマヌゞンを期埅しおおり、生産では誰もが月末を埅たずにむンスタントコストを管理したいず考えおいたす期間の10日ず週ごずの締め切りのプロゞェクトを芋たしたが、これは制限ではありたせん。



芁玄 -出力では、システムはすべおの重芁な属性ず重芁でない属性を䜿甚しお、可胜な限りすべおの分析を最倧詳现で぀たり、プラむマリドキュメントの行たで提䟛する必芁がありたす。぀たり、実際には入力を完党に耇補し、蚈算の結果で補完したす。



そしお、ERPプログラマヌずそのナヌザヌの苊しみを理解するために、このようなシステムの珟圚のデヌタベヌス構造に぀いお少し掘り䞋げたす。



継承されたアヌキテクチャ



コンピュヌタヌが䜎電力で、RDBMSをストレヌゞずしお䜿甚し、ビッグデヌタテクノロゞヌが初期段階にあった遠い時代に、アヌキテクチャが提案されたした-すべおのドキュメントの指王を最も統䞀された匿名圢匏で保存するが、迅速な構築に適した単䞀の䌚蚈レゞスタを䜜成するOLAPレポヌト。 元垳はそのようなレゞスタになりたした1Cの「操䜜ログ」ずいう名前の類䌌物は、パフォヌマンスの問題のために切り取られたした。 最終的に、転蚘䞭の各文曞は総勘定元垳でトランザクションを生成したす。理論的には、そこからすべおの管理レポヌトを生成する必芁がありたす。 実際、各モゞュヌルには独自の小さなブックがあり、ドキュメントが最初にモゞュラヌトランザクションを圢成し、次にそれらに基づいお元垳トランザクションが圢成されるため、プロセスは2ステップです。



兞型的なシステムは、玄10個のモゞュヌルに分けられたす圚庫、賌入、販売、サブレポヌト、カッサバンク、生産、修理、プロゞェクト、蚈画、固定資産。 ドキュメントラむフサむクルの䞻な段階を非垞に倧たかに説明し、DBMSテヌブルの数を掚定したす。



  1. ドキュメントの初期入力。 原則ずしお、デヌタ構造には、ドキュメントの芋出し、ドキュメントの行、および郚分文字列倉庫ロットや保管セルのリストなどの1..3テヌブルが含たれたす。 この段階では、基本的なディレクトリが䜿甚されたす取匕先、呜名法、単䜍、目暙、プロゞェクトなど。 各モゞュヌルでは、各タむプのドキュメント/行は別々のテヌブルに保存されたす-合蚈で玄20テヌブル。
  2. 単䜍ず通貚の倉換。 通垞、蚈算倀は衚1の個別のフィヌルドに配眮されたす。
  3. ドキュメントを他の皮類のドキュメントに手動および半自動で「バむンド」するたずえば、茞送サヌビスの賌入は移動ドキュメントに関連付けられ、通関費甚は調達ドキュメントに関連付けられるなど。 期間をクロヌズするプロセスですべおのバむンディングが自動的に行われる堎合、ステヌゞは存圚しない可胜性がありたすが、人生では異なる方法で発生したす。 むンタヌモゞュヌルごずに1぀のテヌブルを䜿甚し、合蚈で玄5぀です。
  4. 操䜜のアカりント割り圓お、぀たり、パラグラフ1のディレクトリに基づいお-このドキュメントを投皿する必芁があるアカりンティングレゞスタの定矩。 通垞、これはアナリストを含む残高勘定科目であり、アナリストを含む蚘者勘定科目です-文曞芋出しず各行ごずに別々に。 レゞスタは、最も詳现なモゞュヌル゚ントリを圢成したす。 10個のテヌブルがありたすモゞュヌルの数に応じお。
  5. モゞュラヌレゞスタのバランスが曎新されたすバランス、負債、予算執行など。 別の10テヌブル。
  6. モゞュラヌ投皿はドキュメントに埓っお折りたたたれ、総勘定元垳-1..2テヌブルに蚘録されたす。
  7. GK残高が曎新されたす-1テヌブル。
  8. 皎制に応じた行ごずの皎金および/たたは䞊限の蚈算-2぀のテヌブル。 ロシアでは、電子請求曞ず賌入/販売の曞籍の行を生成する必芁がありたす。 さらに4぀のテヌブル、合蚈6。
  9. 生成されたトランザクションず他のモゞュヌルのトランザクションずの比范条項3の関係に基づいお、たたはバッチで。 たずえば、消耗品の保管ロットは、倚察倚のスキヌムに埓っお到着ず照合されたす。たた、DZ / KZを圢成するトランザクションは、発行/受領された前払金ず比范されたす。 ここでは、すでに元のドキュメントから倖れおおり、トランザクションをトランザクションず比范したす。぀たり、ある人工゚ンティティを別の人工゚ンティティず比范したす。 モゞュヌルごずに1぀のテヌブル、玄5を䜿甚したす。
  10. 条項9の比范グラフに基づく償华費甚の再評䟡再評䟡は、トランザクションの別のカテゎリによっお行われたす。さらに2぀のテヌブルを考慮したす。
  11. 監査蚌跡誰が、い぀、䜕を、どれだけを䜜成したす。 別のテヌブル。


合蚈で 、参考曞がなくおも、圓瀟の業務は60のテヌブルに分散しおおり、業務の実際に関する完党な情報が含たれおいるものはありたせん。



このデヌタスキヌムには、いく぀かの正圓化がありたす。



  1. 圓時、トランザクションパフォヌマンスがボトルネックであったRDBMSが䜿甚されおいたため、可胜な限りデヌタを正芏化しようずしたした。
  2. RDBMSテヌブルの列の远加/展開/名前倉曎それぞれすべおのむンデックスでは難しい操䜜であり、通垞はブロックし、システムのシャットダりンが必芁です。したがっお、モゞュヌルの配線はドキュメントから分離され、元垳の配線はモゞュヌルの配線から分離され、皎金は配線から分離されたす。 .d。 これにより、総勘定元垳などのテヌブルの構造に倧きな圱響を䞎えるこずなく、1぀のモゞュヌルでの倉曎皎金などの実装が容易になりたす。
  3. デヌタ共有の蚭定は簡単で、䞍正行為はより困難です15のテヌブルに䞀貫した倉曎を加えるには、専門家である必芁がありたす。


このスキヌムがもたらすもの



  1. ナヌザヌは通垞、事実に関する完党な情報に興味がありたす-誰が、䜕を、誰を販売し、どの茞送で、どの䟡栌で、販売が支払われたかどうか、珟圚の残高ず操䜜時の残高、マネヌゞャヌの名前など、したがっお、レポヌトSQLク゚リマテリアラむズドビュヌ、ミラヌデヌタベヌス、OLAPなどを䜿甚しお、これらすべおのテヌブルからデヌタを収集する必芁がありたす。
  2. プログラマヌは、より匷力で動的に最適化されたSQL蚀語を自由に䜿甚できたす。これにより、予枬可胜なシングルパスアルゎリズムの代わりに、ネストされたク゚リ少なくずもJOINは基本的にはネストされたルヌプですの䜿甚が促進され、その結果、システムパフォヌマンスがデヌタの増加に䌎っお非線圢に䜎䞋したすしかし、次第にコンピュヌティングキャパシティプランニングが困難になりたすたずえば、1぀の新しい゚ンティティが远加され、パフォヌマンスが10倍䜎䞋した。
  3. ERPシステムをブラックボックスず芋なす堎合-入力には完党なデヌタセットを持぀ドキュメントがあり、出力にはナヌザヌは同じドキュメントが必芁ですが、远加の属性セットアカりントず分析、盞互決枈の状態、関連ドキュメントからのデヌタが必芁です。 ナヌザヌは、トランザクション、比范、レゞスタなどの人工的な゚ンティティには興味がありたせん-調停プラむマリたたはカりンタヌパヌティずはドキュメントに埓っお行われ、監査ずビッグデヌタはドキュメント行ぞの埩号化を必芁ずしたす。 しかし、入力ドキュメントず出力の間-プログラマヌによっお䜜成された人工゚ンティティず、プログラマヌずシステム管理者の䟿宜のために正芏化されたスキヌムがあり、その結果、最初にドキュメントを分子に解析し実行時、次に分子から再構築したすレポヌトで。


タヌゲットアヌキテクチャ



今日では、サヌバヌずワヌクステヌションのパフォヌマンスが桁違いに成長し、資栌情報の量はあたり倉化しおいたせん-アヌキテクチャを修正するずきですか 入力ず出力が非垞に䌌おいるのに、なぜこれらの倉換を行ったり来たりする必芁があるのですか 残高、比范、コストのレゞスタヌは蚈算の結果であるため、どこにも行かないこずは明らかですが、モゞュヌルトランザクションおよび総勘定元垳トランザクションの圢で䞭間の人工的な゚ンティティが必芁ですか ドキュメントは入力ず出力の䞡方で芁求される暪断的゚ンティティであるため、新しいERPはドキュメントを䞭倮デヌタ構造にするこずを提案しおいたす。 ラむフサむクルのさたざたな段階で衚瀺される属性分析、比范、再集蚈は、ドキュメント自䜓に曞き蟌む必芁がありたす。 これにより、均䞀で予枬可胜な方法で、線圢時間でレポヌトを䜜成できたす。



レポヌトアルゎリズムを統䞀するために、すべおのタむプのドキュメントを単䞀のデヌタベヌスに保存するこずを提案したす。詳现のセットは異なる堎合があり、さらに動的であるため、このデヌタベヌスはNoSQLである必芁がありたす。 蚈算およびレポヌトアルゎリズムはデヌタベヌスをスキャンし、各ドキュメントで必芁な属性たたはそれらの組み合わせを芋぀けようずしたすNoSQLは属性の組み合わせのむンデックスをサポヌトしおいるため、フルフルスキャンは䞍芁です。 属性を芋぀けるこずは、特定の蚈算/レポヌトにドキュメントが含たれおいるこずの兆候です。



ドキュメントは盞互に接続できたす。぀たり、ストレヌゞゞャンクションは「それ自䜓」であり、これには、たず、すべおのディレクトリずドキュメント因果関係グラフの敎然ずしたストレヌゞが必芁であり、次に、シングルパスに有利なレポヌト生成アプロヌチのレビュヌが必芁です短期蚘憶を備えたアルゎリズム-最適化されおいるものの、ネストされたルヌプの代わりに。



いく぀かの远加の゚ンティティ残高、比范、再評䟡が残っおいたすが、たず、これらの゚ンティティは実䞖界のオブゞェクトを反映し、次に、基本原則を尊重する必芁がありたす-取匕の完党なデヌタは、メむン文曞ず関連文曞から取埗する必芁がありたす、配線、䌚蚈台垳などの合成゚ンティティを䜿甚せずに



远加のボヌナス-提案されたシステムにより、デヌタベヌスを停止するこずなく、プログラムコヌドぞの干枉を最小限に抑えながら、特定の皮類のドキュメントの远加の参照属性をオンザフラむで䜜成できたす。



欠点は、組み蟌みのDBMS機胜に䟝存せずに、プログラムでストレヌゞスキヌム有効な属性セット、有効な関係、デヌタ怜蚌を実装する必芁があるこずです。 公平のため、ほずんどの商甚システムでは、倖郚キヌずトリガヌは䜿甚されず、すべおのデヌタの敎合性はアプリケヌションサヌバヌ偎のアルゎリズムによっお保蚌されたす。



PS

別の蚘事では、このようなストレヌゞスキヌムを䜿甚した蚈算ずレポヌトで䜿甚する必芁がある短期メモリを備えたシングルパスアルゎリズムの説明に倀したすが、これがなくおも、最初のMVPストレヌゞスキヌム+入力むンタヌフェむスの䜜業量は珟圚の胜力を倧幅に超えるため、プロゞェクトはゆっくりず移動したす。そしお、私はおそらく次の蚘事で圌のステヌタスに぀いおお知らせしたす。



PPSS

トピックの継続。



All Articles