IT Kniga
Интернет-магазин компьютерной литературы

Базы данных

A1: 2017 – Injections (Часть 3 и последняя)

SQL - habr.ru - Втр, 13/11/2018 - 12:19
В моей любимой компьютерной игре Quest for Glory 2: Trial by Fire, когда мир в очередной раз оказывается в опасности, главный герой попадает в Университет волшебников. После успешного прохождения вступительных испытаний бородатые мудрые волшебники предлагают поступить в этот Университет, потому что, окончив его, мы разберемся во всех тонкостях магии, изучим все заклинания и тогда уже точно спасем своих друзей и победим мировое зло. Проблема только в том, что учиться предстоит 15-20 лет, а за это время силы зла успеют победить и не один раз.

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

Теперь, когда мы примерно представляем, как работают инъекции, так почему бы не попробовать упростить себе жизнь и еще раз разобрать какой-нибудь прошлый пример, но уже с помощью дополнительного программного обеспечения. Нам потребуется два инструмента:
Sqlmap – инструмент, которой позволяет автоматизировать поиск и эксплуатацию уязвимостей в SQL и ZAP Proxy – локальный прокси-сервер, который нужен для анализа трафика между браузером в веб-сервером.

Опять нужно упомянуть, что это не единственные подобные инструменты, и наверняка в соседнем блоге вам убедительно докажут, что вместо sqlmap нужно разобраться с sqlninja, а на ZAP тратить время не нужно, когда есть Burp. Спорить ни с кем не стану.

Облегчать жизнь мы себе начнем с перехвата трафика между клиентом и веб-сервером. Полученные данные будут использованы в качестве параметров для sqlmap. По большому счету, в качестве такого параметра может выступать и URL уязвимого приложения, но сейчас данные с прокси будут для нас нагляднее.

Работать будем всё с тем же примером из A1, который мы разбирали в предыдущей статье («SQLi – Extract Data» > «User Info (SQL)»).

Читать дальше →
Категории: Базы данных

Реконсиляция — проверка целостности данных в распределенных системах

SQL - habr.ru - Чт, 01/11/2018 - 06:52


При разработке и использовании распределенных систем перед нами возникает задача контроля целостности и идентичности данных между системами — задача реконсиляции.


Требования, которые выставляет заказчик — минимальное время данной операции, поскольку чем раньше расхождение будет найдено, тем легче будет устранить его последствия. Задача заметно усложняется тем, что системы находятся в постоянном движении (~ 100 000 транзакций в час) и добиться 0% расхождений не получится.

Читать дальше →
Категории: Базы данных

Настройка связанных серверов: ms sql server и teradata

SQL - habr.ru - Ср, 31/10/2018 - 14:07
Всем привет! Решил написать эту статью по одной простой причине — не нашел подробной инструкции по настройке удаленного связанного сервера между серверами teradata и ms sql server.

В Сбербанке данные хранятся на разных серверах: oracle, teradata, mssql. Часто (бывает, по несколько раз день) мне и моим коллегам приходится выполнять действия, которые назвать «эффективными» очень трудно: пишешь запрос, экспортируешь данные в файл, импортируешь его на сервер mssql, работаешь. Временные затраты на один запрос — более 3 часов (около 90 млн строк).


«Эффективная» работа
Читать дальше →
Категории: Базы данных

Миграция реального приложения со standalone MySQL на Percona XtraDB Cluster

MySQL - habr.ru - Втр, 30/10/2018 - 12:30


К сожалению в интернете довольно мало информации по миграции реальных приложений и продакшн эксплуатации Percona XtraDB Cluster (далее PXC). Своим рассказом я постараюсь исправить эту ситуацию и рассказать о нашем опыте. Тут не будет пошаговой инструкции по установке и статью следует рассматривать не как замену офф документации, а как сборник рекомендаций.
Читать дальше →
Категории: Базы данных

Проект хранилища на MS SQL Server, интеграция с 1С 7.7 и автоматизация разработки в SSDT

