粗粒度(Coarse-grained)vs細粒度(fine-grained)


在讀的一篇文獻中關於RDF的描述:

 

As we know, RDF data is a set of triples with the form (subject, property, object). This fine-grainedmodel leads to SPARQL queries on RDF data with a large number of joins.

 

這是一種新穎的提法,看了很多文章,這是第一次有人將RDF看作fine-grained(細粒度)模型,而且這種細粒度特性使得針對RDF數據的SPARQL查詢包含大量的join操作。

我對粗細粒度的理解非常有限,在書本上貌似碰到過的。網上搜集了關於這一概念的理解,現在列出,以后還有待自己加深理解之后的補充。

 

“粒度似乎是根據項目模塊划分的細致程度區分的,一個項目模塊(或子模塊)分得越多,每個模塊(或子模塊)越小,負責的工作越細,就說粒度越細,否則為粗粒度”--- 我覺得這中理解是最到位的,也是最淺顯易懂的。

 

“粗粒度和細粒度的區別主要是出於重用的目的,像類的設計,為盡可能重用,所以采用細粒度的設計模式,將一個復雜的類(粗粒度)拆分成高度重用的職責清晰的類(細粒度).對於數據庫的設計,原責:盡量減少表的數量與表與表之間的連接,能夠設計成一個表的情況就不需要細分,所以可考慮使用粗粒度的設計方式。”---首先,關於重用,越復雜粒度越粗重用性應該是越差的,因而我覺得這種說法是正確的;其次,提到了數據庫設計,粗細粒度的取舍也是一個關鍵,可見開篇關於RDF細粒度導致join操作過多是從這方面考慮的。

 

再列出其他人的觀點:

 

“兩個接口
細粒度的查詢任務的接口
interface TaskService{
  public List getTaskById(int id);
  public List getTaskByName(String name);
  public List getTaskByAge(int age);

}

那么粗粒度的接口該是什么樣的呢?
interface TaskService{
  public List getTask(Person person);
}
person有name,id,age,根據什么查都是這個接口。


粗粒度與細粒度是一個相對的概念,也不是說對所有會涉及到粗粒粒度問題的工作都是一致偏向的。粗粒度和細粒度的區別主要是出於重用的目的。像類的設計,為盡可能重用,所以采用細粒度的設計模式,將一個復雜的類(粗粒度)拆分成高度重用的職責清晰的類(細粒度)。   對於數據庫的設計,原則:盡量減少表的數量與表與表之間的連接,能夠設計成一個表的情況就不需要細分,所以可考慮使用粗粒度的設計方式。

 數據庫訪問控制的粗細粒度問題:

 根據控制對象的粗細程度,訪問控制可分為粗粒度和細粒度兩種 通常把規定訪問整個數據庫表或由基本表導出的視圖的某個層稱為粗粒度的訪問控制,而細粒度控制則是把安全控制細化到數據庫的行級或列級。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM