Spec-Zone.ru › Elasticsearch 7
›Elasticsearch Guide [7.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 кластер относится к одному экземпляру RDMBS, который содержит ряд catalog или database (см. выше). То же слово может быть также использовано в Elasticsearch, однако его семантика немного уточняется.

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

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

одиночный кластер:: Несколько экземпляров 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/7.17/_mapping_concepts_across_sql_and_elasticsearch.html

Spec-Zone.ru

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