【发布时间】:2017-07-30 16:24:11
【问题描述】:
我目前正在从事一个项目,我们正在使用 Cassandra 作为我们的数据库在 Scala 中开发一组微服务。我想知道我们是否有任何标准 为甚至不在第一范式中的实体编写 RESTful API ??
我会举一个典型的例子。
考虑一个实体集 Fruits。在传统的 RDBMS 中,如果我们要存储水果的颜色,我们可以创建一个表 Colors has 与每种颜色关联的整数作为其主键。为了将颜色映射到水果,您可以有另一个将水果映射到颜色的关系。我们的数据库 设计满足 Boyce Codd 范式,我们可以设计直观的 REST 端点。
/fruits(/:id)
/colors(/:id)
/fruits/:id/colors
/colors/:id/fruits
输入 NoSQL 数据库。颜色是 Fruits 实体集本身的一个属性,它的域是一组 varchar。如果我要将 Apple 插入数据集并关联 颜色为红色和绿色,我必须将这些字符串作为该记录的一部分存储在一个集合中。
如果我现在想更新实体并从列表中删除绿色怎么办?或者也许在列表中添加一种新颜色?
无论底层数据库设计如何,都应该将其分解为一个单独的端点吗?还是应该是有效载荷的一部分?
类似的东西
{
"name": "Apple",
"colors": ["green', "red"]
}
谢谢,
乌萨夫
【问题讨论】:
标签: rest cassandra microservices nosql