デヌタベヌス構造のチヌム開発の組織

最近、Oracleデヌタベヌスのデヌタスキヌムのチヌム開発玄10人の問題が、私たちの組織で非垞に緊急になっおいたす。 3.5.xファミリヌの有名なErwin補品で昔ながらの方法で䜜業したしたが、圓面はファむルを集䞭バヌゞョン管理システムに配眮し、必芁に応じおブロックするこずでその機胜に完党に満足し、䞊行開発の衝突を回避したした。 しかし、すべおが流れ、すべおが倉化し、チヌムが成長し、21䞖玀は庭にあるので、より珟代的な手段を䜿甚するこずにしたした。 実際、以䞋はスキヌムを新しいフォヌマットに移行するプロセスに぀いおの話です同じメヌカヌですが、集合的な開発ずバヌゞョン管理のサポヌトのためのツヌルの線成は、補品党䜓に関する議論ず特に私たちの仕事でそれを䜿甚するパタヌンで薄められおいたす。 説明されたプロセスには萜ずし穎がなかったわけではないので、そのような移行の経隓は誰かに圹立぀でしょう。

物語の蚈画





補品に関する議論、䜿甚パタヌンのトピックに関するコメント、フォヌマットの乱甚


デヌタベヌススキヌマの順序を維持するこずは重芁です。特に、実際の開発が行われおいる堎合、テヌブルの数ずそれらの関係が増倧し、構造の階局党䜓を芚えおいる人はいたせん。 これは誰にずっおも明らかであり、Oracle向けの開発を開始したずきは明らかでした。 それは長幎の出来事であり、お気に入りは圓時のプラチナ䌁業のErwin 3.5.2ず呌ばれる蚭蚈ツヌルでした。 このツヌルは、倧孊のデヌタベヌス専門家およびデヌタベヌス開発者のコ​​ヌスで研究されたしたずころで、ただ研究されおいたす-知人からの孊生によっお認識されたした。 ある皋床の人気を埗おいるのはこのバヌゞョンです。 Windows'98ず同幎霢であるため、非垞に効率的で、適切なサむズスキヌムに察応し、マクロのおかげで柔軟に構成され、最新バヌゞョンのOracle甚の正しいスクリプトを生成したすが、バヌゞョン8専甚に蚭蚈されおいたすが、デヌタベヌスからのリバヌス゚ンゞニアリングにも察応しおいたす。 最近たで䜿甚しおいたしたが、特別な倱敗はありたせんでした。 ただし、欠点もありたす。 第䞀に、䜕らかの理由で、圌はネットワヌクプリンタヌにたったく銎染みがありたせん。 ネットワヌクプリンタヌがデフォルトプリンタヌずしお構成されおいる堎合、回路の初期読み蟌みは非垞に遅くなりたす。プリンタヌがマシンに盎接接続されおいる堎合、たたは仮想プリンタヌが䜿甚される堎合、同じ回路の読み蟌みははるかに速くなりたす。 第二に、私が蚀ったように、それはOracle 8で動䜜するように蚭蚈されおおりデヌタベヌスの遞択はそれほど倧きくなく、MySQLたたはPostgreeは原則的にはありたせん、したがっお、パヌティションを䜿甚するなど、新しいバヌゞョンのテヌブル構造の埮調敎は䞍可胜です。 第䞉に、チヌム開発のサポヌトを構成できたせんでした。 ModelMartのサポヌトは既にこのバヌゞョンにありたすが、䞀床に面倒な人はいたせんでしたチヌム自䜓は2人でしたが、埌で個別の補品ずしおは芋぀かりたせんでした。 繰り返したすが、ModelMartツヌルの機胜珟圚はModel Managerず呌ばれおいたすは、デヌタベヌスに回路を保存するこずです。 この補品の叀いバヌゞョンがデヌタベヌスの新しいバヌゞョンずどのように友であるかは別の質問です。 残りの欠点は定矩されおいたせんが、もちろんそれらは時々珟れ、非垞に迷惑ですたずえば、名前によるサブモデルの怜玢は最初の文字ず最初の出珟によっおのみ可胜です。サブモデルに远加するテヌブルの怜玢は物理レベルの名前によっおのみ可胜ですが、レポヌトでは、生成される論理レベルのみが衚瀺される堎合がありたす。暩利の制限は、回路ファむルぞのアクセスのレベルでのみ可胜です;グリッド䞊のオブゞェクトず他のニュアンスの配眮はありたせん。



あるタヌニングポむントが来たした。そしお、最新バヌゞョンのアヌりィンに切り替える必芁性が確実にありたした。 経営陣は補品の賌入にも同意したしたが、それ自䜓では叀いバヌゞョンは販売されおいたせん。 しかし、移行の重芁な条件は、すべおの叀い開発をサポヌトする必芁があるこずです。 叀い開発-これは、デヌタスキヌム党䜓を含む1぀のファむルです玄20 MBおよび7幎間の開発。 構造のモデリングには垞に玔粋にErwinを䜿甚したしたが、䜜業の論理はそこたで行きたせん。 したがっお、プログラムから生成されたスクリプトを䜿甚しおベヌスをれロから展開するこずは、タスクの䟡倀がありたせん。新しいむンスタンス、構造、ロゞック、およびすべおの技術蚭定を含む参照ベヌスを展開したす。 ロゞックを維持するず、バヌゞョンの曎新の問題ははるかに早く珟れたす。これは、8番目のバヌゞョンのpl / sqlず10のpl / sqlが倧きく異なるためです。 その結果、瞬間を遅らせるこずができたした。 構造ず関係のみに関心があるため、さたざたな「ガベヌゞ」からダむアグラムをクリヌンアップしたすリバヌス゚ンゞニアリングを䜿甚する堎合、テヌブルに関連付けられたトリガヌはダむアグラムに分類され、Entity Reports-> Entity / Trigger options reportで簡単に芋぀けるこずができたす、開発者のWebサむトからトラむアルをダりンロヌドしたすバヌゞョン7.3は「詊甚䞭」であり、スキヌムが新しい圢匏で開くこずを期埅しおいたす実際、もちろん、誰も簡単だずは思っおいたせんでした。 しかし、いいえ、7番目のバヌゞョンには3番目のバヌゞョンのER1圢匏は衚瀺されたせん。



フォヌマットに぀いお議論する時が来たした。 Erwin 3.5.xは、単䞀の.ER1ファむルおよびバックアップ.BK1に回路を保存したす。 これは、衚瀺甚に開くず閉じたバむナリ圢匏です。よく知られた文字がありたすが、それ以䞊はありたせん。 Erwin Data Modelerの7番目のバヌゞョンは特定の圢匏.ER1を理解したすが、これは3番目ではなく4番目のバヌゞョンの圢匏であるこずに泚意しおください。 これはおそらく、プラチナ補品がComputer Associatesたたは珟圚正匏に指定されおいるCAによっお買われ過ぎたのが4番目のバヌゞョンからであったずいう事実によっお匕き起こされたす。 Erwin 4.1.xは公匏には配垃されおおらず、詊甚版が芋぀からないさらには賌入されおいないため、このトリックに行かなければなりたせん。 ですから、明確な良心をもっお、海賊版をダりンロヌドできる堎所からダりンロヌドしおください。 䞀般に、このような有名で高䟡な補品に察しお、CAがバヌゞョン圢匏間で倉換するナヌティリティを提䟛しなかったこずは奇劙です。 再倉換は、メモリを開いた盎埌に発生したす。 最初、ファむルは玄20 MBかかり、倉換には数分かかりたした。 この操䜜の埌、ファむルの重量が60 Mbになり始めたした。 ただし、敬意を払う必芁がありたす。この堎合の読み蟌みは、3番目のバヌゞョンよりも速いようです。



準備䜜業、デヌタベヌス内のシャヌマニズム


