К SQL или не для SQL: это не вопрос

Oracle спонсировал этот пост.

Продолжающиеся дебаты между SQL и NOSQL столь же старыми, как и системы реляционных баз данных. С тех пор, как Эдгар Ф. Кодд представил концепцию реляционной базы данных в 1970 году, существует постоянное глубокое напряжение между структурой и гибкостью в системах баз данных.

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

Каждый лагерь претендует на доминирование-SQL для последовательности и целостности, NOSQL для скорости и ловкости-однако реальной тенденцией является конвергенция, поскольку оба лагеря все чаще работают над объектами заимствования у другого.

SQL и NOSQL: сходиться в многомодельные базы данных

Мультимодельные базы данных, такие как MySQL, PostgreSQL и Oracle, находятся на переднем крае интеграции нереляционных возможностей в традиционно реляционные системы. Последние инновации включают в себя векторную обработку, функции хранилища документов и поддержку коллекций документов JSON. Эти новые возможности позволяют разработчикам:

  • Работать с документами JSON, используя знакомые документы API
  • Запрос и процесс как структурированные, так и полуструктурированные данные с использованием SQL
  • Объедините реляционную нормализацию с развитием, ориентированной на документы

Мультимоделиные базы данных поддерживают APIS Store Documents Store

Все эти многомоделические базы данных ввели бинарный формат для хранения данных JSON и оптимизированного. Это включает в себя формат Oracle Oson, который показал преимущества по сравнению с BSON в исследованиях для эффективности и эффективности постепенных обновлений.

Для разработчиков, ищущих опыт работы с документом, поставщики предлагают API, которые разоблачают местные магазины JSON, такие как MySQL X Devapi, PostgreSQL FerretDB или API базы данных Oracle для MongoDB. Эти API обеспечивают простоту развития NOSQL на вершине реляционной инфраструктуры. Разработчики пользуются простотой и ловкостью фальшивой схемы разработки без необходимости базы данных хранилища документов специального назначения.

Однако, в отличие от SQL, API хранилища документов не являются стандартизированными и остаются специфичными для поставщиков. Усилия по определению общего стандарта продолжаются, но все еще находятся на ранних стадиях.

Запрос JSON с SQL

При поддержке Native JSON разработчики могут рассматривать коллекции документов как первоклассные граждане в базе данных. Используя ANSI SQL/JSON (введенный в SQL: 2016), вы можете извлекать значения, нендесные массивы, фильтровать документы и применять функции SQL к содержанию JSON. Это моет реляционные и полуструктурированные данные с помощью унифицированного языка, открывая дверь, чтобы получить выгоду от силы SQL для аналитики и отчетности.

Вот пример, который запрашивает коллекцию фильмов JSON, извлекает атрибуты, собирает валовой доход к году и рассчитывает долю доходов каждый год:

С доходом как (Select M.Data.year, Round (sum (JSON_VALUE (данные, ‘$. Gross’ возвращающийся номер NULL на ошибке NULL на пустых))/1000000), как миллионы из фильмов m, где M.Data.Gross не является нулевой группой по M.Data.year) Выберите Год, Millions, route (rotio_to_report (миллионы). Год> 2000 Орден по Год депуск; 123456789101112131415161718192021222324252627 с доходом как (Select M.Data.year, раунд (сумма (JSON_VALUE (данные, «$. Gross». ) Выберите Год, миллионы, раунд ((COTIO_TO_REPORT (миллионы) OUP ())*100,2) PCT_REVENUE из выручки r, где год> 2000 год по год по год.

В этом примере используются как оператор ANSI SQL/JSON JSON_VALUE, так и упрощенную точечную нотацию Oracle, простой способ извлечения скалярных значений в стиле SQL (M.Data.year).

Разработчики извлекают и «реляционные» атрибуты, хранящиеся в документах JSON, присоединяются к этой информации с реляционными таблицами и используют вложенные подразделы или другие конструкции — так же, как они используют любой доступный оператор SQL или функцию для реляционных объектов.

Разоблачение реляционных данных как документы JSON

И наоборот, реляционные данные могут быть раскрыты в качестве документов JSON с использованием представлений сбора JSON, что делает их доступными для приложений, ориентированных на документы. Следующий пример создает представление о коллекции JSON на вершине таблицы Oracle EMP, вероятно, одна из первых реляционных таблиц, когда -либо созданных для демонстрационных целей:

Создать или заменить коллекцию JSON View emp_collection как Select json {‘_ ID’: empno, «Имя работника»: ename, ‘Jobrole’: job} от EMP; 1234567891011 Создать или заменить json collection View emp_collection как Select json {‘_ id’: empno, «Имя работника»: Ename, ‘Jobrole’: job} из EMP;

Использование этого представления коллекции через API хранилища документов будет возвращать данные, аналогичные:

Jason> db.emp_collection.findone () {_id: 7369, имя работодателя: ‘smith’, jobrole: ‘clerk’} 123 Jason> db.emp_collection.findone () {_id: 7369, имя работоспособности: ‘Smith’, Jobrole: ‘clerk’}

Эта двунаправленная гибкость размывает границы между SQL и NOSQL и разворачивает то, как данные обрабатываются из того, как они хранятся.

Помимо двойного доступа: релационная двойственность JSON

В то время как нативное двоичное хранилище JSON, документы API и функциональность SQL/JSON представляют собой сильный прогресс, двойственность JSON-релационная двойственность делает все шаг вперед. Эта новая возможность предлагает лучшее из документов Relational и JSON без компромиссов любой модели.

Короче говоря, двойственные просмотры хранят документы JSON внутренне в высокоэффективном нормализованном формате, используя реляционные и JSON Constructs. В то же время разработчики взаимодействуют с документами JSON.

Двойственность просмотров: хранятся как строки, выставленные в виде документов

Независимо от того, использует ли приложение API-интерфейсы REST или, ориентированные на документы, разработчики получают выгоду от простоты извлечения и работы со всеми данными, необходимыми для одного объекта приложения: документ JSON. Создание представления JSON Duality довольно просто. Как и представление о сборе JSON, разработчики определяют модель объектного документа для бизнес -объекта как метаданные в базе данных.

Вот простой пример, который определяет представление двойственности для моделирования графика конференции с использованием GraphQL. Объект графика состоит из:

  • Информация об посетителе
  • Расписание индивидуального участника
  • Представление о расписании на одну или несколько сессий, которые посетитель планирует посетить
  • Подробная информация о сеансе, включая информацию о докладчике

Создать или заменить JSON DUALITY View PREDULEV в качестве посетителя {_ID: Имя помощи: Анамское расписание: расписание @Insert @Update @Delete {gadeId: spade_id sessions @unnest {sessionId: sid name: имя: number speaker @unnest {speakerid: sid speaker: name}}}};; 123456789101112131415161718192021222324252627282930313233 Создание или замену JSON DUALITY View PREDULEV AS FITEDEE {_ID: AD name: aname warry @insert @update @delete {warderid: warded_dest @sessions @ @sescession @ @sescession @ @sessionsdest @ Номер динамика @Unnest {SpeakerID: SID Speaker: name}}}};

Следовательно, двойственность JSON-релатационной среды обеспечивает преимущества хранения, последовательности и эффективности реляционной модели, в то время как приложения извлекают и манипулируют глубоко вложенными структурами JSON.

Лучшее из обоих миров

Конвергенция SQL и NOSQL позволяет разработчикам извлечь выгоду из простоты разработки документа JSON и возможности реляционных баз данных с одной базой данных. Многомодельные базы данных устраняют необходимость выбора одной парадигмы над другой, захватывая одноцелевой рынок систем баз данных NOSQL. Разработчики не должны сталкиваться с выбором между системами SQL и NOSQL и блокируются в одну парадигму программирования. Они пользуются гибкостью и свободой, чтобы выбрать лучший подход для отдельных приложений, не жертвуя функциональностью.

Взгляды Oracle’s JSON-релационной двойственности выходят за рамки сосуществования, сливая сильные стороны реляционных моделей и документов в единую архитектуру. По мере того, как мультимодели продолжают развиваться, этот подход устанавливает убедительный прецедент — и другие, вероятно, будут следовать.

Начните инновации сегодня с двойственности JSON, либо локально с Oracle Database 23AI, либо в облаке на OCI с Oracle автономной базой данных.

Oracle предлагает широкий спектр технологий для строительства, тестирования и обслуживания приложений в облаке и в вашем центре обработки данных. Найдите бесплатные инструменты и учебные ресурсы на Developer.oracle.com Узнайте больше последних из Oracle Trending Stories YouTube.com/thenewstack Tech движется быстро, не пропустите эпизод. Подпишитесь на наш канал YouTube, чтобы транслировать все наши подкасты, интервью, демонстрации и многое другое. Группа подпишитесь с эскизом. Германн — старший директор по управлению продуктами в организации базы данных Oracle. Он и его команда сосредоточены на основной функциональности Oracle, такой как Oracle Partitioning, Oracle Optimizer и Analytical SQL. Его команда также заботится о полуструктурированной обработке данных, … Подробнее от Германа Баера

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *