Обновление библиотеки Silverlining Node.js для поддержки основ SQL

Cloudant и его стабильный партнер Apache CouchDB являются базами данных «NoSQL», то есть представляют собой хранилища документов JSON без схемы. В отличие от традиционной реляционной базы данных, вам не нужно определять схему перед записью данных в базу данных. Просто разместите свой JSON в базе данных и меняйте свое мнение сколько угодно раз!

Одна из привлекательных особенностей реляционных баз данных - это язык запросов. Язык структурированных запросов или SQL был разработан IBM в 1970-х годах и с тех пор широко применяется во множестве баз данных. В простейшей форме SQL читается как предложение:

SELECT name, colour, price 
  FROM animalsdb
  WHERE type='cat' OR (price > 500 AND price < 1000) 
  LIMIT 50

Это заявление означает:

«Получите мне имя, цвет и цену из базы данных животных, но только те строки, которые относятся к кошкам, или те, которые дороже 500, но дешевле 1000. И я хочу, чтобы возвращалось не более 50 строк».

Это удобный способ обозначить поля, которые вы хотите получить, фильтр, который вы хотите применить к данным, и максимальное количество строк, которые вы хотите получить в ответ.

К сожалению, базы данных NoSQL обычно не поддерживают язык SQL. Cloudant и Apache CouchDB ™ имеют свою собственную форму языка запросов, где запрос выражается как объект JSON: Cloudant Query (CQ) и Mango в соответствующих контекстах. Эквивалент CQ или Mango приведенного выше оператора SQL:

Это мир фигурных скобок! Если вам удобнее выражать свой запрос на языке SQL, то выход есть.

Silverlining + SQL

Последняя версия библиотеки Node.js silverlining теперь может принимать запросы SQL. Он преобразует SQL в запрос Cloudant и предоставит результаты.

Примечание редактора: В феврале 2018 г. библиотека silverlining устарела и заменена на cloudant-quickstart : https: //www.npmjs .com / package / cloudant-quickstart

Просто установите библиотеку Silverlining:

npm install -s silverlining

И добавьте его в свое приложение Node.js, передав URL-адрес Cloudant в библиотеку:

var db = require('silverlining')('https://USER:[email protected]/animalsdb');

Затем мы можем начать запрашивать нашу базу данных с помощью оператора SQL:

db.query('SELECT name FROM animalsdb').then(function(data) {
    // data!
  });

Вот еще несколько примеров запросов:

Silverlining достигает этого путем преобразования вашего SQL-запроса в эквивалентный объект Cloudant Query. Если вы хотите увидеть эти данные самостоятельно, вызовите функцию explain вместо query, чтобы запрос, который мог бы использовать, вернул ее:

Ограничения

Прежде чем мы увлечемся, эта функция не делает внезапно поддержку Cloudant объединениями, объединениями, транзакциями, хранимыми процедурами и т. Д. Это просто перевод с SQL на Cloudant Query.

Он также не поддерживает агрегирование или группирование, но вы можете использовать функции Silverlining count, sum и stats для создания производительной сгруппированной агрегации без каких-либо проблем.

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

Если вам понравилась эта статья, ♡ пожалуйста, порекомендуйте ее другим читателям Medium.