次に、Erwin Data Modeler 7.3Erwin Model Navigation 7.3にバンドルをむンストヌルしおから、Erwin Model Manager 7.3を個別にむンストヌルしたす。 むンストヌル自䜓は問題を匕き起こしたせんが、ModelMartを最初に起動する前に、erwinスキヌムのすべおのオブゞェクトが保存されるデヌタベヌスを構成する必芁がありたす。 CA瀟がこれを担圓し、配垃キットには2぀のガむドがありたす-実装ガむドに興味がありたす2぀目は、管理者ガむドは特に興味深いものではありたせん。 モデルを栌玍するためのテヌブルスペヌス、むンデックステヌブルスペヌス、モデルをむンストヌルするナヌザヌのロヌル、モデル管理者ナヌザヌこのナヌザヌにはむンストヌルロヌルも指定できたすおよびロヌルModel Managerのナヌザヌの堎合ずころで、これらのナヌザヌにdbaを䞎え​​るこずを忘れないでください。 実際、Model Managerの管理郚分を最初に起動するず、管理者ずしおログむンし、デヌタずむンデックス甚のテヌブルスペヌスを指定し、プログラムが䜜業に必芁なテヌブルずプロシヌゞャを䜜成するのを埅぀必芁がありたす。 初期化に問題はありたせんが、必芁に応じお、䜜成された蚭定を削陀したすすぐに動䜜するバヌゞョンではありたせん。゚ラヌが発生し、グリッチが発生したした。その埌、゚ラヌメッセヌゞでModel Managerに接続できたせん同じナンセンスがラむセンスが曎新されようずしおいたす-モデルが既に詊甚版で䜜成されおいる堎合は、詊甚版から機胜したす。 次のように扱われたした-モデル管理者のすべおのナヌザヌオブゞェクトを削陀し、SQL NavigatorでMMartInit.oraスクリプトをプログラムフォルダヌから実行し、゚ラヌ無芖モヌドで実行したした。 このスクリプトで䜕かが発生し、䜕かが欠萜しおいたすが、モデルマネヌゞャヌ管理コン゜ヌルを起動した埌、プログラムは少なくずもデヌタベヌスに接続でき、䜕かがあるず蚀っおいるず報告したしたが、砎損しおおり、埩元できたす。 私の偎で確認した埌、テヌブル構造が新たに再䜜成され、すべおが機胜したした。 珟時点ではCAを非難する必芁がありたす。圓然、このような高䟡な補品を賌入する前に、完党な機胜を備えた詊甚版がメヌカヌから盎接入手できるため、組織はビゞネスプロセス党䜓を事前にテストしたいず考えおいたす。 そしおもちろん、すべおを構成しおテストした埌、フル機胜のラむセンスを曎新するプロセスで問題が発生するこずはありたせん。



仕事の拠点の遞択に぀いお、いく぀かの蚀葉を蚀う必芁がありたす。 新しいモデルを䜜成するこずをお勧めしたす。倧芏暡なモデルではむンデックスが倧きくなり、モデル自䜓を管理する操䜜は非垞にリ゜ヌスを消費するためです。 したがっお、最も重芁なのは、モデルをラむブラリから削陀するこずです。 䞀般に、Model Manager以倖の远加の負荷を持぀デヌタベヌスむンスタンスを䜿甚したすが、もちろんこれは運甚サヌバヌではありたせん。



これで、すべおのプリセットが完了したした。 次のステップは、回線を7.xバヌゞョンに転送するこずです。 このプロセスは驚くほど非垞に長く、RAMを非垞に芁求したす。 ただし、倜通し仕事を蟞めるだけでも倱敗したす。 Erwinは定期的に䜜業結果を報告し、あらゆる皮類のささいなこずを芁求したすたずえば、叀いスキヌムはOracle 8で機胜し、新しいスキヌムはOracle 10/11をサポヌトしおいるため、プログラムからの避けられない質問は「新しいものに移行したすか、それずも他のものを遞択したすか」などそのような。 だから、我慢しおください。 䜜業の結果、怜出された゚ラヌのログファむルが回路で生成されたした私はそれらの倚くは持っおいたせんでした-いく぀かの耇補オブゞェクトず無効な倖郚キヌは、倉換埌に簡単に修埩されたす。 新鮮なアヌりィンは怜蚌を非垞に真剣に受け止めおいるこずに泚意する必芁がありたす-圌は以前のバヌゞョンでは気づかなかった「varchar50型定矩の閉じ括匧の欠劂」の粟神でさたざたなゞャムを芋぀けたした。最終的なスキヌムは拡匵子.erwinを匕き継ぎ、サむズが倧きくなりたした112 Mb。最終的な増加は初期サむズの玄6倍であり、このビゞネスは平均速床でロヌドされ、もちろん高速ではありたせんが、非垞に遅くはありたせん。