SQL - habr.ru - Пнд, 29/10/2018 - 19:13
Время течет и скоро от этой разработки почти ничего не останется, а у меня все никак не находилось времени ее описать.



Речь пойдет о компании федерального уровня с большим числом филиалов и подфилиалов. Но, как обычно, все началось давным-давно с одного маленького магазина. С течением лет шло достаточно быстрое и стихийное развитие, появлялись филиалы, подразделения и прочие офисы, а ИТ-инфраструктуре не уделялось в те времена должного внимания, и это тоже частое явление. Конечно же, везде использовалась 1С77, без задела на какие-либо репликации и масштабирование, поэтому, сами понимаете, в конце пришли к тому, что был порожден спрут-франкенштейн с примотанными изолентой щупальцами — в каждом филиале автономный мутант, который с центральной базой обменивался в «наколеночном» режиме лишь несколькими справочниками, без которых ну вообще никак было нельзя, а остальное автономно. Какое-то время довольствовались копиями (десятки их!) филиальных баз в центральном офисе, но данные в них отставали на несколько дней.

Реальность же требует получать информацию более оперативно и гибко, а еще надо что-то с этим делать. Пересесть с одной учетной системы на другую при таких масштабах — то еще болото. Поэтому было решено сделать хранилище данных (ДХ), в которое стекалась бы информация из разных баз, чтобы впоследствии из этого ХД могли получать данные другие сервисы и аналитическая система в виде кубов, SSRS отчетов и протча.

Забегая вперед скажу, что переход на новую учетную систему почти уже случился и бОльшая часть проекта, описываемого здесь, будет выпилена в ближайшее время за ненадобностью. Жаль, конечно, но ничего не поделаешь.

Далее следует длинная статья, но прежде чем начнете читать, позвольте заметить, что ни в коем случае не выдаю это решение за эталон, однако может кто-то найдет для себя в ней что-то полезное.
Читать дальше →
Категории: Базы данных

[Из песочницы] Hasura. Архитектура высокопроизводительного GraphQL to SQL сервера

SQL - habr.ru - Пнд, 29/10/2018 - 14:06
Привет, Хабр! Представляю вашему вниманию перевод статьи «Architecture of a high performance GraphQL to SQL engine».

Это перевод статьи про то, как устроен изнутри и какие оптимизации и архитектурные решения несет в себе Hasura — высокопроизводительный легковесный GraphQL сервер, выступающий прослойкой между вашим веб-приложением и базой данных PostgreSQL.

Он позволяет генерировать GraphQL схему на основе существующей базы данных или создать новую. Поддерживает GraphQL Subscriptions из коробки на основе Postgres-триггеров, динамический контроль прав доступа, автоматическую генерацию join’ов, решает проблему N+1 запросов (batching) и многое другое.

Читать дальше →
Категории: Базы данных

Удаление данных с шардированной базы

SQL - habr.ru - Пнд, 29/10/2018 - 11:34
Статья о том, как решали задачу оптимизации процесса удаления файлов из шардированной системы. Речь пойдет о проекте для совместного доступа и работы с файлами. Система была стартапом лет 8 назад, потом он успешно выстрелил и был несколько раз продан. В проекте 4 разработчика, которые с проектом с самого начала, что очень ценно. Документацию, традиционно, либо не успели написать, либо она не очень актуальна.

Зачем вам это читать и зачем я все это написала? Хочется рассказать о граблях, которые заботливо лежат внутри системы и бьют так, что звездочки сыпятся из глаз.

Хочу сказать большое спасибо Hanna_Hlushakova за совместную работу, доведение проекта до конца и помощь в подготовки статьи. В основном вы встретите описания проблемы и алгоритма ее решения, который мы использовали, никаких примеров кода, структур данных и других нужных вещей тут нет. Я не знаю поможет ли вам мой опыт избежать граблей у себя, но надеюсь что-то полезное вы извлечете. Возможно, данная статья будет абсолютно безвозвратной потерей драгоценного времени.


Читать дальше →
Категории: Базы данных

Database as Сode. Копаем глубже

SQL - habr.ru - Чт, 25/10/2018 - 06:59


