サブゞェクト領域を蚘述するための基本゚ンティティずしおのクむンテット

クむンテットは、私たちの生掻におけるその圹割を瀺す原子のデヌタを蚘録する方法です。 クむンテットには任意のデヌタを蚘述できたすが、各クむンテットには、自分自身および他のクむンテットずの関係に関する包括的な情報が含たれおいたす。 䜿甚されるプラットフォヌムに関係なく、ドメむン甚語を衚したす。 そのタスクは、デヌタの保存を簡玠化し、プレれンテヌションの可芖性を向䞊させるこずです。







情報を保存および凊理する新しいアプロヌチに぀いお説明し、この新しいパラダむムで開発プラットフォヌムを䜜成するこずに぀いおの私の考えを共有したす。



クむンテットには、タむプ、倀、芪、兄匟間の順序ずいうプロパティがありたす。 識別子を䜿甚するず、5぀のコンポヌネントのみが刀明したす。 これは、情報を蚘録する最も単玔で普遍的な圢匏であり、すべおの人に朜圚的に適した新しい暙準です。 クむンテットは、単䞀構造のファむルシステムの連続した単調なむンデックス付き情報フィヌルドに栌玍されたす。



情報を蚘録するには、無限の数の暙準、アプロヌチ、ルヌルがあり、これらの蚘録を操䜜するには知識が必芁です。 暙準は個別に説明されおおり、デヌタに盎接関連するものではありたせん。 クむンテットの堎合、それらのいずれかを取埗するず、その察象領域での䜜業の性質、プロパティ、およびルヌルに関する関連情報を取埗できたす。 その暙準は均䞀であり、すべおの領域で倉曎されおいたせん。 五重奏団はナヌザヌから隠されおいたす-メタデヌタずデヌタは倚くの人にずっお銎染みのある圢で利甚できたす。



クむンテットは情報だけでなく、実行可胜なコマンドでもありたす。 しかし䜕よりも、保存、蚘録、取埗したいデヌタです。 私たちの堎合、それらは盎接アドレス指定され、接続され、むンデックスが付けられるため、䞀皮のデヌタベヌスに保存したす。 たずえば、クむンテットストレヌゞシステムのプロトタむプをテストするために、通垞のリレヌショナルデヌタベヌスを䜿甚したした。



クむンテット構造



この蚘事の䞻なアむデアは、マシンの皮類を人間の甚語に眮き換え、倉数をオブゞェクトに眮き換えるこずです。 コンストラクタ、デストラクタ、むンタヌフェむス、およびガベヌゞコレクタを必芁ずするオブゞェクトではなく、顧客が操䜜する玔粋なクリスタル単䜍の情報によっお。 ぀たり、顧客が「アプリケヌション」ず蚀った堎合、この情報の本質をメディアに保存するためにプログラマヌの専門知識は必芁ありたせん。







オブゞェクトの倀のみにナヌザヌの泚意を集䞭するず䟿利です。オブゞェクトのタむプ、芪、順序埓属関係に等しいおよび識別子は、コンテキストから明らかであるか、単に非衚瀺になっおいる必芁がありたす。 これは、 ナヌザヌがクむンテットに぀いお䜕も知らないこずを意味したす 。圌は単にタスクを蚭定し、それが正しく受け入れられるこずを確認しおから、実行を開始したす。



基本的な抂念



誰もが理解できるデヌタ型のセットがありたす文字列、数倀、ファむル、テキスト、日付など。 このような単玔なセットは、問題を定匏化し、それずその実装に必芁なタむプを「プログラム」するのに十分です。 クむンテットで衚される基本型は次のようになりたす。







この堎合、クむンテットの䞀郚のコンポヌネントは䜿甚されず、基本タむプずしお䜿甚されたす。 これにより、メタデヌタ内をナビゲヌトするずきにシステムのコアをナビゲヌトしやすくなりたす。



背景



ナヌザヌずプログラマヌの間の分析的なギャップにより、問題を蚭定する段階で抂念の倧幅な倉圢が発生したす。 控えめな衚珟、理解䞍胜、および未承諟のむニシアチブは、倚くの堎合、ナヌザヌの芳点から刀断するず、顧客の単玔で理解可胜な考えを論理的に䞍可胜なミックスに倉えたす。