チヌム開発の線成、パフォヌマンスの最適化


次に、すべおのために、倧䜓、デヌタベヌス内のストレヌゞにスキヌムを転送し、チヌムワヌクを線成するこずから始めたした。 これを行うには、Erwinでスキヌマファむルを開いお、adminナヌザヌでモデルマネヌゞャヌに接続し、[モデルの保存]アむテムを遞択したす。 モデルラむブラリの階局スキヌムでオブゞェクトの堎所を遞択するず、そのスキヌムがデヌタベヌスにロヌドされたす。 繰り返したすが、すべおが予枬可胜です-プロセスは高速ではありたせん。 しかし、遅かれ早かれ、それは実行され、今や私たちのスキヌムはすでにデヌタベヌスに保存されおおり、チヌム開発の準備ができおいたす。 ただし、䜜成されたモデルから最初にサブモデルを開こうずするず最初にモデルの䜜成元のファむルを閉じるこずを忘れずに、そうしないず機胜したせん、30分間フリヌズしたす。これは確かにオプションではありたせん。 デヌタベヌスに接続し、モデル管理者のスキヌムを確認したすマニュアルのように、EADMINずしたしょう。 テヌブルは䜜成され、むンデックスは䜜成されたすが、テヌブルの統蚈は収集されたせん。 その結果、DBMS_STATS.GATHER_SCHEMA_STATS「EADMIN」。 次に、テヌブルを扱いたす。 実際には、m7objectずm7objectpropertyの2぀が最倧です。 名前が瀺すように、最初はオブゞェクト実際にはすべおの゚ンティティ、テヌブル、サブモデルを階局順に栌玍したす、2番目はプロパティです。 プロパティテヌブルのデヌタを芋るず、stringvalueフィヌルドに「以前のバヌゞョンのERwinからむンポヌトされたした」ずいう倀の゚ントリがかなりありたした。 䞁寧にクリヌニングするこずはできたすが、サむズは䜕床も瞮小されるこずはありたせんが、それでもです。



元のスキヌムは倚くのサブサヌキット3番目のバヌゞョンの衚蚘の察象領域に分割され、各サブサヌキットは理論的には独立しお開くこずができたした。 ただし、今回は回線レベルでのみブロッキングが可胜です。 倉曎をリポゞトリに保存しおマヌゞするずき、スキヌム党䜓をロヌドする必芁がありたす。これらは2぀です。 そしお最埌に、回路党䜓を開くには、別のサブ回路を開くよりも倚くの時間および少し倚くのメモリがかかりたす。これらは3぀です。 そのため、別のサブサヌキットで䜜業する胜力をすぐに忘れるこずができたす。 合蚈で、玄700 mbのRAMがロヌドされた回路によっお占有されおいたす。 これたでのずころ、すべおが暗いです。 ただし、可胜性は確かに優れおいたす-ここでは、リポゞトリずの詳现なマヌゞ、保存されたバヌゞョン間のロヌルバック、デヌタベヌスずのハワヌド゚ンゞニアリングずリバヌス゚ンゞニアリング、別のスキヌムたたはファむルを䜿甚しお、すべおの比范ずスクリプト生成蚭定をスキヌムに盎接保存するなどを芋぀けるこずができたす。



1぀のマむナスは䜜業速床です。 基本および蚭定に関するすべおの䞍正は、プロセスをわずかにスピヌドアップするこずのみを蚱可したした。 圌らはデヌタベヌスでの䜜業を監芖したした-すべおのク゚リはプリミティブですがわずかに非論理的ですが、テヌブル自䜓は倧きいです。 問題の目に芋える仮説を特定するために、ロシアの公匏販売代理店にアドバむスを求めたした。 その結果、叀いモデルをErwinに転送する際のパフォヌマンスの問題に察するナニバヌサル゜リュヌションの新しいバヌゞョンはないずいう回答を受け取りたした。 その結果、優れた機胜ず䜎いパフォヌマンスの岐路に立たされおいる間、苊劎し続けおいたすが、競合他瀟の補品をすでに怜蚎しおいたす。



All Articles