什么是“原子数据单位”?

时间:2013-09-30 00:06:29

标签: meteor

我正在努力了解Meteor的Deps.Dependency工具。在文档中,它说:

  

依赖关系表示a的反应数据的原子单位   计算可能取决于。

要在上下文中查看此内容,go here

我四处寻找“原子数据单元”的定义,但我找不到它的定义。有谁知道它究竟意味着什么? “数据单元”是有意义的 - 我想我正在试图理解要包含的“原子”这个词的假设特征。

2 个答案:

答案 0 :(得分:2)

Atomic(曾几何时)意味着“不能分成小块”。从那以后,我们学会了分裂原子,所以与化学的类比并不真正成立。

尽管如此,数据的原子单位是不能(合理地)分解成更小部分的数据。什么构成“较小的部分”当然是非常主观的。是一个整数原子?如果我将其分解为用于在内存中表示的字节,该怎么办?我如何将这些字节进一步分解为位?你可以看到这很快就会变得乏味。

出于您的目的,我认为存储在数据库表中的单元格中的任何值都是原子的。

答案 1 :(得分:2)

我绝不是Meteor的专家从未真正使用它。我对当前框架的兴趣只是过去,并且想知道它们是什么。

Meteor围绕一种MVC模式构建。只要模型中的数据发生更改,所有通用视图都会更新。通过概括,我的意思是视图不必是UI元素。

这是由Deps.Dependency对象实现的。在您的链接示例中,weather对象是"守卫"由weatherDep依赖。

当天气变化时,会触发相关性,并且会重新计算/渲染依赖天气信息的所有视图。

在这种情况下,天气被视为数据的原子单位。

现在在示例中,天气是单个字符串,但即使天气包含多条信息,同样的原则也适用;说降水和温度。

那么什么是数据的原子单位?

无论数据模型的创建者认为是什么。

对于上面的示例,假设您的页面上有天气小部件。此小部件使用天气数据并创建一个图像,其中包含天气(云,雨,太阳等)的图形表示以及一个角落的温度。对于此小部件,天气是数据的原子单位,如果构成天气变化的任何信息,则需要重新绘制整个小部件。

第二小部件可以例如仅显示温度。你可以让这个小部件依赖于天气数据,但这意味着即使只有降水变化也会重新计算它,所以你可能决定有两个依赖关系;一个用于整个天气物体,一个用于温度。在一种情况下,天气是数据的原子单位,而在另一种情况下,天气是温度。

在这种情况下,您需要两组函数,因此温度小部件会在正确的依赖项上调用depends()

修订后的代码:

var weather = {precipitation:0.5, temperature:20};
var weatherDep = new Deps.Dependency;
var temperatureDep = new Deps.Dependency;

var getWeather = function () {
  weatherDep.depend()
  return weather;
};

var getTemperature = function () {
  temperatureDep.depend()
  return weather;
};


var setWeather = function (w) {
  weather = w;
  // (could add logic here to only call changed()
  // if the new value is different from the old)
  weatherDep.changed();
  temperatureDep.changed();
};

var setTemperature = function (t) {
  weather.temperature = t;
  // (could add logic here to only call changed()
  // if the new value is different from the old)
  temperatureDep.changed();
};

链接中的文档说明了,我希望我的解释更清楚。