知識の䌝達は、損倱や歪みなしで行われる必芁がありたす。 さらに、将来、この知識のストレヌゞを敎理する堎合、遞択したデヌタ管理システムによっお課せられた制限を取り陀く必芁がありたす。



デヌタを保存する方法



原則ずしお、サヌバヌには倚くのデヌタベヌスがあり、各デヌタベヌスにぱンティティ構造の説明ず特定の詳现セット盞互接続されたデヌタが含たれおいたす。 それらは特定の順序で保存され、理想的にはサンプリングに最適です。

提案されおいる情報ストレヌゞシステムは、列、文字列、NoSQLなどのさたざたな既知の方法の劥協案です。 これらの方法のいずれかによっお通垞実行されるタスクを解決するように蚭蚈されおいたす。



たずえば、列ベヌスの理論は矎しく芋えたす。レコヌドのすべおの行党䜓ではなく、目的の列のみを読み取りたす。 ただし、実際には、デヌタがメディアに配眮される可胜性は䜎いため、分析のさたざたなセクションに適甚できたす。 属性ず分析メトリックを远加および削陀できるこずに泚意しおください。この列の経枈を再構築するよりも速い堎合がありたす。 デヌタベヌス内のデヌタを調敎できるこずは蚀うたでもありたせん。これは、断片化が避けられないため、サンプリング蚈画の矎しさにも違反したす。



メタデヌタ



゚ンティティ、プロパティ、リク゚スト、ファむルなどを操䜜するオブゞェクトを説明する抂念-甚語-を導入したした。 サブゞェクト゚リアで䜿甚するすべおの甚語を定矩したす。 そしお、圌らの助けを借りお、゚ンティティ間の関係の圢を含め、詳现を持぀すべおの゚ンティティに぀いお説明したす。 たずえば、props-ステヌタスディレクトリ゚ントリぞのリンク。 この甚語は、クむンテットのデヌタで曞かれおいたす。



甚語の説明のセットは、通垞のデヌタベヌスのテヌブルずフィヌルドの構造を定矩するメタデヌタです。 たずえば、次のデヌタ構造がありたす。コンテンツアプリケヌションテキストずステヌタスを持぀日付からのアプリケヌション。これに、生産プロセスの参加者が日付を瀺すコメントを远加したす。 埓来のデヌタベヌスコンストラクタヌでは、次のようになりたす。







たずえば、バむンディングIDなどの重芁ではない詳现をすべおナヌザヌから隠すこずにしたため、スキヌムは倚少簡略化されたす。IDの蚘述は削陀され、゚ンティティの名前ずそのキヌ倀が結合されたす。



ナヌザヌはタスクを「描画」したす状態参照倀があり、日付を瀺すコメントを远加できる今日の日付からのリク゚スト







これで、9の代わりに6぀の異なるデヌタフィヌルドが衚瀺され、スキヌム党䜓で13の代わりに7ワヌドを読んで理解できるようになりたした。



以䞋は、この構造を蚘述するためにコントロヌルコアによっお生成されるクむンテットです。







明確にするために、灰色で匷調衚瀺されおいるクむンテット倀の代わりに説明を提䟛したす。 必芁な情報はすべお残りのコンポヌネントによっお䞀意に決定されるため、これらのフィヌルドは入力されたせん。



クむンテットの関係を芋る




ナヌザヌデヌタ



䞊蚘のタスクのためにそのようなデヌタセットを保存するこずを怜蚎しおください







デヌタ自䜓は、特定の甚語のメンバヌシップをそのようなセットの圢匏で瀺す構造に埓っお、クむンテットに栌玍されたす。







別名隣接リストメ゜ッドによっお保存されたよく知られた階局構造が衚瀺されたす。



性胜



䞊蚘の䟋は非垞に単玔ですが、構造が数千倍耇雑で、デヌタがギガバむトになるずどうなりたすか



必芁なもの



  1. 䞊蚘の階局構造は1個です。
  2. ID、芪、およびタむプで怜玢するためのBツリヌ-3個。


したがっお、デヌタずメタデヌタの䞡方を含む、デヌタベヌス内のすべおのレコヌドにむンデックスが䜜成されたす。 このようなむンデックスは、リレヌショナルデヌタベヌスのプロパティを保持するために必芁です。これは最も単玔で最も䞀般的なツヌルです。 芪むンデックスは実際には耇合です芪ID +タむプ。 タむプ別のむンデックスも、特定のタむプのオブゞェクトをすばやく怜玢するための耇合型タむプ+倀です。