В IT-проектах код пишут все. Инженеры с помощью нескольких строк управляют Kubernetes кластерами, разгоняют облака Terraform'ом и ворочают тонны конфигураций на Ansible, Chef и Puppet. QA пишут понятные бизнесу тестовые сценарии на Spock и Cucumber. Аналитики свободно, часто лучше разработчиков, разговаривают на SQL. Проектная документация в форматах Markdown, AsciiDoc или LaTEX "компилируются" в нужный формат на билд-сервере. Ну а сами разработчики, эти укротители кода, владеют сразу россыпью языков на каждый жизненный случай — клиентский, серверный, скриптовый, функциональный и пр.


Код уже давно перестал быть загадочной тарабарщиной и теперь в том или ином виде доступен и понятен многим, даже премьер-министрам. И весь этот код участвует в стандартном жизненном цикле — находится под управлением VCS, подвергается code review, автоматизированному тестированию, CI, CD. Используются общие инструменты и подходы, метрики производительности и качества. А все вместе это носит гордое название — "Everything as code".


Однако мир БД традиционно стоит особняком вдалеке от этой феерии прогресса и технологий. Процесс разработки и сопровождения БД не меняется годами и продолжает вселять ужас и страх в разработчиков, администраторов и пользователей по всему миру. Но возможно ли представить БД в виде обычного кода? Приблизиться к основному процессу разработки, использовать общие инструменты и подходы? Об этом под катом.

Database as Code? Что за дичь?
Категории: Базы данных

Вышла Oracle Database 18c XE

SQL - habr.ru - Вс, 21/10/2018 - 18:47


Свершилось! Можно открывать шампанское и закатывать вечеринку — спустя более, чем 7 лет с момента выпуска предыдущего релиза, для скачивания наконец доступна свежайшая Oracle Database 18c XE. Пока только для Linux x64, но версии для других платформ, также как и Docker и Vagrant образы обещают появиться совсем скоро.



Для тех, кто не в курсе, Oracle Database XE или Express Edition — это бесплатная редакция одной из самых мощных реляционных СУБД. Традиционно этот тип редакции обладал минимальным доступным функционалом, определенными ограничениями на используемые ресурсы, и малым размером дистрибутива. Тем не менее, даже эта версия СУБД всегда пользовалась большой популярностью среди тех, кто только познаёт возможности этой СУБД, небольших компаний, которых на данный момент устраивают все ограничения и они хотят оценить технологию и среди простых энтузиастов как мы с вами.


Новая же, 18-ая версия XE открывает просто небывалый простор для использования данной СУБД, так как в этот раз компания Oracle сменила тактику, и вместо предоставления минимального функционала, включила в эту редакцию практически все самые популярные опции самой дорогой и функциональной редакции Enterprise Edition. Но по-прежнему с ограничениями по используемым ресурсам.

Читать дальше →
Категории: Базы данных

DataIncrement — дополнение к возможностям phpMyAdmin

MySQL - habr.ru - Ср, 17/10/2018 - 09:20
Когда используешь что-то вроде phpMyAdmin для работы с данными в базе, всегда неудобно что связанное поле отображает просто число из другой таблицы, вместо конкретных данных, которые там прячутся.

Например, в поле `country_id` стоят числа, а не название страны. Приходится прыгать из таблицы в таблицу. Или писать отдельный sql, что бывает зачастую неудобно, если надо по быстрому. Или с телефона набирать sql запрос не с руки. А если нужно обновить страну из поля `country_id`, то опять прыгать из таблицы в таблицу. Короче — неудобно все это.

Проще показать в формате было-стало:
Читать дальше →
Категории: Базы данных

[Перевод] Интересные задачки с технических собеседований

SQL - habr.ru - Втр, 16/10/2018 - 06:58

Посетил я много интервью и был на обеих сторонах противостояния. Теперь пришло время поделиться наиболее интересными задачками с окружающими. Ибо интервью должны быть интересными и запоминающимися, а не убогими и демотивирующими. Читать дальше →
Категории: Базы данных

