首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Crate是关系DB吗?

Crate是关系DB吗?
EN

Stack Overflow用户
提问于 2016-12-08 21:52:54
回答 3查看 1.1K关注 0票数 2

起初我以为它不是关系数据库,但是在我读到我可以连接表并且它是写在他们的站点https://crate.io/overview/上(参见用例)之后,我不确定。

尤其是我被这样的感觉弄糊涂了:

CrateDB基于NoSQL体系结构,但具有标准的SQL。

来自https://crate.io/overview/high-level-architecture/

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-12-09 09:22:31

使用Codd的12条规则 (用于标识关系数据库),CrateDB还不是关系数据库。CrateDB的最终一致性模型并不禁止这一点。

规则0:对于任何被宣传为关系数据库管理系统或声称是关系数据库管理系统的系统,该系统必须能够完全通过其关系功能管理数据库。

CrateDB没有可以插入、检索和更新数据的另一个接口。

规则1:关系数据库中的所有信息都在逻辑级别上显式地以一种方式以表中的值表示。

确切地说,在CrateDB中可以找到什么。

规则2:通过使用表名、主键值和列名的组合,可以保证关系数据库中的每个数据(原子值)都可以在逻辑上访问。

这是严格执行的。通过主键进行访问甚至会使您读后写的一致性。

规则3:空值(与空字符串或空白字符字符串不同,与零或任何其他数字不同)支持在完全关系DBMS中以系统的方式表示丢失的信息和不适用的信息,而不依赖于数据类型。

CrateDB支持null。

规则4:数据库描述以与普通数据相同的方式在逻辑层表示,这样授权用户就可以将相同的关系语言应用于对常规数据的查询。

CrateDB在其他元表中包括信息模式表

规则5:关系系统可以支持多种语言和不同的终端使用模式(例如,填充空白模式)。然而,必须至少有一种语言的语句是可表达的,按照一些定义良好的语法,作为字符串,并且在支持以下所有项目方面是全面的:

  • 数据定义。
  • 视图定义。
  • 数据操作(交互式和按程序操作)。
  • 完整性约束。
  • 授权。
  • 事务边界(开始、提交和回滚)。

CrateDB支持数据定义和数据操作部分,并且只支持单个完整性约束(主键)。这绝对不完整。

规则6:理论上可更新的所有视图也可以由系统更新。

CrateDB还不支持视图。

规则7:将基关系或导出关系作为单个操作数处理的能力不仅适用于数据的检索,而且适用于数据的插入、更新和删除。

CrateDB目前只用于数据检索.

规则8:当存储表示或访问方法发生任何更改时,应用程序和终端活动在逻辑上保持不变。

CrateDB对SQL的使用允许这样做;性能/存储级别的改进甚至通过系统升级来实现。

规则9:当理论上允许对基表进行保存信息的任何类型的更改时,应用程序和终端活动在逻辑上保持不变。

仍然缺少部分内容(视图、插入/更新联接)。然而,对于检索数据,情况已经如此。

规则10:特定于特定关系数据库的完整性约束必须在关系数据子语言中定义,在目录中是可存储的,而不是在应用程序中。

对于分布式数据库来说,这是相当棘手的,特别是外键约束。CrateDB目前只支持主键约束。

规则11:关系DBMS具有分布无关性。

在CrateDB中,任何类型的切分/分区/分发都是透明地为用户处理的。数据分发的任何类型的约束/设置都应用于数据定义级别。

规则12:如果关系系统有一种低级别(一次记录)语言,则不能使用该低级别来破坏或绕过用更高级别的关系语言(即多条记录)表示的完整性规则和约束。

可以说,COPY FROM直接违反了这条规则,因为在下面没有进行类型检查和转换。但是,没有其他命令/语言/API允许以其他方式操作数据。

虽然CrateDB当然还有一些事情要做,但它没有理由不会很快成为一个关系数据库。它的SQL支持可能无法与甲骨文或Postgres媲美,但许多人可以在没有特定于用例的特性的情况下生活。

如前所述,上述所有规则都不是直接违反的,而是尚未以令人满意的方式实现的,因此没有理由CrateDB最终不能成为一个完全关系的数据库。

(免责声明:我在那里工作)

票数 6
EN

Stack Overflow用户

发布于 2016-12-09 03:06:16

自关系模型开始以来,系统必须被视为关系的三个主要组件是(将Codd关于“数据模型”的三部分定义应用于关系模型):

  • 数据以关系形式表示(表)
  • 操作是通过关系和/或逻辑运算符/表达式进行的。
  • 完整性由关系和/或逻辑运算符/表达式强制执行。

此外,多用户DMBS被理解为支持明显的原子持久化事务,同时通过重叠执行(ACID)从实现中获益,分布式DBMS被理解为支持一个明显的单一数据库,同时从多个站点的实现中受益。

根据这些标准,CrateDB不是关系型的。

它有表,但对表的操作非常有限,几乎没有完整性功能。重新操作时,它允许查询满足条件(包括聚合)的表的行,并允许连接多个表,但这并不是优化的,甚至对于等同连接也是如此。Re约束,它的唯一功能是列类型、主键和非空列.它使用一个很小的SQL子集。

请参阅链接re 支撑特征标准SQL遵从性中的页面,如下所示:

代码语言:javascript
复制
Crate SQL
    Data Definition
        Constraints (PRIMARY KEY Constraint, NOT NULL Constraint)
        Indices
    Data Manipulation
    Querying Crate
        Retrieving Data (FROM Clause, Joins)
    Joins
    Crate SQL Syntax Reference

与非关系DBMS一样,它们的文档并不反映对关系模型或其他基本DBMS功能的理解或欣赏。

票数 0
EN

Stack Overflow用户

发布于 2016-12-08 22:12:39

CrateDB是一个分布式的SQL数据库。底层技术类似于所谓的NoSQL数据库通常使用的东西(共享的架构、列型索引、最终的一致性、对半结构化记录的支持),但它可以通过传统的SQL接口访问。

因此-是的,CrateDB在某种程度上是一个关系型的SQL。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41049485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档