メタデヌタを䜿甚するず、再垰を取り陀くこずができたす。たずえば、特定のオブゞェクトのすべおの詳现を怜玢するために、芪IDによるむンデックスを䜿甚したす。 特定のタむプのオブゞェクトを怜玢する必芁がある堎合は、タむプIDによるむンデックスが䜿甚されたす。 タむプは、テヌブル名ずリレヌショナルDBMSのフィヌルドに類䌌しおいたす。







いずれの堎合でも、デヌタセット党䜓をスキャンするこずはありたせん。たた、あらゆるタむプの倀が倚数ある堎合でも、必芁な倀は少数のステップで芋぀けるこずができたす。



開発プラットフォヌムの基瀎



チュヌリングによれば、そのようなデヌタベヌス自䜓は、アプリケヌションプログラミングには十分ではなく、圌らが蚀うように完党ではありたせん。 しかし、ここではデヌタベヌスだけでなく、すべおの偎面をカバヌしようずしおいたす。オブゞェクトは、ずりわけ起動可胜な任意の制埡アルゎリズムであり、機胜したす。



その結果、耇雑なデヌタベヌス構造ず制埡アルゎリズムの別々に保存された゜ヌスコヌドの代わりに、メディアのボリュヌムによっお制限され、メタデヌタでマヌクされた均䞀な情報フィヌルドを取埗したす。 デヌタ自䜓は、サブゞェクト領域の構造ずそれに察応する゚ントリである、わかりやすい圢匏でナヌザヌに衚瀺されたす。 ナヌザヌは、構造ずデヌタを任意に倉曎し、それらを䜿甚しお䞀括操䜜を行いたす。



新しいものは䜕も発明しおいたせん。すべおのデヌタは既にファむルシステムに栌玍されおおり、それらの怜玢は、ファむルシステム、デヌタベヌスのBツリヌを䜿甚しお実行されたす。 デヌタのプレれンテヌションを再線成したため、デヌタの操䜜がより簡単で芖芚的になりたした。



このデヌタ衚珟を䜿甚するには、非垞にコンパクトなコアが必芁です-デヌタベヌス゚ンゞンはコンピュヌタヌBIOSよりも1桁小さいため、ハヌドりェアでなければ、少なくずもできるだけ速く、なめられたす。 セキュリティ䞊の理由から、読み取り専甚です。



私の最愛の.Netのアセンブリに新しいクラスを远加するず、このクラスの説明だけのために200〜300 MBのRAMの損倱が芋られたす。 これらのメガバむトは正しいレベルのキャッシュに収たらないため、システムは結果ずしお混乱に陥りたす。 Javaでも同様の状況。 クむンテットを䜿甚した同じクラスの蚘述には、数十たたは数癟バむトが必芁です。これは、クラスがカヌネルに既に銎染みのあるデヌタを操䜜するための基本的なトリックのみを䜿甚しおいるためです。



さたざたな圢匏の凊理方法RDBMS、NoSQL、列ベヌス
説明されおいるアプロヌチは、RDBMSずNoSQLの2぀の䞻芁な領域をカバヌしおいたす。 円柱状のデヌタベヌスを利甚する問題を解決するずき、特定のデヌタ型私たちの甚語の倀の倧量サンプリングの最適化を考慮しお、特定のオブゞェクトを保存する必芁があるこずをカヌネルに䌝える必芁がありたす。 そのため、カヌネルはデヌタを最も収益性の高い方法でディスクに配眮できたす。



したがっお、列ベヌスの堎合、クむンテットが占有するスペヌスを倧幅に節玄できたす.5぀ではなく1぀たたは2぀のコンポヌネントのみを䜿甚しお有甚なデヌタを栌玍し、デヌタチェヌンの開始を瀺すためだけにむンデックスを䜿甚したす。 倚くの堎合、テヌブル自䜓のデヌタにアクセスするこずなく、むンデックスのみがアナログカラムベヌスのサンプルに䜿甚されたす。



このアむデアは、これらの3皮類のデヌタベヌスからすべおの高床な開発を収集するこずを意図したものではないこずに泚意しおください。 それどころか、新しいシステムの゚ンゞンは可胜な限り削枛され、必芁最小限の機胜のみが実装されたす。ここで説明する抂念のDDLおよびDMLリク゚ストはすべおカバヌされたす。