Как просто взять и посмотреть .NET сборки в SQL Server с помощью ICSharpCode.Decompiler

SQL - habr.ru - Вс, 14/10/2018 - 18:44
Можно конечно взять сторонние утилиты, например какой-нибудь опенсорсный ILSpy, сохранить сборку на диск и потом декомпилировать.


Но хочется просто подключиться к БД и посмотреть все сборки и что там внутри.

И к тому же, есть очень много качественных Opensource компонент на все случаи программистской жизни, да и писать на C# удобно и легко :)

Итак.
Читать дальше →
Категории: Базы данных

Как научить MySQL заглядывать в прошлое

SQL - habr.ru - Втр, 09/10/2018 - 12:39


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

Почему на триггерах? Потому что нет доступа к бинарному логу. Реализация с бинарным логом потенциально более производительная, хотя и более сложная в разработке, т.к. требуется парсить лог.

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

В целом же решение является законченным и комплексным. Может быть внедрено «как есть» и прекрасно справляться со своей задачей.
Читать дальше →
Категории: Базы данных

Как научить MySQL заглядывать в прошлое

MySQL - habr.ru - Втр, 09/10/2018 - 12:39


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

Почему на триггерах? Потому что нет доступа к бинарному логу. Реализация с бинарным логом потенциально более производительная, хотя и более сложная в разработке, т.к. требуется парсить лог.

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

В целом же решение является законченным и комплексным. Может быть внедрено «как есть» и прекрасно справляться со своей задачей.
Читать дальше →
Категории: Базы данных

DDIA book (книга с кабанчиком) — сделай level up в понимании баз данных

SQL - habr.ru - Пнд, 08/10/2018 - 06:22
Несколько месяцев назад на одной из ретроспектив мы решили попробовать совместное чтение.

Наш формат:

  1. Выбираем книгу.
  2. Определяем часть, которую необходимо прочитать за неделю. Выбираем небольшой объем.
  3. В пятницу обсуждаем прочитанное.
  4. Читаем в нерабочее время, обсуждаем в рабочее.
  5. После окончания книги совместно выбираем следующую.

Что дает:

  1. Мотивация на чтение и дочитывание.
  2. Развитие скиллов (в том числе на будущее).
  3. Выравнивание майндсета и терминологии в команде.
  4. Рост доверия.
  5. Лишний повод пообщаться.

Одна из недавних книг, которую мы читали — Designing Data-Intensive Applications. Да-да, та самая книга с кабанчиком. И эта книга настолько всем понравилась, что я решил сделать здесь обзор, чтобы большее количество людей ее прочитали.


Карта в исходном качестве
Читать дальше →
Категории: Базы данных

[Перевод] Что нового в первой CTP редакции SQL Server 2019

SQL - habr.ru - Втр, 02/10/2018 - 07:14
24 сентября была представлена первая редакция CTP выпуска SQL Server 2019, и, позвольте сказать, что он переполнен всевозможными улучшениями и новыми возможностями (многие из которых можно найти в форме предварительного просмотра в базе данных SQL Azure). У меня была исключительная возможность познакомиться с этим чуть раньше, позволившая мне расширить представление об изменениях, пусть даже поверхностно. Вы можете также ознакомиться с последними публикациями от команды разработчиков SQL Server и обновленной документацией.

Не вдаваясь в подробности, я собираюсь обсудить следующие новые функций ядра: производительность, поиск и устранение неполадок в работе, безопасность, доступность и разработка. На данный момент у меня есть немного больше подробностей, чем у других, и часть из них уже подготовлена к публикациям. Я вернусь к этому разделу, как и к множеству других статей и документации и опубликую их. Спешу сообщить, что это не всеобъемлющий обзор, а только часть функционала, которую я успел «пощупать», вплоть до CTP 2.0. Еще есть много всего, о чем стоит рассказать.
Читать дальше →
Категории: Базы данных

Приглашаем на Voronezh Game Dev Meetup

MySQL - habr.ru - Пт, 28/09/2018 - 12:58

