Рубрика «sql» - 48

В наши дни NoSQL продолжает набирать популярность, но мало кто знает, что нереляционные СУБД появились гораздо раньше даже самой реляционной алгебры. 40 и даже 50 лет назад в первичном «бульоне» зарождающейся IT индустрии «варились» только NoSQL-продукты. И что самое интересное – продукты, рожденные в те сложные времена, живы до сих пор и прекрасно себя чувствуют.
Одним из таких продуктов стала СУБД GT.m, разработанная компанией Graystone Tehnologies в 70-80-х годах прошлого века. СУБД нашла широкое применение в медицине, страховании и банковской сфере.

В нашем банке мы тоже используем GT.m, и этот инструмент прекрасно справляется с обработкой большого количества транзакций. Но… Есть одна проблема: GT.m никакой для аналитики, в нем нет SQL, аналитических запросов и всего того, что делает финансового аналитика счастливым. Поэтому мы разработали собственный «велосипед» для репликации данных из GT.m в «реляционные» СУБД.

Как мы NoSQL в «реляционку» реплицировали - 1
А вот здесь должна была быть картинка с летающим велосипедом

Всех заинтересованных приглашаем под кат.
Читать полностью »

Это данные, тупица, и почему администраторы баз данных важны как никогда? - 1

«Специализированные базы данных, облачные технологии и DevOps не упраздняют роль администраторов, а наоборот – расширяют их функции. Возможно, дело уже не только в таблицах. Но роль администратора БД до сих пор важна, даже если у этой профессии нет названия». Син Галагер

В воображении тех из нас, кто слишком долго работает в сфере информационных технологий, должность «администратор БД» («АБД») порождает довольно-таки специфические образы. Мы представляем кого-то, рвущего на себе волосы из-за проблем с бэкапами (резервными копиями), глюков со снимками файловой системы (снапшотами), вышедших из-под контроля схем, сорванных планов наращивания мощностей в связи с новыми требованиями приложений, вялотекущих запросов и вечных настроек производительности.

Все эти функции админов старой закалки ещё кое-где встречаются, особенно на крупных предприятиях, где гигантские кластеры баз данных по-прежнему правят дата-центрами. Но виртуализация, облачные хранилища данных, микросервисы, DevOps-подход к разработке и запуску приложений и ряд других факторов существенно изменили то, как организации хранят свои данные и управляют ими. Многие традиционные роли администратора БД представляются спорными в том счастливом новом мире, который обещает нам новое поколение баз данных.
Читать полностью »

Еще до Google Maps в 1998 году у пользователей сети Интернет была возможность посетить другой город, страну или континент, не выходя из дома. Это был первый крупнейший в мире онлайн атлас, который сочетал в себе как спутниковые, так и топографические снимки Земли. Проект носил название TerraServer и содержал в себе более 8 ТБ данных с изображениями от Геологической службы Соединенных Штатов (USGS) и СПИН-2 (SPIN-2), которые обрабатывались базой данных SQL. У данного проекта была всего одна цель и она заключалась вовсе не в том, чтобы помогать пользователям сидя перед монитором «перелетать» через горизонт. Нет, задачей TerraServer была демонстрация возможностей Microsoft: программное обеспечение компании могло обрабатывать самую большую базу данных без каких-либо проблем.

TerraServer бесполезный сервис или упущенная возможность? - 1Читать полностью »

Oracle, обход мутирующих таблиц - 1
Рис.1 – художники мутанты ниндзя черепашки

Мутирование таблиц (ошибка ORA-04091) возникает, если в триггере уровня строки выполняется изменение или чтение данных из той же самой таблицы, для которой данный триггер должен был сработать.

Рассмотрим два способа обхода данной ситуации. Первый – через пакет – древний, как удар маваши гери с разворота, смотрится эффектно, но долго готовится и сложен в исполнении. Второй – более свежий и простой – с использованием составных триггеров.
Читать полностью »

Пост рассказывает для чего необходимо использовать «жадную загрузку», вместо «ленивой загрузки», не претендует на идеал. И вряд ли заинтересует профессионалов, больше подходит для начинающих в изучении YII2.

Используем жадную загрузку в своем приложении. Допустим у нас имеется две таблицы с постами и категориями. У каждого поста возможна одна категория, у категорий 1 или более постов.

bd - mediarise.ru
Читать полностью »

Хочу рассказать о том, как мы захотели сделать собственный бекап баз данных для Microsoft SQL Server, и что из этого получилось.

Проблема

Мы в компании используем Microsoft SQL Server, и вполне ожидаемо, что нам надо делать бекапы баз данных для него, что мы успешно делаем. Делается это следующим образом:

  • Первый скрипт делает бекапы нужных баз данных
  • Второй скрипт проходит по папкам с бекапами и архивирует их в 7zip
  • Третий скрипт уносит эти бекапы на внешнее хранилище

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

Читать полностью »

Привет! У нас пора релизов. Это пост о том, что интересного в новой версии DataGrip — нашей IDE для SQL. Эти изменения также касаются IntelliJ IDEA, PyCharm, PhpStorm и RubyMine — тех инструментов от JetBrains, где есть поддержка баз данных.

image

Вот, что мы добавили:

Читать полностью »

Надо “SELECT * WHERE a=b FROM c” или “SELECT WHERE a=b FROM c ON *” ?

Если вы похожи на меня, то согласитесь: SQL — это одна из тех штук, которые на первый взгляд кажутся легкими (читается как будто по-английски!), но почему-то приходится гуглить каждый простой запрос, чтобы найти правильный синтаксис.

А потом начинаются джойны, агрегирование, подзапросы, и получается совсем белиберда. Вроде такой:

SELECT members.firstname || ' ' || members.lastname
AS "Full Name"
FROM borrowings
INNER JOIN members
ON members.memberid=borrowings.memberid
INNER JOIN books
ON books.bookid=borrowings.bookid
WHERE borrowings.bookid IN (SELECT bookid
  FROM books
  WHERE stock>(SELECT avg(stock)
    FROM books))
GROUP BY members.firstname, members.lastname;

Буэ! Такое спугнет любого новичка, или даже разработчика среднего уровня, если он видит SQL впервые. Но не все так плохо.

Легко запомнить то, что интуитивно понятно, и с помощью этого руководства я надеюсь снизить порог входа в SQL для новичков, а уже опытным предложить по-новому взглянуть на SQL.Читать полностью »

Список из 144 бесплатных и платных интернет ресурсов для изучения и работы с Microsoft SQL Server.
Статья в формате markdown на английском языке доступна на Github

Читать полностью »

Что такое большие данные, часть 1 - 1

Большие данные — это Большие Новости, Большая Важность и Большой Бизнес, но что это на самом деле? Что такое большие данные? Для тех, кто живёт ими, всё очевидно, а я просто тупица — задавать подобные вопросы. Но те, кто живёт ими, считают большинство людей глупыми, верно? Поэтому в начале я хочу поговорить с теми читателями, которые, как и я, не в теме. Что это вообще такое? На этой неделе я планирую хорошенько исследовать этот вопрос, и, скорее всего, опубликовать три длинных статьи (прим. переводчика: переводы следующих двух частей выйдут в ближайшие дни).Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js