Обновление библиотеки 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.