粗粒度(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操作过多是从这方面考虑的。

扫描二维码关注公众号,回复: 2486665 查看本文章

再列出其他人的观点:

“两个接口
细粒度的查询任务的接口
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,根据什么查都是这个接口。


粗粒度与细粒度是一个相对的概念,也不是说对所有会涉及到粗粒粒度问题的工作都是一致偏向的。粗粒度和细粒度的区别主要是出于重用的目的。像类的设计,为尽可能重用,所以采用细粒度的设计模式,将一个复杂的类(粗粒度)拆分成高度重用的职责清晰的类(细粒度)。   对于数据库的设计,原则:尽量减少表的数量与表与表之间的连接,能够设计成一个表的情况就不需要细分,所以可考虑使用粗粒度的设计方式。

 数据库访问控制的粗细粒度问题:

 根据控制对象的粗细程度,访问控制可分为粗粒度和细粒度两种 通常把规定访问整个数据库表或由基本表导出的视图的某个层称为粗粒度的访问控制,而细粒度控制则是把安全控制细化到数据库的行级或列级。

猜你喜欢

转载自www.cnblogs.com/HoneyTYX/p/9396446.html