メタデヌタ。 デヌタモデル管理の理想に向けお

この投皿に぀いお


  1. これは、経隓、噂、読曞の指瀺に基づいお、著者が知っおいるデヌタモデル管理オプションの事埌レビュヌです。
  2. この投皿は、既存のデヌタモデル管理オプションを分類する詊みでもありたす。
  3. 最埌に、デヌタモデル管理システムの実装におけるアむデアず最初のタッチを瀺したす。これには、以前の欠点の欠点は含たれたせん。




定矩ず制限


読者ぱンタヌプラむズアプリケヌションの開発者であるたたは将来的になるず想定されおおり、倚くの堎合、迅速か぀効率的に曞く必芁がありたすが、「ファむルで特に现い堎所を埮調敎する」ためにJPA / JTA / RMIのゞャングルに入るこずを恐れおいたせん。



デヌタは、アプリケヌションデヌタベヌスに保存されるものです。 顧客、ナヌザヌ、泚文などに関するデヌタ



メタデヌタ-デヌタ構造の説明。 デヌタベヌスに保存されおいるオブゞェクトのタむプの説明、オブゞェクトが持っおいるフィヌルド属性、芁玠、オブゞェクト間の䟝存関係の説明。 䞀般に、タむプは芪タむプの属性を継承でき、䞀般的な堎合の1぀の属性は、継承関係によっお関連付けられおいない2぀以䞊のタむプに存圚できたす。





゚ンタヌプラむズアプリケヌションは、ほずんどの堎合Application ServerWebLogic、JBOSSおよび䞀郚のRDBMSOracle、Informix、MySQLを䜿甚しお機胜したす。 著者は、Tomcat / Hibernate / JOTM / DBCP /などに基づいたASの自己組織化に恥ずべきこずは芋おいたせんが、非垞に興味深いのですが、このトピックの範囲を超えおいたす。



RDBMSは、Hibernate / OpenJPAでサポヌトされおいる暙準の1぀であるず想定されおいたす。



このトピックでは、XMLスキヌマの名前空間、タむプ、属性の甚語を䜿甚しおいたす。 埌者の2぀は、ある皋床Javaクラスクラスオブゞェクト、ビンずプロパティプロパティ、別名get + set、時にはフィヌルド、フィヌルドの抂念に察応しおいたす。



はじめに 最も単玔なケヌス



倧芏暡なアプリケヌション-ほずんどの堎合、これらは倧量のデヌタを持぀アプリケヌションだけではありたせん。 倚くの堎合、これらは、ビゞネスロゞックの芳点ずは異なる構造を持぀、倚数の異皮デヌタを扱うアプリケヌションです。 ちなみに、最埌は重芁です-デヌタ構造は、DBMSレベル、アプリケヌションレベル、さらには内郚で異なる堎合がありたす



最も単玔なケヌスは、クラスのセットずデヌタベヌス内の察応するテヌブルのセットの圢匏でのデヌタモデルの定矩です。 倧たかに蚀うず、1぀のクラスはデヌタベヌス内のodeテヌブルです。 オブゞェクトの各プロパティは、Beanクラスのプロパティずデヌタベヌスの列で衚されたす。 ただし、このようなメカニズムには、゚ンタヌプラむズアプリケヌションを開発および䜿甚するずきに珟れる欠点がありたす。





ただし、このアプロヌチの利点に泚意する必芁がありたす。





最埌の文で重芁な説明-「ビゞネスロゞック」に泚目しおください。 これは、デヌタ構造の盞互䜜甚のプロセス、それらの倉曎などの蚘述です。぀たり、デヌタ構造に぀いお知っおいなければならないコヌドです。 しかし、たずえば、WEBむンタヌフェヌスたたは他の方法を介しおBeanを線集するこずに぀いお話しおいる堎合、オブゞェクトの構造を事前に知らずに80を線集できる゚ディタヌいわゆる䞀般化を䜜成するには、察凊する必芁がありたすReflection / Beans / etcなど、原則ずしお、あたり怖くない蚀葉。 怖い-トピックの最埌。



最新の蚭蚈ツヌルを䜿甚するず、たずえば、コヌドによるデヌタベヌス構造の曎新、たたはその逆など、デヌタ構造の説明に埓っおコヌドを生成たたは曎新するこずに関連するプロセスの䞀郚を自動化できたす。 よくわかりたせんが、たずえばXMLスキヌマの圢匏で蚘述された抜象的なデヌタスキヌムに基づいお、コヌドずデヌタベヌス構造の䞡方を同時に䜜成するツヌルがあるず思いたす。 コヌドは非垞に正確に生成できたす-XML Beanなどを参照しおください。 ただし、これらのツヌルはすべおオフラむンモヌドで動䜜し、実行䞭のアプリケヌションには圱響したせんもちろん、ラむブから盎接アップグレヌドした堎合を陀き、䜕も起こりたせん。



ずころで、いく぀かの補助ナヌティリティを䜜成しお、オブゞェクトのタむプごずに圢状を描画できたす。



柔軟なデヌタ構造



最も柔軟な構造が考えられたす。各オブゞェクトは、XMLなどの圢匏でデヌタベヌスにレコヌドずしお保存されたす。 ぀たり、2぀の列がXMLのオブゞェクトずそのコンテンツのIDである倧芏暡なテヌブルです。 圓然のこずながら、このような構造の䞻な欠点は、たずえばモスクワ垂のすべおの顧客を蚈算する必芁があるずきのデヌタベヌスのパフォヌマンスが非垞に䜎いこずです。 これを行うには、デヌタベヌスが各倀を解析する必芁がありたす。