17 октября в воронежском офисе Mail.Ru Group пройдёт митап по разработке игр. Разработчики Mail.Ru Group расскажут об интересных методах и инструментах, с которыми им довелось работать, и у вас будет время для обсуждения всех выступлений и обмена опытом.

Участие бесплатное, регистрация по ссылке.
Читать дальше →
Категории: Базы данных

Распределённые приложения на C++ с минимумом усилий

SQL - habr.ru - Чт, 27/09/2018 - 08:00

Цель моего поста — рассказать о C++ API распределенной базы данных Apache Ignite, который называется Ignite C++, а также о его особенностях.


О самом Apache Ignite на хабре писали уже не раз, так что наверняка некоторые из вас уже примерно представляют, что это такое и зачем нужно.


Кратко об Apache Ignite для тех, кто пока с ним не знаком

Не буду вдаваться в подробности о том, как появился Apache Ignite и чем отличается от классических баз данных. Все эти вопросы уже поднимались тут, тут или тут.


Итак, Apache Ignite — это по сути быстрая распределённая база данных, оптимизированная для работы с оперативной памятью. Сам Ignite вырос из дата грида (In-memory Data Grid) и до недавнего времени позиционировался как очень быстрый, находящийся полностью в оперативной памяти распределённый кэш на основе распределенной хэш-таблицы. Вот почему, кроме хранения данных, в нем есть множество удобных фич для их быстрой распределенной обработки: Map-Reduce, атомарные операции с данными, полноценные ACID транзакции, SQL запросы по данным, так называемые Continues Queries, дающие возможность следить за изменением определённых данных и другие.


Однако недавно в платформе появилась поддержка постоянного хранилища данных на диске. После чего Apache Ignite получил все преимущества полноценной объектно ориентированной базы данных, сохранив при этом удобство, богатство инструментария, гибкость и быстроту дата грида.

Читать дальше →
Категории: Базы данных

A1: 2017 – Injections (Часть 2)

SQL - habr.ru - Пнд, 24/09/2018 - 08:46
В прошлой статье я предположил, что читатель знает, как устроен язык запросов SQL в подробностях, а также механизм работы протокола HTTP. Но это, как правило, не так. И я сразу вспомнил историю, описанную в одной из моих любимых книг «Недоверчивые умы» Роба Бразертона. В ней описан следующий эксперимент. Психолог Ребекка Лоусон спросила у группы испытуемых, катались ли они в своей жизни хоть раз на велосипеде? Большинство ответило утвердительно. Далее она спросила, знают ли они, как устроен велосипед? Утвердительных ответов было уже поменьше, но всё равно подавляющее большинство. А затем она предложила следующее изображение и попросила дополнить его так, чтобы на этом велосипеде можно было ездить.


А дальше произошло самое интересное – более половины людей не смогли этого сделать. Эта обманчиво простая задача показывает, что большинство людей просто не представляет как устроен велосипед. Но самое интересное, что они не понимают, что они этого не знают, а начинают понимать это только в момент, когда им предстоит продемонстрировать эти знания.

C HTTP и SQL происходит примерно то же самое. SQL-запросы писали 90% ИТ-специалистов, хотя бы на лабораторных в своих учебных заведениях, с HTTP люди работают каждый день как пользователи, а те же ИТ-специалисты время от времени настраивают веб-серверы, которые собственно с HTTP и работают. Но когда приходится ответить на конкретный вопрос, регулярно наступает ступор.
Читать дальше →
Категории: Базы данных

Создание триггерной функции в pgModeler

SQL - habr.ru - Вс, 23/09/2018 - 09:01
В некотором царстве, в некотором государстве... понадобилось мне добавить триггер в модель на pgModeler. Что сделать достаточно легко. А вот добавить триггерную функцию… Тоже легко, но пришлось немного поразбираться с параметрами, предлагаемыми для заполнения/выбора в интерфейсе.

pgModeler — это весьма неплохой инструмент для проектирования баз данных, который умеет генерировать sql-скрипты для PostgreSQL. Подробно об этом инструменте и его возможностях можно почитать на официальном сайте.
Читать дальше →
Категории: Базы данных
RSS-материал