![](http://habrastorage.org/getpro/habr/hub/64b/22b/8b6/64b22b8b6c4677778423e971d52eb05d.png)
SQL *
Формальный непроцедурный язык программирования
Нестандартный подход к «повышению производительности» select-запросов в SQLite
Прежде всего, хотелось бы отметить 2 момента:
— данная статья описывает алгоритм работы, а не как оптимизировать конкретные SQL-запросы;
— описываемый в статье подход не актуален для «производительного» железа, речь пойдет о том, как удалось повысить «отзывчивость» интерфейса приложения интенсивно работающего с БД на бюджетных смартфонах под управлением Android;
NewSQL — новый виток в эволюции BigData, забираем лучшее из SQL и NoSQL
NewSQL
Начало
Сегодня очень легко наблюдать стремительный рост данных в интернете. Согласно одной оценке, данные, созданные в 2010, составляют приблизительно 1,200 ЭБ (1018 байт) и вырастут почти к 8,000 ЭБ к 2015 в Интернете, являющимся основным поставщиком данных к потребителю.
Этот рост опережает рост вместимости, приводя к появлению систем управления информацией, где данные хранятся распределенным способом, но получают доступ и анализируют, как будто они находятся на одной машине.
Пока программисты всего мира устраивают глобальные Holywars на тему: «SQL vs NoSQL», крупные компании, такие как Google и Facebook со своей миллиардной аудиторией всеми силами борются с нехваткой мощностей и предельными работами СУБД. Несмотря на появление новой технологии NoSQL, которая позволяла легко масштабировать данные, она так и не решила вопросы связанные с соответствием операций требованиям ACID (atomicity, consistency, isolation, durability — «атомарность, непротиворечивость, изолированность, долговечность») — стандарта, который гарантирует точность выполнения оперативных транзакций средствами СУБД, даже если работа системы прерывалась. На фоне всего этого компания VoltDB при поддержке нескольких других компаний, начали разрабатывать с чистого листа новый opensource проект под название NewSQL, сочетающий в себе лучшие стороны SQL и NoSQL.
Разгоняем медиану в OLAP
Одним из главных достоинств OLAP технологии является скорость получения результатов при обращении к базе. Расчеты происходят «на лету». Однако с медианой, не все так просто.
Для справки: медиана — вид средней. Это величина, которая находиться в середине ряда значений отсортированного по возрастанию. Например, для ряда значений {1, 2, 5, 6, 9} медианой является 5.
Рассмотрим ситуацию на примере OLAP сервера от Microsoft — SSAS 2008 (SQL Server Analysis Services).
Истории
Курсы для администраторов! Для чего?
Предисловие
Я сертифицированный тренер Microsoft. И уже давно преподаю разные курсы для системных администраторов. На обучение приходят разные люди: от начинающих админов до высококвалифицированных системных администраторов. Цели новичков понять легко: знакомство с продуктом и получение навыков его настройки. А зачем приходят на курсы опытные администраторы? Именно на этот вопрос я и постараюсь ответить. Не хочу употреблять какие-то общие фразы, а хочу показать конкретные примеры того, чему научились давно работающие специалисты на моих курсах. Я напишу несколько примеров по Windows Server и SQL Server.
Как запускать DBDeploy в Gradle
![](https://habrastorage.org/storage2/80a/14d/1ed/80a14d1ede28c3a6de24e52c4fd03b65.jpg)
В данной заметке я покажу, как запускать DBDeploy из скрипта Gradle.
![](https://habrastorage.org/storage2/dda/e28/3ef/ddae283ef11e6f55a5a913ffa5b72131.jpg)
О чём это вообще?
Возможно, вы уже слышали о версионированной миграции структуры баз данных. Об этом писали на хабре. DBDeploy — один из самых простых и известных инструментов, позволяющий легко установить все последние изменения в базе данных на любом инстансе и любой девелоперской машине. А Gradle — модный ныне инструмент для сборки проекта (как Ant и Maven, только лучше). О нём тоже уже писали.
И в чём вопрос?
Вопрос в том, как запускать DBDeploy из скрипта Gradle? У DBDeploy есть таски для Ant и плагин для Maven, но пока ещё нет плагина для DBdeploy (точнее, он в зачаточном состоянии). Немного потыркавшись, я пришёл к выводу, что самый простой способ — это использовать тот самый Ant таск DBDeploy из скрипта Gradle (здесь описано, как из gradle-скрипта использовать любые Ant-таски). Рассмотрим пример.
Поиск и замена текста по регулярному выражению
Введение
Наверняка любой, даже самый непродвинутый пользователь ПК, умеет осуществлять поиск и замену строк к тексте. В общем случае необходимо указать строку, которую нужно заменить, и строку, на которую будет производится замена. Этого достаточно для достижения самых простых целей. Но иногда хочется большего — не просто заменить, а, например, изменить структуру строк.
Более сложная цель
Рассмотрим задачу, с которой я столкнулся в процессе своей работы. Мне кажется этот пример в достаточной мере раскрывает суть текущей темы.
Считаем скобочки на Oracle SQL
![](https://habrastorage.org/storage2/12e/97a/708/12e97a7083d1642ec18c49e37a1d5459.png)
Все началось с того, что на сайте codeforces.ru в очередном Codeforces Round я увидел интересную задачку “Скобочная последовательность” и решать ее “неинтересным способом” никак не хотелось.
Вкратце условия задачи сводятся к нахождению в строке, состоящей только из символов «(», «)», «[» и «]», правильной cкобочной последовательности, содержащей как можно больше скобок «[».
Масштабирование и особенности разработки для SQL Database
![](https://habrastorage.org/storage2/3ec/05f/e1a/3ec05fe1aec768fee2fe8b2aa8c992dd.png)
Обеспечение масштабируемости в SQL Database
Одним из наиболее значимых преимуществ размещения баз данных в среде SQL Database являются встроенные функции обеспечения масштабируемости. При необходимости можно добавить дополнительные базы данных. Два компонента SQL Database обеспечивают масштабируемость за счет постоянного отслеживания рабочей нагрузки на каждом из узлов. Первый компонент — Engine Throttling (регулировщик нагрузки на ядро), который защищает сервер от перегрузки. Второй компонент — Load Balancer (балансировщик нагрузки), который следит за тем, чтобы сервер не работал постоянно в режиме повышенной производительности.
Просто и доступно о аналитических БД
Обзор архитектуры и обеспечения высокой доступности в SQL Database (SQL Azure)
![](https://habrastorage.org/storage2/285/db0/440/285db044089da259cf1f1a99d0f9d2ea.png)
Ближайшие события
![](https://habrastorage.org/getpro/habr/upload_files/d8c/8d5/c5f/d8c8d5c5f2fe3f77b4a21c5e986fceb1.jpg)
![](https://habrastorage.org/getpro/habr/upload_files/a4c/1f6/140/a4c1f6140d1b2bd280246cf039746752.png)
![](https://habrastorage.org/getpro/habr/upload_files/d66/c80/7df/d66c807dfd2607053f1128b1883d24a7.png)
![](https://habrastorage.org/getpro/habr/upload_files/ce8/1f8/4fe/ce81f84fe4c22e2e3ef85388797db6ac.jpg)
![](https://habrastorage.org/getpro/habr/upload_files/fd0/255/4d3/fd02554d346912bf8fc4bc81f9406174.png)
![](https://habrastorage.org/getpro/habr/upload_files/8ca/d72/5e6/8cad725e62dafcc18e20f6e3dd3f2ccd.png)
SQLite — замечательная встраиваемая БД (часть 1)
Часть 2
Часть 3
Небольшая вводная.
Эта статья не для начинающих программистов.
Она не является учебником по SQL.
Она не агитирует использовать SQLite.
Она не агитирует не использовать SQLite.
Статья написана в виде вопросов от гипотетического новичка в SQLite и ответов на них (поскольку информации очень много и так хоть немного проще ее структурировать).
Семь смертных грехов программиста на T-SQL
Существует три базовых правила для написания такого T-SQL кода, который будет работать хорошо. Они кумулятивные – выполнение всех этих правил окажет положительное влияние на код. Пропуск или изменение любого из них – скорее всего приведет к отрицательному влиянию на производительность вашего кода.
- Пишите, исходя из структуры хранения данных: если вы храните данные типа datetime, используйте именно datetime, а не varchar или что-нибудь еще.
- Пишите, исходя из наличия индексов: если на таблице построены индексы, и они должны там быть, пишите код так, чтобы он мог использовать все преимущества, предоставляемые этими индексами. Убедитесь, что кластерный индекс, а для каждой таблицы он может быть только один, используется наиболее эффективным образом.
- Пишите так, чтобы помочь оптимизатору запросов: оптимизатор запросов – восхитительная часть СУБД. К сожалению, вы можете сильно затруднить ему работу, написав запрос, который ему «тяжело» будет разбирать, например, содержащий вложенные представления – когда одно представление получает данные из другого, а то из третьего – и так далее. Потратьте свое время для того, чтобы понять как работает оптимизатор и писать запросы таким образом, чтобы он мог вам помочь, а не навредить.
Существует несколько типичных ошибок, которые люди допускают в своем коде на T-SQL – не совершайте их.
Знакомство с "Caché SQL Gateway" для создания федеративных систем или мультибаз
Такие системы получили название интегрированных, федеративных или мультибаз.
В СУБД Caché такая интеграция осуществляется с помощью специального шлюза (Caché SQL Gateway), который использует в своей основе ODBC/JDBC соединения к внешним источникам данных. Причём под источником в данном случае можно понимать не только СУБД, так как есть JDBC/ODBC драйвера для MS Excel, DBF, текстовых файлов, графических файлов, WMI и т.д.
Альтернативные SQL-менеджеры для СУБД Caché
Caché Monitor
![](https://habrastorage.org/getpro/habr/post_images/6ae/5bd/925/6ae5bd9259a9bb7fa751be71b5badb74.jpg)
Если при разработке или использовании вашего приложения на Caché вам часто приходится выполнять SQL-запросы, а функциональности SQL-менеджера из Портала Управления Caché или SQL-оболочки из терминала Caché вам недостаточно, то советую обратить внимание на приложение Caché Monitor.
Альтернативный SQL-менеджер разработал Андреас Шнайдер — разработчик из Германии.
Это кроссплатформенное Java-приложение кроме выполнения SQL-запросов предоставляет следующие возможности:
Немного о связываемых переменных (prepared statements)
Если бы мне пришлось писать книгу о том, как создавать немасштабируемые приложения Oracle, первая и единственная ее глава называлась бы «Не используйте связываемые переменные».
Том Кайт, вице-президент Oracle
Недавно на Хабре появилась статья от AlexanderPHP «SQL injection для начинающих. Часть 1». По ее содержимому и комментарием к ней может создаться впечатление, что у многих разработчиков нет понятия, что такое связываемые переменные, зачем ими следует пользоваться и какие преимущества они дают. Попытаюсь в данной статье пролить небольшой свет на данные вопросы.
Скорость доступа к данным: битва за будущее
Реляционная модель данных, предложенная в 1970 году Э.Ф. Коддом, надолго задала тенденцию в развитии баз данных и позволила полностью отвечать требованиям бизнеса до сегодняшнего момента. С 1970 года реляционные базы данных прошли большой путь и приняли много вызовов, встававших на их пути. Постоянно растущие объемы данных привели к появлению методов, способных обеспечить более быстрый доступ к необходимым данным – индексы, хранение данных в отсортированном виде и т.п. Эти методы вполне успешно справлялись со своей задачей, да и до сих пор не потеряли своей актуальности. Однако стремительное увеличение объемов носителей информации и удешевление стоимости хранения данных привело к тому, что объемы баз данных в десятки терабайт не являются уже чем-то необычным и воспринимаются, как обычное явление. Бизнес не может допустить, чтобы эти данные лежали «мертвым грузом», так как всё возрастающая конкуренция в мире заставляет его искать новые подходы к освоению сферы своей деятельности, ведь по крылатому выражению – «Кто владеет информацией, тот владеет миром». Если говорить о времени, то счет идет не на дни, или даже часы, а скорее на минуты – кто сможет быстро получить необходимую информацию, тот и выиграет.
Вклад авторов
Kilor 1943.7erogov 1271.6jobgemws 714.0AlanDenton 594.0varanio 531.0chemtech 433.2rdruzyagin 432.8moscas 402.0NoraQ 332.0nalgeon 328.1