反应数据库服务器

时间:2014-12-18 17:41:00

标签: javascript database relational-database reactive-programming

我正在寻找'反应数据库',但不幸的是我不确定我是否正确称呼它。我想要的是数据库服务器,具有以下属性。我将记录表示为JavaScript对象,但仅用于演示,不需要无模式。

  1. 记录(又名行)能够存储功能:

    { "id": 1234,
    "name": "cube",
    "material": "steel",
    "volume": 2.0,
    "weight": function() { return this.volume * 8; } }
    

    当询问“重量”时,必须为用户提供值16.0。索引(如果存在)也必须相应地修改。这里没什么特别的,它是冗余的,可以用传统的SQL触发函数实现。

  2. 函数可以在其范围内包含其他对象。让我有一个集合(aka表)'材料'与记录:

    { "name": "steel", "density": 8 }
    

    然后将示例转换为:

    { "id": 1234,
    "name": "cube",
    "material": "steel",
    "volume": 2.0,
    "weight": function() { return this.volume * materials[this.material].density; } }
    

    我希望数据库在更新钢记录时重新计算“权重”(以及引用materials["steel"].density的所有其他字段)的值。使用普通的SQL触发器更难实现。但是这种行为可能被称为推动反应。

  3. 具有arity的功能可以转移给用户。考虑以下量子力学系统的集合。

    { "name": "QHO",
      "angular_frequency": 42,
      "energy": function(n) {return this.angular_frequency*1.054*(n+1/2);}
    },
    { "name": "particle_in_a_box",
      "length": 20,
      "mass": 1,
      "energy": function(n) {return (1.054*3.14)**2 * n**2 / (2*this.mass*this.length) ;}
    }
    

    然后“能量”必须作为闭包返回,带有所有引用的变量。

  4. 重新计算指定字段时,应为用户生成通知(如果需要)。

  5. 如果有什么准备好的话,请指点我吗?

0 个答案:

没有答案