除了google/bigtable场景之外,什么时候不应该使用关系数据库?为什么不呢?你应该用什么?(你学过《艰难之路》吗?)

推荐答案

根据我的经验,当以下任一条件成立时,不应使用关系数据库:

  • 您的数据被构造为任意深度的层次 struct 或图形(网络),
  • 典型的访问模式强调读而不是写,或者
  • 不需要特别查询.

深层层次 struct 和图形不能很好地转换为关系表.即使有像Oracle的CONNECT BY这样的专有扩展的帮助,使用SQL追查树也是一件非常痛苦的事情.

关系数据库为简单的读取访问增加了大量开销.事务完整性和引用完整性非常强大,但对于某些应用程序来说,这有些过头了.因此,对于以读为主的应用程序,文件隐喻就足够了.

最后,如果没有意外的查询,您就不需要一个带有完整查询语言的关系数据库.如果没有西装会问这样的问题:"我们在东海岸按销售人员分组销售了多少5%折扣的蓝色小部件?",永远不会有,那么你,先生,就可以生活在没有DB的环境中.

Sql相关问答推荐

在SQL:2003(PGQ)中,Cypher查询语言、GQL、PGQL和属性图查询的常见子集是什么?'

PostgreSQL:如果发现多行具有相似列值,则跳过 Select 行

基于前面行的值:当x&>2时重复1,当连续3行x=0时则重复0

不可能在SQL MERGE子句中引发异常

为什么在这种情况下我不能使用LAG函数?

更新其组的日期字段值小于最大日期减go 天数的记录

SQL:如何查找聚合满足条件的连续日期

为什么我的SQL标量函数有时会抛出";子查询返回多个值.这是不允许的.

如何使用SQL Server中的Nodes()方法执行与OPENXML相同的操作

SQL:查询作为子查询或CTE写入的最大和数失败

使用特定的Order By子句随机化SQL输出

使用 SQL 将列添加到 Access 数据库时出错

如何修复初学者 SQL INNER JOIN 查询错误

在没有订单的情况下,如何生成一个值为0的顾客天数行

使用对 nvarchar 列的多个 LIKE 操作优化 SQL 查询

强制 SQL 始终通过 R 从视图中返回至少一行

Select 字段,除非另一个字段包含重复项

PostgreSQL:通过数组的元素从另一个表中 Select 数据,然后按顺序显示

字符串从更改到表列和查询中的一行的转换错误

我需要遍历权重值表并确定每个权重是否有效