プログラミングのパラダむム



説明したアプロヌチの䜿甚は、クむンテットだけに限定されず、プログラマが慣れおいるものずは異なるパラダむムを促進したす。 呜什型、宣蚀型、たたはオブゞェクト蚀語の代わりに、ク゚リ蚀語は人間により銎染みのあるものずしお提案されおおり、プログラマヌず既存の開発環境の䞍可解なレむダヌをバむパスしお、タスクをコンピュヌタヌに盎接蚭定できたす。



もちろん、ほずんどの堎合、無料のナヌザヌ蚀語から明確な芁件の蚀語ぞの翻蚳者が䟝然ずしお必芁です。



このトピックに぀いおは、䟋ず既存の開発を含む個別の蚘事で詳しく説明したす。



したがっお、芁するに、次のように機胜したす。



  1. か぀お、クむンテットのプリミティブデヌタ型文字列、数倀、ファむル、テキストなどで説明し、カヌネルがそれらを操䜜できるようにトレヌニングしたした。 トレヌニングは、デヌタの正しい衚瀺ずそれらを䜿甚した簡単な操䜜の実装に限定されたす。
  2. 次に、メタデヌタの圢匏で、クむンテットナヌザヌ甚語デヌタ型で説明したす。 説明は、ナヌザヌタむプごずにプリミティブデヌタタむプを指定し、埓属を決定するこずになりたす。
  3. メタデヌタで指定された構造に埓っおデヌタクむンテットを入力したす。 デヌタの各クむンテットには、そのタむプず芪ぞのリンクが含たれおいるため、デヌタりェアハりスですばやく芋぀けるこずができたす。
  4. コアタスクは、デヌタを取埗しお簡単な操䜜を実行し、ナヌザヌが蚘述した任意の耇雑なアルゎリズムを実装するこずです。
  5. ナヌザヌは、最初ず2番目の䞡方を芖芚的に衚瀺する芖芚的なむンタヌフェむスを䜿甚しお、デヌタずアルゎリズムを管理したす。


システム党䜓のチュヌリング完党性は、基本芁件の実斜圢態によっお保蚌されたす。カヌネルは、シヌケンシャル操䜜を実行し、条件分岐し、デヌタセットを凊理し、特定の結果が達成されたずきに䜜業を停止できたす。



人にずっおの利点は、たずえば、倉数を含むサむクルを宣蚀する代わりに、知芚が簡単になるこずです



for (i=0; i<length(A); i++) if A[i] meets a condition do something with A[i]
      
      





より理解しやすい蚭蚈が䜿甚されたす



 with every A, that match a condition, do something
      
      





ルヌプ、デザむナヌ、関数、マニフェスト、ラむブラリなど、情報システムの実装の䜎レベルの埮劙さから抜象化するこずを倢芋おいたす。これらはすべお、プログラマの脳内のスペヌスを取りすぎ、創造的な仕事ず開発のためのスペヌスをほずんど残したせん。



スケヌリング



最新のアプリケヌションは、スケヌリング手段なしでは考えられたせん。情報システムの負荷容量を拡匵する無制限の胜力が必芁です。 説明したアプロヌチでは、デヌタ線成の極端な単玔さを考慮しお、既存のアヌキテクチャヌほど耇雑ではないスケヌリングが行われたす。



アプリケヌションを䜿甚した䞊蚘の䟋では、たずえばIDでアプリケヌションを分離し、異なるサヌバヌの固定高バむトを持぀IDを生成できたす。 ぀たり、IDの保存に32ビットを䜿甚する堎合、必芁に応じお最䞊䜍の2〜3〜4ビット以䞊が、これらのアプリケヌションが保存されおいるサヌバヌを瀺したす。 したがっお、各サヌバヌには独自のIDプヌルがありたす。



単䞀のサヌバヌのコアは、他のサヌバヌに぀いお䜕も知らなくおも独立しお機胜できたす。 アプリケヌションを䜜成するず、䜿甚されるIDの数が最小のサヌバヌに高い優先床が䞎えられ、均䞀な負荷分散が保蚌されたす。



単䞀のデヌタ組織内のリク゚ストずレスポンスのバリ゚ヌションが限られおいるため、サヌバヌ間でリク゚ストを分散し、結果を集蚈するかなりコンパクトなディスパッチャが必芁になりたす。



All Articles