Spec-Zone.ru › Elasticsearch 8
›Elasticsearch Guide [8.17] ›SQL ›Конвенции и терминология

Концепции сопоставления между SQL и Elasticsearch

Хотя SQL и Elasticsearch используют разные термины для организации данных (и разные семантики), по сути их цель одинакова.

Итак, давайте начнем с основ; они примерно такие:

SQL Elasticsearch Описание

column

field

В обоих случаях на самом низком уровне данные хранятся в именованных записях различных типов данных, содержащих одно значение. SQL называет такую запись столбцом, а Elasticsearch — полем. Обратите внимание, что в Elasticsearch поле может содержать несколько значений одного типа (по существу список), в то время как в SQL столбец может содержать ровно одно значение указанного типа. Elasticsearch SQL сделает все возможное, чтобы сохранить семантику SQL, и, в зависимости от запроса, отклонит те, которые возвращают поля с более чем одним значением.

row

document

Column и field не существуют сами по себе; они являются частью row или document. У них немного различаются семантики: row, как правило, строгие (и имеют больше ограничений), а document немного более гибкие или свободные (при этом сохраняя структуру).

table

index

Целевая область, к которой применяются запросы, будь то в SQL или Elasticsearch.

schema

неявное

В RDBMS schema в основном представляет собой пространство имен таблиц и обычно используется как граница безопасности. Elasticsearch не предоставляет эквивалентной концепции. Однако при включенной безопасности Elasticsearch автоматически применяет меры безопасности, чтобы роль видела только те данные, которые ей разрешено (в терминологии SQL — её схема).

catalog или database

экземпляр cluster

В SQL, catalog или database используются взаимозаменяемо и представляют собой набор схем, то есть ряд таблиц. В Elasticsearch набор доступных индексов сгруппирован в cluster. Семантика также немного отличается; database по сути является ещё одним пространством имен (что может повлиять на способ хранения данных), а экземпляр Elasticsearch cluster — это экземпляр выполнения, или скорее набор по крайней мере одного экземпляра Elasticsearch (обычно распределённый). На практике это означает, что, в то время как в SQL можно потенциально иметь несколько каталогов внутри экземпляра, в Elasticsearch разрешено только один.

cluster

cluster (федерированный)

Традиционно в SQL кластер относится к одному экземпляру RDBMS, который содержит ряд catalog или database (см. выше). То же слово может быть использовано и в Elasticsearch, однако его семантика прояснена.

В то время как RDBMS, как правило, имеют только один работающий экземпляр на одном компьютере (не распределённый), Elasticsearch действует наоборот и по умолчанию является распределённым и многоэкземплярным.

Более того, кластер Elasticsearch можно подключить к другим кластерам Elasticsearch в федерированном режиме, поэтому cluster означает:

один кластер:: несколько экземпляров Elasticsearch, обычно распределённых по машинам, работающих в рамках одного пространства имен. несколько кластеров:: несколько кластеров, каждый со своим пространством имен, соединённых друг с другом в федерированной установке (см. поиск по кластерам).

Как можно заметить, сопоставление понятий не является точным однозначным соответствием, и семантика несколько отличается, но общих черт больше, чем различий. На самом деле, благодаря декларативной природе SQL, многие понятия могут быть перенесены в Elasticsearch прозрачно, и терминология двух систем, вероятно, будет использоваться взаимозаменяемо в дальнейшем материале.

© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/8.17/_mapping_concepts_across_sql_and_elasticsearch.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API