Обновить
34.05

SQL *

Формальный непроцедурный язык программирования

Сначала показывать
Порог рейтинга
Уровень сложности

Поиск и замена текста по регулярному выражению

Время на прочтение3 мин
Количество просмотров71K
Введение

Наверняка любой, даже самый непродвинутый пользователь ПК, умеет осуществлять поиск и замену строк к тексте. В общем случае необходимо указать строку, которую нужно заменить, и строку, на которую будет производится замена. Этого достаточно для достижения самых простых целей. Но иногда хочется большего — не просто заменить, а, например, изменить структуру строк.

Более сложная цель

Рассмотрим задачу, с которой я столкнулся в процессе своей работы. Мне кажется этот пример в достаточной мере раскрывает суть текущей темы.
Читать дальше →

Считаем скобочки на Oracle SQL

Время на прочтение5 мин
Количество просмотров5.4K

Все началось с того, что на сайте codeforces.ru в очередном Codeforces Round я увидел интересную задачку “Скобочная последовательность” и решать ее “неинтересным способом” никак не хотелось.

Вкратце условия задачи сводятся к нахождению в строке, состоящей только из символов «(», «)», «[» и «]», правильной cкобочной последовательности, содержащей как можно больше скобок «[».

Как же решить эту задачу одним sql запросом?

Масштабирование и особенности разработки для SQL Database

Время на прочтение8 мин
Количество просмотров16K
Это вторая часть цикла про то, как устроена SQL Database. В первой части речь шла об архитектуре SQL Database, во второй части продолжим этот обзор с фокусом на масштабирование и некоторые особенности разработки для SQL Database.


Обеспечение масштабируемости в SQL Database


Одним из наиболее значимых преимуществ размещения баз данных в среде SQL Database являются встроенные функции обеспечения масштабируемости. При необходимости можно добавить дополнительные базы данных. Два компонента SQL Database обеспечивают масштабируемость за счет постоянного отслеживания рабочей нагрузки на каждом из узлов. Первый компонент — Engine Throttling (регулировщик нагрузки на ядро), который защищает сервер от перегрузки. Второй компонент — Load Balancer (балансировщик нагрузки), который следит за тем, чтобы сервер не работал постоянно в режиме повышенной производительности.
Дальше

Просто и доступно о аналитических БД

Время на прочтение17 мин
Количество просмотров78K
Интерес к технологиям Big Data постоянно растет, а сам термин приобретает все большую популярность, многие люди хотят поговорить об этом, обсудить перспективы и возможности в этой области. Однако немногие конкретизируют — какие компании представлены на этом рынке, не описывают решения этих компаний, а также не рассказывают про методы, лежащие в основе решений Big Data. Область информационных технологий, относящихся к хранению и обработке данных, претерпела существенные изменения к настоящему моменту и представляет собой стремительно растущий рынок, а значит лакомый кусок для многих всемирно известных и небольших, только начинающих, компаний в этой сфере. У типичной крупной компании имеется несколько десятков оперативных баз данных, хранящих данные об оперативной деятельности компании (о сделках, запасах, остатках и т.п.), которые необходимы аналитикам для бизнес-анализа. Так как сложные, непредвиденные запросы могут привести к непредсказуемой нагрузке на оперативные базы данных, то запросы аналитиков к таким базам данных стараются ограничить. Кроме того, аналитикам необходимы исторические данные, а также данные из нескольких источников. Для того чтобы обеспечить аналитикам доступ к данным, компании создают и поддерживают так называемые хранилища данных, представляющие собой информационные корпоративные базы данных, предназначенные для подготовки отчетов, анализа бизнес-процессов и поддержки системы принятия решений. Хранилища данных служат также источником для оценки эффективности маркетинговых кампаний, прогнозированию, поиску новых возможных рынков и аудиторий для продажи, всевозможному анализу предыдущих периодов деятельности компаний. Как правило, хранилище данных – это предметно-ориентированная БД, строящаяся на временной основе, т.е. все изменения данных отслеживаются и регистрируются по времени, что позволяет проследить динамику событий. Также хранилища данных хранят долговременные данные — это означает, что они никогда не удаляются и не переписываются – вносятся только новые данные, это необходимо для изучения динамики изменения данных во времени. И последнее, хранилища данных, в большинстве случае, консолидированы с несколькими источниками, т.е. данные попадают в хранилище данных из нескольких источников, причем, прежде чем попасть в хранилище данных, эти данные проходят проверку на непротиворечивость и достоверность.
Читать дальше →

SQLite — замечательная встраиваемая БД (часть 3)

Время на прочтение9 мин
Количество просмотров208K
Первая часть — вводная.
Вторая часть — быстрый старт.

Третья часть — тонкости и особенности.

Читать дальше →

Обзор архитектуры и обеспечения высокой доступности в SQL Database (SQL Azure)

Время на прочтение10 мин
Количество просмотров15K
Windows Azure предлагает как NoSQL хранилища, так и SQL-реляционные хранилища. NoSQL хранилища – это, например, Windows Azure Tables (ключ\значение) или BLOB-объекты (двоичные данные такие, как фото, видео, документы и т.п.). К реляционным хранилищам относится SQL Database (ранее SQL Azure).


Дальше

SQLite — замечательная встраиваемая БД (часть 2)

Время на прочтение4 мин
Количество просмотров179K
Часть 1
Часть 3

В этой части будут затронуты непростые вопросы использования SQLite через работу с его программным интерфейсом (API).

Читать дальше →

SQLite — замечательная встраиваемая БД (часть 1)

Время на прочтение5 мин
Количество просмотров493K
Решил все-таки написать статью про SQLite, в которой хочу обобщить свой 3-х летний опыт использования этой БД под Windows. Вижу, что тема популярная, но информации мало.

Часть 2
Часть 3

Небольшая вводная.

Эта статья не для начинающих программистов.
Она не является учебником по SQL.
Она не агитирует использовать SQLite.
Она не агитирует не использовать SQLite.
Статья написана в виде вопросов от гипотетического новичка в SQLite и ответов на них (поскольку информации очень много и так хоть немного проще ее структурировать).

Читать дальше →

Семь смертных грехов программиста на T-SQL

Время на прочтение13 мин
Количество просмотров205K
Недостаточно писать код хорошо читаемым: он также должен быстро выполняться.

Существует три базовых правила для написания такого T-SQL кода, который будет работать хорошо. Они кумулятивные – выполнение всех этих правил окажет положительное влияние на код. Пропуск или изменение любого из них – скорее всего приведет к отрицательному влиянию на производительность вашего кода.

  • Пишите, исходя из структуры хранения данных: если вы храните данные типа datetime, используйте именно datetime, а не varchar или что-нибудь еще.
  • Пишите, исходя из наличия индексов: если на таблице построены индексы, и они должны там быть, пишите код так, чтобы он мог использовать все преимущества, предоставляемые этими индексами. Убедитесь, что кластерный индекс, а для каждой таблицы он может быть только один, используется наиболее эффективным образом.
  • Пишите так, чтобы помочь оптимизатору запросов: оптимизатор запросов – восхитительная часть СУБД. К сожалению, вы можете сильно затруднить ему работу, написав запрос, который ему «тяжело» будет разбирать, например, содержащий вложенные представления – когда одно представление получает данные из другого, а то из третьего – и так далее. Потратьте свое время для того, чтобы понять как работает оптимизатор и писать запросы таким образом, чтобы он мог вам помочь, а не навредить.

Существует несколько типичных ошибок, которые люди допускают в своем коде на T-SQL – не совершайте их.
Читать дальше →

Знакомство с "Caché SQL Gateway" для создания федеративных систем или мультибаз

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

В СУБД Caché такая интеграция осуществляется с помощью специального шлюза (Caché SQL Gateway), который использует в своей основе ODBC/JDBC соединения к внешним источникам данных. Причём под источником в данном случае можно понимать не только СУБД, так как есть JDBC/ODBC драйвера для MS Excel, DBF, текстовых файлов, графических файлов, WMI и т.д.
Читать дальше →

Альтернативные SQL-менеджеры для СУБД Caché

Время на прочтение2 мин
Количество просмотров6.4K

Caché Monitor


Если при разработке или использовании вашего приложения на Caché вам часто приходится выполнять SQL-запросы, а функциональности SQL-менеджера из Портала Управления Caché или SQL-оболочки из терминала Caché вам недостаточно, то советую обратить внимание на приложение Caché Monitor.

Альтернативный SQL-менеджер разработал Андреас Шнайдер — разработчик из Германии.
Это кроссплатформенное Java-приложение кроме выполнения SQL-запросов предоставляет следующие возможности:
Читать дальше →

Немного о связываемых переменных (prepared statements)

Время на прочтение6 мин
Количество просмотров61K
Если бы мне пришлось писать книгу о том, как создавать немасштабируемые приложения Oracle, первая и единственная ее глава называлась бы «Не используйте связываемые переменные».
Том Кайт, вице-президент Oracle

Недавно на Хабре появилась статья от AlexanderPHP «SQL injection для начинающих. Часть 1». По ее содержимому и комментарием к ней может создаться впечатление, что у многих разработчиков нет понятия, что такое связываемые переменные, зачем ими следует пользоваться и какие преимущества они дают. Попытаюсь в данной статье пролить небольшой свет на данные вопросы.
Читать дальше →

Ближайшие события

Скорость доступа к данным: битва за будущее

Время на прочтение7 мин
Количество просмотров8.3K
С давних времен человечество занималось тем, что накапливало информацию, анализировало и хранило её в каком-либо виде, чтобы потом передать потомкам. Эволюция нашего сознания смогла стать возможной во многом благодаря именно этому — новому поколению людей не надо было постигать то, что уже было постигнуто до них. Начиная с древнейших носителей информации – египетских папирусов и шумерских табличек с клинописью, человечество накапливало всё больший и больший объем информации. В истории человечества были времена, когда в результате войн и катаклизмов часть уже накопленных знаний уничтожалась или исчезала, и тогда прогресс останавливался, а человечество отбрасывалось назад в своем развитии. Настоящей революцией и прорывом стало открытие технологии массового книгопечатания, которое позволило распространять информацию на большую аудиторию, что в свою очередь привело к взрывному росту в науках, искусстве, а также вывело сознание всего человечества на более высокий уровень. Развитие технологий в ХХ веке привело к появлению новых носителей информации – перфокарты, перфоленты, жёсткие магнитные диски и т.п. Всё большие и большие объемы информации переносились из гроссбухов на электронные носители. Возникла потребность в организации и управлении доступа к этим данным – так появились первые СУБД.

Реляционная модель данных, предложенная в 1970 году Э.Ф. Коддом, надолго задала тенденцию в развитии баз данных и позволила полностью отвечать требованиям бизнеса до сегодняшнего момента. С 1970 года реляционные базы данных прошли большой путь и приняли много вызовов, встававших на их пути. Постоянно растущие объемы данных привели к появлению методов, способных обеспечить более быстрый доступ к необходимым данным – индексы, хранение данных в отсортированном виде и т.п. Эти методы вполне успешно справлялись со своей задачей, да и до сих пор не потеряли своей актуальности. Однако стремительное увеличение объемов носителей информации и удешевление стоимости хранения данных привело к тому, что объемы баз данных в десятки терабайт не являются уже чем-то необычным и воспринимаются, как обычное явление. Бизнес не может допустить, чтобы эти данные лежали «мертвым грузом», так как всё возрастающая конкуренция в мире заставляет его искать новые подходы к освоению сферы своей деятельности, ведь по крылатому выражению – «Кто владеет информацией, тот владеет миром». Если говорить о времени, то счет идет не на дни, или даже часы, а скорее на минуты – кто сможет быстро получить необходимую информацию, тот и выиграет.
Читать дальше →

Соединение исторических таблиц

Время на прочтение5 мин
Количество просмотров7.7K
Время от времени мне приходится сталкиваться с задачами, когда нужно в рамках имеющейся СУБД выполнить соединение двух и более исторических таблиц между собой, да так, чтобы получить красивые исторические интервалы на выходе. Зачем? Чтобы отчет смог правильно отобразить данные на выбранную пользователем дату, или приложение подтянуло в себя эти данные для обработки.
Часто коллеги и братья по цеху сталкиваются с подобными задачами и советуются как лучше их решить.
В этой статье я хочу поделиться опытом как решались различные ситуации подобного типа.
Читать дальше →

Эволюция аналитической инфраструктуры (продолжение)

Время на прочтение10 мин
Количество просмотров8.2K
В предыдущей статье я рассказал, как и почему мы выбрали Вертику. В этой части я постараюсь рассказать об особенностях этой необычной базы данных, которой мы пользуемся уже более двух лет. Написание этой статьи заняло несколько больше времени, чем я планировал, в частности из-за того, что надо было рассказать с одной стороны достаточно технически подробно, с другой — доступно, и при этом не нарушить NDA. В результате я пошел по компромиссному пути: я попытаюсь описать, как Вертика устроена и работает в принципе, не касаясь деталей.

Часть 3. Vertica. Simply Fast


Simply Fast — этот вертиковский слоган возник не на пустом месте. Она, действительно, очень быстрая. Быстрая даже с “коробочными” настройками, что показали наши тесты во время выбора решения. В процессе миграции инфраструктуры мы хорошо изучили, как сделать Вертику еще быстрее и получать от нее максимальную производительность. Но обо всем по порядку.
Читать дальше →

Триггеры — спасители

Время на прочтение5 мин
Количество просмотров103K
Уже много статей в интернете есть про sql триггеры, но добавлю еще одну с адекватными примерами, что бы закрепить материал для тех, кто «в теме» и что бы лучше понять материал тем, кто только начал постигать «дзен sql». Заодно и создам дискуссию по теме.

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

Читать дальше →

Основы реляционной алгебры

Время на прочтение6 мин
Количество просмотров341K
Реляционная алгебра базируется на теории множеств и является основой логики работы баз данных.
Когда я только изучал устройство баз данных и SQL, предварительное ознакомление с реляционной алгеброй очень помогло дальнейшим знаниям правильно уложиться в голове, и я постараюсь что бы эта статья произвела подобный эффект.

Так что если вы собираетесь начать свое обучение в этой области или вам просто стало интересно, прошу под кат.

Читать дальше →

Метрики Хранилища Данных

Время на прочтение5 мин
Количество просмотров18K
Приветствую.

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

В этот момент у руководства могут возникнуть вопросы, если они не возникли ранее, что именно занимает так много места в БД, почему загрузка до сих пор не закончилась и прочее подобное.

Чтобы знать, что отвечать, необходимо провести учет. Создание ХД — процесс длительный, люди, разрабатывавшие архитектуру могут быть уже далеко, я не говорю уже о том, что бизнес требования меняются, иногда, так же быстро, как выходят новые версии браузера Firefox.
Читать дальше →

Вклад авторов