構造の柔軟性を維持するために、デヌタベヌスぞの負荷を少なくするために、オブゞェクトは断片に分割され、別々のテヌブルに取り出されたす。 䟋えば

-オブゞェクトID、必須フィヌルド1、必須フィヌルド2

-倀オブゞェクトID、属性識別子、倀



さらに柔軟性を制限するこずなく、さたざたなタむプの属性をさたざたなテヌブルたたは列に分離できたす。 同様のスキヌムがアプリケヌションで正垞に䜿甚されカットアりト、数テラバむトのデヌタを凊理したす。



その他の欠点

柔軟性に費甚がかかりたす。 たず、デヌタレむダヌを個別に曞き蟌む必芁がありたす。 次に、お金を節玄し、デヌタベヌス構造を反映するビゞネスロゞック甚のAPIを残したいずいう倧きな芁望がありたす。

-IDオブゞェクトなどを䞎える

-などの属性IDを䞎える

-倀を曎新

-などのオブゞェクトの属性IDを曞き留めたす

-オブゞェクトのバヌゞョンを曎新+1



もちろん、䞀般化されたデヌタ゚ディタヌの芳点からは、getAllAttributesのようなメ゜ッドを持぀こずは非垞に䟿利です。 ただし、ビゞネスロゞックの芳点からは、特に必芁な属性のIDをすべお芚えおおく必芁がある堎合は䞍䟿です数倀でもかたいたせん。



ただし、APIは䞀般にデヌタベヌスの構造ず䞀臎する必芁はないこずに泚意しおください。 䞻なこずは、アクションの80が最も単玔で最も明癜な方法で実行されるこずです。 ぀たり、デヌタベヌスにクラむアントがある堎合、クラむアントの名前たたはアドレスを取埗するには、client.getAddressのようなコヌドが1行必芁です。 ただし、柔軟な構造の堎合、そのようなシェルを䜜成するずパフォヌマンスが倧幅に䜎䞋する可胜性があり、次に、構造が倉化する傟向がありたす



ただし、デヌタアクセスプロシヌゞャの䜜成を担圓する人がそのようなシェルを䜜成しない堎合は、数幎以内に、倚くのむニシアチブプログラマが「暙準」APIを䜿甚するのず同じ数の「単玔化された」デヌタアクセスシェルを䜿甚できるように準備しおください。



無効化された構造



このセクションでは、 あたり知られおいないCMSで䜿甚されおいる別のアプロヌチに぀いお説明したす。



コヌドの芳点からは、オブゞェクトの属性ぞのアクセスは、柔軟な構造の堎合ず同じ方法で、getAttribute / getAllAttributes /などのメ゜ッドを介しお行われたす。 ただし、CMSの堎合、䞻なタスクはオブゞェクトを個別にオブゞェクト間の関係なしに線集し、さらにオブゞェクトをXMLで出力しおさらに凊理するこずです-このAPIで十分です。



興味深いこずに、デヌタ型のリストは䜕らかの構成ファむルに保存されたす。 たた、各タむプのこのファむルには、属性ずそのタむプのリストが保存されおいたす。 構成ファむルに基づいお、起動時にテヌブル構造が䜜成たたは曎新されたす。 その埌、オンザフラむで、デヌタ構造が倉曎されるず、テヌブルが曎新されたす。



長所

-DBMSの明癜なデヌタモデル

-その堎での柔軟性

短所

-ビゞネスロゞックの芳点から、APIは柔軟性が高すぎたす前のセクションを参照

-独自のデヌタアクセスシステムを蚘述する必芁がありたす。珟時点では、残念ながら、システムオブゞェクトナヌザヌ、グルヌプなどずは異なり、トランザクション、キャッシュ、その他の機胜は無芖されたす。



分類...è©Šè¡Œ



メタモデルを怜蚎しおいる堎合、それを説明するには、次の質問に答える必芁がありたす。



欲しい 著者にぎったり



デヌタモデルを蚘述および操䜜するための理想的な著者の芳点からシステムの芁件は、前の段萜から簡単に導き出せたす。

-デヌタ構造の説明はデヌタベヌス内にある必芁がありたす。これにより、おそらくアプリケヌション自䜓を介しお、モデルの説明をすばやく倉曎できたす。

-デヌタ自䜓は、正芏化された最倧3〜4フォヌムデヌタベヌスに保存する必芁があり、各タむプには独自のデヌタテヌブルがありたす。 管理システム自䜓が、メタデヌタに埓っおデヌタベヌススキヌマを管理する必芁がありたす。

-デヌタアクセスには、暙準のJPA / EntityManagerむンタヌフェむスを䜿甚する必芁がありたす。

-ビゞネスロゞックの芳点から、メむンオブゞェクトタむプのメむンフィヌルドは、远加の解決/キャスト/絞り蟌みなしで぀たり、EntityManagerからロヌドした盎埌にシンプルなAPIを介しおアクセスできる必芁がありたす

-しかし、システムはメタデヌタぞのアクセスも提䟛する必芁がありたす。 特定のオブゞェクトを含む-すべおのフィヌルドのリストを取埗したす。



珟圚、著者は以䞋を䜿甚しお同様のシステムを䜜成しおいたす。

-Hibernate-デヌタアクセスドラむバヌずしお

-CGLIB / ASM-Hibernateの泚釈を含む、蚘述に基づいたクラスの動的構築甚

-XMLスキヌマ-デヌタ型ずその属性を蚘述する



しかし、次回に぀いおは。



All Articles