SQL 和 Elasticsearch 概念映射

编辑

SQL 和 Elasticsearch 概念映射

编辑

尽管 SQL 和 Elasticsearch 对于数据组织方式的术语不同(并且语义也不同),但它们的本质目的是相同的。

所以让我们从最底层开始;大致如下:

SQL Elasticsearch 描述

列(column)

字段(field)

在两种情况下,在最低级别,数据都存储在命名的条目中,这些条目具有各种数据类型,并包含一个值。SQL 将这样的条目称为,而 Elasticsearch 称为字段。请注意,在 Elasticsearch 中,一个字段可以包含相同类型的多个值(本质上是一个列表),而在 SQL 中,一个可以包含所述类型的一个值。Elasticsearch SQL 将尽最大努力保留 SQL 语义,并且根据查询,拒绝返回多个值的字段。

行(row)

文档(document)

字段本身并不存在;它们是文档的一部分。两者具有略微不同的语义:倾向于严格(并且具有更多强制执行),而文档倾向于更灵活或宽松(同时仍然具有结构)。

表(table)

索引(index)

执行 SQL 或 Elasticsearch 查询的目标。

模式(schema)

隐式(implicit)

在 RDBMS 中,schema 主要用作表的命名空间,通常用作安全边界。Elasticsearch 没有为其提供等效的概念。但是,当启用安全性时,Elasticsearch 会自动应用安全强制执行,以便角色只能看到它被允许访问的数据(在 SQL 术语中,其模式)。

目录(catalog)数据库(database)

集群(cluster)实例

在 SQL 中,目录数据库可以互换使用,表示一组模式,即多个表。在 Elasticsearch 中,可用的索引集被分组到一个集群中。语义也有所不同;数据库本质上是另一个命名空间(可能会对数据的存储方式产生一些影响),而 Elasticsearch 集群是一个运行时实例,或者更确切地说,是至少一个 Elasticsearch 实例的集合(通常是分布式运行的)。实际上,这意味着在 SQL 中,一个实例中可能存在多个目录,而在 Elasticsearch 中,则只能限制为一个

集群(cluster)

集群(联邦式)

传统上,在 SQL 中,集群是指包含多个目录数据库的单个 RDBMS 实例(见上文)。同一个词也可以在 Elasticsearch 中重用,但其语义会略有澄清。

RDBMS 倾向于在单台机器上只有一个正在运行的实例(分布式),而 Elasticsearch 则相反,默认情况下是分布式和多实例的。

此外,Elasticsearch 集群可以以联邦式方式连接到其他集群,因此集群意味着

单个集群:: 通常分布在多台机器上的多个 Elasticsearch 实例,在同一个命名空间内运行。多个集群:: 多个集群,每个集群都有自己的命名空间,以联邦方式相互连接(请参阅跨集群搜索)。

正如人们所见,尽管概念之间的映射并非完全一一对应,并且语义有所不同,但共同点多于差异。事实上,由于 SQL 的声明式特性,许多概念可以透明地在 Elasticsearch 中移动,并且这两个术语可能会在其余材料中互换使用。