粗粒度vs細粒度


128

粗粒度と細粒度の違いは何ですか?

私はGoogleでこれらの用語を検索しましたが、それらの意味が見つかりませんでした。


質問は十分具体的ではないと思います。これらの用語は、システムコンポーネントの粒度を説明するためだけに使用されるのではありません。それらは、アクセス制御細分性を説明するためにも使用されます(そしておそらくもっと多くの使用法があります...)。
2017

回答:


136

ウィキペディアから(粒度)

細分性は、システムがシステム自体またはその説明または観察のいずれかの小さな部分に分割される程度です。これは、より大きなエンティティが細分される程度です。たとえば、インチに分割されたヤードは、フィートに分割されたヤードよりも細かくなります。

粒度の粗いシステムは、粒度の細かいシステムよりも少数の大きなコンポーネントで構成されます。システムの粗い記述は大きなサブコンポーネントと見なされ、細かい記述は大きなコンポーネントを構成する小さなコンポーネントと見なされます。


38

簡単な言葉で

  • 粗粒度 -細粒度の大きなサブコンポーネントよりも大きなコンポーネント。1つ以上の細かいサービスを単純​​にまとめて、より粗い操作にします。
  • きめの細かい -大きいコンポーネントを構成する小さいコンポーネント、低レベルのサービス

きめの細かい操作で構成される、よりきめの細かいサービス操作を行うことをお勧めします

ここに画像の説明を入力してください


24

粒度の粗い:少数のオブジェクトが多くの関連データを保持しているため、サービスの機能範囲が広がっています。例:単一の「Account」オブジェクトは、顧客名、住所、口座残高、開始日、最終変更日などを保持します。 したがって、設計の複雑さが増し、さまざまな操作に対するセルの数が少なくなります

きめ細かい:より多くのオブジェクトがそれぞれより少ないデータを保持するため、サービスの機能範囲がより狭くなっています。例:Accountオブジェクトは残高を保持し、Customerオブジェクトは名前と住所を保持し、AccountOpeningsオブジェクトは開始日を保持します。 したがって、設計の複雑さが減少し、さまざまなサービス操作に対するセル数が増加します。これらは、これらのオブジェクト間に定義された関係です。


きめの細かい操作で構成される、よりきめの細かいサービス操作を行うことをお勧めします。
Humaun Rashid Nayan、2016


6

理解するもう1つの方法は、プロセスとスレッド間の通信という観点から考えることです。プロセスは、ソケット、シグナルハンドラ、共有メモリ、セマフォ、ファイルなどの大まかな通信メカニズムを使用して通信します。一方、スレッドはプロセスに属する共有メモリ空間にアクセスできるため、より細かい通信メカニズムを適用できます。

ソース:実際のJava並行性


3

テキストファイルのようなデータセットに関しては、粗いということは、データセット全体を変換できるが、データセット上の個々の要素は変換できないことを意味します。


2

サービスのコンテキストでは:

http://en.wikipedia.org/wiki/Service_Granularity_Principle

用語は相対的ではありますが、粗粒度のサービス操作は細粒度のサービスよりも広い範囲を定義しています。前者は通常、設計の複雑さが増す必要がありますが、タスクを完了するために必要な呼び出しの数を減らすことができます。

きめの細かいサービスインターフェイスは、おしゃべりなインターフェイスとほぼ同じです。


2

粗粒度と細粒度の両方が、いくつかのサービスの最適化について考えています。しかし、違いはレベルにあります。例を挙げて説明すると、わかりやすくなります。

きめ細かい:たとえば、findbyId、findbyCategry、findbyNameなどの100個のサービスがあります。その多くのサービスの代わりに、find(id、category、name ....など)を提供できない理由。このようにして、サービスを削減できます。これは一例ですが、サービスの数を最適化する方法が目標です。

粗粒度:たとえば、私は100のクライアントがあり、各クライアントには独自の100のサービスのセットがあります。だから私は100 * 100の合計サービスを提供する必要があります。とても難しいです。その代わりに、ほとんどのクライアントに適用されるすべての一般的なサービスを1つのサービスセットとして識別し、個別に残しています。たとえば、100サービスでは50サービスが一般的です。したがって、100 * 50 + 50のみを管理する必要があります。


1

粗い粒度は、必ずしもコンポーネントが大きいことを意味するわけではありません。「粗い」という単語の文字通りの意味で言うと、粗い、または適切ではないことを意味します。たとえば、ソフトウェアプロジェクト管理で、小さなシステムをいくつかのコンポーネントに分割します。コンポーネントはサイズは同じですが、複雑さと機能は異なり、粒度が粗くなる可能性があります。逆に、細かく分類するには、各コンポーネントが提供する機能の凝集性に基づいてコンポーネントを分割します。


1

粗粒と細粒。これらのモードはどちらも、複数のSparkタスク間でコアを共有する方法を定義します。名前が示すように、ファイングレインモードは、コアをより詳細なレベルで共有します。ファイングレインモードはSparkで非推奨になり、まもなく削除されます。


1

細粒度サービスは、細粒度サービスと比較してより幅広い機能を提供します。ビジネスドメインに応じて、単一のサービスを作成して単一のビジネスユニットにサービスを提供したり、サブユニットが相互に大きく独立している場合は、専門の複数の細かいサービスを作成したりできます。粒度の粗いサービスは、そのサイズが原因で変更が困難になる可能性がありますが、粒度の細かいサービスは、複数のサービスの管理がさらに複雑になる可能性があります。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.