1 – Sybase Confidential – February 13, 2009 Quick Start Обзорный тренинг Москва, 4 июня, 2010 Андрей Хромов, технический консультант, Sybase CIS.

Презентация:



Advertisements
Похожие презентации
СУБД Microsoft Access 2003 Элементы языка SQL. Язык SQL SQL (Structured Query Language) – структурированный язык запросов Язык SQL применяется во многих.
Advertisements

Что такое связи между таблицами В реляционной базе данных связи позволяют избежать избыточности данных. Например, в ходе создания базы данных, содержащей.
База данных (БД) – Совокупность определённым образом организованной информации на определённую тему (в рамках определённой предметной деятельности); Организованная.
Выполнение запросов, создание и редактирование отчета MS Access.
1. Краткая характеристика MS Access1. Краткая характеристика MS Access 2. Достоинства и недостатки 3. Типы БД 4. Базы данных и системы управления базами.
Урок 3. Формы представления данных (таблицы, формы, запросы, отчеты)
Инструкция по созданию базы данных в Microsoft Access
6.5. Создание реляционной БД в среде СУБД ACCESS Общие сведения Реляционные отношения в СУБД ACCESS представлены в двух формах: в виде таблиц и в виде.
Администрирование информационных систем Лекция 4. Система управления базами данных.
Основные возможности MS ACCESS. CУБД Access - Представляет из себя программное средство, при помощи которого можно создать многотабличную реляционную.
Основы SQL Запросы к базе данных. Что такое база данных SQL? SQL (Structured Query Language - «Структурированный язык запросов») - универсальный компьютерный.
1. Теоретические основы операционных систем (планирование заданий и использования процессора, обеспечение программ средствами коммуникации и синхронизации,
Учебный курс по Microsoft ® Access ® 2010 Создание запросов для новой базы данных.
Физические модели баз данных Файловые структуры, используемые для хранения информации в базах данных.
Операционная система Windows. Windows – графическая операционная система для компьютеров платформы IBM PC Предназначена для управления автономным компьютером.
Базы данных Учебная презентация. Определение База данных (БД) – это информационная модель, позволяющая в упорядоченном виде хранить данные о группе объектов,
СУБД Access Запросы Автор: Тутыгин В.С.. Назначение запросов Запросы обеспечивают простой доступ к определенному подмножеству записей одной или нескольких.
Технология хранения, поиска и сортировки информации в базах данных
Лекция 3 Домены Ограничения на значения столбцов Создание, изменение и удаление таблиц Ключи и ссылочная целостность Защита таблиц.
Печать документов Борисов В.А. Красноармейский филиал ГОУ ВПО «Академия народного хозяйства при Правительстве РФ» Красноармейск 2009 г.
Транксрипт:

1 – Sybase Confidential – February 13, 2009 Quick Start Обзорный тренинг Москва, 4 июня, 2010 Андрей Хромов, технический консультант, Sybase CIS

2 – Sybase Confidential – February 13, 2009 Модуль 1. Что такое Sybase IQ9:00 – 9:30 Модуль 2.Архитектура и терминология9:30 – 10:15 Модуль 3.Инсталляция Sybase IQ10:15 – 10:45 ПЕРЕРЫВ – 15 мин Модуль 4.Создание базы данных11:00 – 11:45 Модуль 5.Конфигурирование сервера11:45 – 12:30 ОБЕД – 1 час Модуль 6.Типы данных. Таблицы. Индексы.13:30 – 15:15 ПЕРЕРЫВ – 15 мин Модуль 7.Загрузка данных 15:30 – 16:15 Модуль 8.Работа с Sybase IQ 16:15 – 16:45 ВОПРОСЫ И ОТВЕТЫ – 15 мин Наша программа:

Модуль 1 Что такое Sybase IQ

S YBASE IQ СУБД, разработанная специально для Хранилищ Данных, оптимизированная для: –Скорости: А) обработка запросов, Б) загрузка данных –Экономичности: А) администрирование, Б) платформа –Простоты: А) разработка, Б) эксплуатация –Масштабируемости: любой размер проекта Sybase IQ : –предназначена для BI проектов –это НЕ «OLTP» и НЕ «универсальная» СУБД –обладает уникальными характеристиками

Архитектура Хранилища данных Base décisionnelle Data Warehouse Data Marts Извлечение Трансформация Загрузка Анализ, Запросы, Отчеты

S YBASE IQ: в чем уникальность подхода 1. Вертикальное секционирование Традиционные СУБД (Sybase, Oracle, IBM, Microsoft) Sybase IQ Сокращение Ввода/Вывода, Избавление от эффекта "table scan"

S YBASE IQ: в чем уникальность подхода 2. Полное индексирование всей базы Отсутствие необходимости в сложном специальном тюнинге Полная готовность к ad-hoc запросам

S YBASE IQ : в чем уникальность подхода 3. Сжатие данных Производительность Расходы на диски снижаются на 50%

S YBASE IQ: Основные характеристики Очень высокая скорость обработки запросов (операции чтения) Оптимизированная массовая загрузка Внешне выглядит как обычная реляционная база данных Стандартный SQL интерфейс (Sybase, ODBC, JDBC) Открытость к модели данных (реляционная, многомерная) Простота настройки и конфигурирования Низкие затраты на администрирование Широкий выбор платформ (Unix, Linux, Windows) Линейная масштабируемость Наращиваемость: архитектура IQ Multiplex

Наращиваемость: Sybase IQ Multiplex «Программный» кластер Наращивание мощности по принципу «Plugn Play» Линейная масштабируемость, низкий TCO Два вида узлов кластера: «Читатель» или «Писатель» Балансировка нагрузки, управление ресурсами Обеспечение функции «Высокой доступности» Интернет-пользователи Балансировка нагрузки Поступление порции новых данных Внутренние пользователи: Маркетинг, Аналитики(Data Mining)

Загрузка данных 1 выделенный сервер Нагрузка на ЦП: Обработка запросов 1 сервер 4 процессора 8 ГБ ОЗУ IQ Multiplex в цифрах Тестовая база Таблицы размером 1-5 млрд. строк От 10 до 50 одновременных запросов

IQ Multiplex в цифрах. Загрузка одновременно с обработкой запросов Результаты теста оказались неожиданными. Времена исполнения запросов на сервере с нагрузкой были ниже, чем на сервере без нагрузки. Вероятнее всего это связано с кэшированием ввода/вывода в диском массиве MSA Поскольку в этом тесте ввод/вывод не был узким местом, то загрузка данных не принесла ожидаемого негативного эффекта. Сервер «Писатель», принимавший входящий поток данных, также не почувствовал никакого ухудшения производительности

Итак, SYBASE IQ – это: На 100% решение для BI задач, разработанное для: –Радикального увеличения производительности, снижения затрат (на ресурсы, на «тюнинг» базы и запросов, на эксплуатацию), для упрощения процедуры развертывания и дальнейший роста платформы –Возможности работать с данными ПО-ДРУГОМУ –Обеспечения гарантии успеха Ваших проектов Решение, с которым мы сейчас познакомимся поближе Решение, которое стоит попробовать

Модуль 2 Архитектура и Терминология

Платформы Sybase IQ Платформы, поддерживаемые Sybase IQ 15.2 Sun Solaris (64-bit) –SPARC64 –UltraSPARC T –X64 (Opteron) IBM AIX (64-bit) HP-UX Itanium (64-bit) –HP-UX PA-RISC (64-bit) – только IQ 12.7 Linux –Linux x86/x64 (32- и 64-bit) – RHEL и SLES –Linux on IBM POWER (64-bit) Windows (32- и 64-bit) –Windows Server 2003, 2008 –Windows XP, Vista, W7

Сервер Sybase IQ Сервер Sybase IQ – это процесс ОС, запущенный на серверном компьютере Этот сервер баз данных является «мозгом» системы Sybase IQ Пользователи подсоединяются к серверу IQ, чтобы получить доступ к базе IQ Включает в себя возможности настройки Рассчитан на работу только с одной базой Sybase IQ Иметь несколько баз на одном сервере не рекомендуется Пользователи могут эмулировать работу с несколькими базами данных внутри одной базы IQ путем логического разделения объектов Использует функционал Sybase SQL Anywhere (ASA) Для поддержки ряда функций Sybase IQ используется код сервера ASA

Sybase IQ и ASA SQL Anywhere (ASA) – это реляционная СУБД, которая может существовать как сама по себе, так и в связке с Sybase IQ –Поддерживает ANSI SQL и ряд дополнительных конструкций –Зрелая СУБД, давно и с успехом существует на рынке. Sybase IQ –Патентованная технология хранения –Вертикальное хранение данных –Sybase IQ использует некоторый функционал ASA

Sybase IQ и ASA IQ и ASA – это симбиоз двух продуктов Функционал ASA, используемый в IQ –Механизм обслуживания подключений пользователей –Синтаксический разбор SQL-запросов –Система безопасности (пользователи, права, ит.п.) –Механизм Component Integration Services (CIS) Хранимые процедуры Sybase IQ можно писать, используя один из двух SQL-диалектов ASA - T-SQL или WatcomSQL –Системные хранимые процедуры Sybase IQ написаны на WatcomSQL

База данных Sybase IQ Включает следующие компоненты –Три накопителя - Stores Catalog Store (для метаданных) IQ Store (для данных) IQ Temporary Store (для временных данных) –Файлы сервера Журнал сообщений IQ (IQ message log) Журнал транзакций Catalog Store (Catalog store transaction log) Журналы сервера IQ (IQ server log)

Архитектура Sybase IQ Общая картина (конфигурация с одним сервером)

Пространства БД (dbspaces) Пространство БД (dbspace) – это логическое имя для дискового пространства, используемого базой данных IQ –dbspace может быть файлом ОС или «сырым» устройством, выделенным под Sybase IQ База данных Sybase IQ обычно включает в себя несколько dbspace: –IQ Store, Catalog Store и IQ Temporary Store – все они состоят из одного или нескольких dbspace 12.7

Пространства БД (dbspaces) В Sybase IQ 15 dbspace – это логическое имя контейнера, объединяющего в себе несколько dbfiles Иерархическая структура базы данных в Sybase IQ 15: –База IQ состоит из 3 Накопителей (Stores): IQ Store, Catalog Store, IQ Temporary Store –Каждый из Stores может состоять из 1 или нескольких dbspace Catalog Store и IQ Store - из 1 или нескольких dbspace IQ Temporary Store - всегда только из 1 dbspace –Пространство БД (dbspace) может состоять из 1 или нескольких файлов БД (dbfiles) Некоторые dbspace могут состоять только из 1 dbfile –Файл БД (dbfile) может быть файлом ОС или «сырым» устройством IQ 15

Иерархия структуры базы в IQ 15 Stores dbspaces dbfiles IQ 15

Пространства БД (dbspaces) в IQ 15 dbspace – логический контейнер файлов, относящихся к одному из Stores. Аналог базы данных в ASE Catalog Store имеет только 1 dbspace –SYSTEM – для размещения таблиц каталога БД –Может состоять лишь из 1 dbfile IQ Store после создания нового сервера имеет 1 dbspace. В дальнейшем обычно имеет несколько dbspaces –IQ_SYSTEM_MAIN – содержит системные метаданные (аналог базы данных master в ASE) –Дополнительно создаваемые dbspace служат для размещения пользовательских данных –Каждый dbspace может включать в себя множество dbfile IQ Temporary Store имеет только 1 dbspace –IQ_SYSTEM_TEMP – для хранения временных данных –Может состоять из множества dbfiles IQ 15

Накопитель Catalog Store Каждая база IQ имеет Сatalog Store. Это всегда 1 dbspace –Это всегда файл ОС –Этот dbspace растет автоматически по мере добавления новых объектов базы Содержит служебную информацию о базе IQ –Метаданные (хранятся в системных таблицах) –Хранимые процедуры (системные и пользовательские) Также известен как ASA-файл базы (database file) –Физическое имя файла.db Логическое имя Сatalog Store - SYSTEM

Накопитель IQ Store Служит для хранения данных – в виде сжатых индексов –Содержит журнал транзакций для данных в таблицах IQ –Содержит структуру для управления распределением места (список свободного места, free list) Каждая база IQ имеет только один IQ Store –Обычно состоит из нескольких dbspace –Эти dbspace могут создаваться как «сырые» устройства или как файлы ОС Логическое имя первого dbspace - IQ_SYSTEM_MAIN –Имя первого физического файла -.iq (если dbspace был создан как файл ОС)

Накопитель IQ Temporary Store «Рабочая область» базы данных –Здесь сортируются данные для построения тех индексов, что строятся в процессе загрузки –Здесь производится сортировки и группировки, необходимые для обработки запросов Имя физического файла -.iqtmp (если dbspace создан на файловой системе) Каждая база имеет только одно IQ Temporary Store –Может состоять из нескольких физических файлов –Может располагаться на «сырых» устройствах или на файлах ОС Логическое имя первого dbspace - IQ_SYSTEM_TEMP

Журнал сообщений IQ (Message Log) Текстовый файл. Формат пригодный для чтения. Содержит: –Сообщения об массовых операциях INSERT и DELETE –Сообщения об ошибках –Информационные сообщения –Планы запросов Физическое имя файла -.iqmsg –Каждая база IQ имеет один журнал сообщений Это всегда файл ОС

Журнал транзакций Catalog Store Это журнал транзакций ASA-базы Сatalog Store –К данным IQ Store и изменениям данных, проходящим в IQ Store, отношения не имеет Используется для отката (roll back) или наката (roll forward) изменений в базе Catalog Store Физическое имя файла -.log Это небольшой файл ОС, который с течением времени медленно увеличивается

База данных IQ. Общая картина Компоненты базы Sybase IQ (конфигурация с одним сервером)

Понятие «Таблица» в IQ Таблицы IQ - это «логические» таблицы, определенные в Сatalog Store –На самом деле таблица – это просто набор колонок Три типа таблиц –Основные таблицы (Base tables ) –Локальные временные таблицы (Local temporary tables) –Глобальные временные таблицы (Global temporary tables)

Понятие «Индекс» в IQ Каждая колонка в таблице IQ всегда содержит по крайней мере один индекс, используемый для выборки данных и обработки запросов –Индекс «по умолчанию» создается в момент создания таблицы –Для обеспечения скорости выборки на большинстве колонок обычно создаются дополнительные индексы Тип нужного индекса определяется по –Ожидаемой кардинальности данных в колонке –Тому, как эта колонка используется в запросах 9 типов индексов Fast Projection (FP) = «Индекс по умолчанию» Low Fast (LF)Date (DATE) High Non Group (HNG)Date & Time (DTTM) High Group (HG)Time (TIME) Compare (CMP)Word (WD)

Модуль 3 Инсталляция Sybase IQ

Размер требуемого места на диске Бинарники IQ –Unix / Linux: до 800MB –Windows: до 375MB (283MB для IQ) База данных –IQ Store: от 70 до 100% размера входных данных –IQ Temporary Store: от 20 до 25% размера IQ Store; определяется в зависимости от количества пользователей, индексов и данных Пространство для файлов загрузки –Пространство, необходимое для размещения файлов с исходными данными, для последующей загрузки в IQ Файл подкачки –Равный или удвоенный размер объема физической памяти (RAM)

Рекомендации к оборудованию Чем больше ПРОЦЕССОРА, тем лучше –Ускоряется Загрузка данных (Load Table умеет использовать SMP) –Улучшается производительность при многопользовательской нагрузке –Более быстрые CPU предпочтительнее Рекомендуется 1 GHz (или выше) –Производительность сервера IQ практически линейно зависит от скорости процессора –IQ больше нагружает CPU, чем подсистему Ввода/вывода Чем больше ПАМЯТИ, тем лучше –Минимум 4 GB на каждый CPU –Лучше 8 ГБ на 1 CPU

Инсталляция Sybase IQ Перед началом инсталляции выберите, какие компоненты вы хотите установить:

Старт сервера Sybase IQ - Windows Старт Sybase IQ 1.Выберите: Пуск > Программы > Sybase > Server IQ 15.1 > Start Sybase IQ Demo Database 2.Запустится база данных iqdemo на сервере Sybase IQ с именем hostname_iqdemo Рекомендуемый метод запуска сервера Sybase IQ будет обсуждается в модуле Настройки сервера и Опции БД –Там обсуждаются настройки и опции сервера

Остановка сервера Sybase IQ - Windows Остановка IQ – Windows 1.Откройте окно консоли сервера Sybase IQ. Для этого щелкните мышкой на иконку IQ на системном трэе – в нижнем правом углу экрана. 2.Нажмите Shutdown (Остановить). 3.Опции командной строки запуска сервера определяют режим остановки: ждать завершения активных соединений или нет..

Соединение с сервером Sybase IQ Sybase IQ поддерживает следующие типы соединений: –ODBC, OLE-DB и Embedded SQL –Sybase Open Client –JDBC С Sybase IQ поставляются клиентские приложения: –Sybase Central – соединяется через ODBC или JDBC –dbisql (Interactive SQL Java) – соединяется через ODBC или JDBC –dbisqlc (Interactive SQL клиент) – соединяется через ODBC –iqisql (Open Client Interactive SQL) – соединяется через OpenClient

Соединение с помощью DBISQL DBISQL - это клиент для связи с Sybase IQ –Поставляется вместе с Sybase IQ –Это рекомендуемый метод для взаимодействия с Sybase IQ –Будет полезен для администраторов баз данных –Может использоваться как инструмент написания запросов DBISQL имеет два GUI-интерфейса и два режима работы –GUI (графический) Interactive SQL Java (тонкий java клиент) Interactive SQL Classic (толстый клиент, написан на C) –Режим работы без GUI (беззвучный режим)

Соединение с помощью Sybase Central Графическая консоль для управления серверами Sybase –Данная Java-версия Sybase Central предназначена только для использования с IQ –Использует соединение ODBC или JDBC Для соединения с Sybase IQ (Windows): –Меню Пуск > Sybase > Sybase IQ 15.1 > Sybase Central Java Edition –Логин - DBA / Пароль– SQL Для соединения с Sybase IQ (Unix / Linux): –Запустить из командной строки Sybase Central Agent –Запустить из командной строки Sybase Central

Возможности Sybase Central Создание новых баз данных Sybase IQ Запуск и остановка серверов Sybase IQ Добавление и удаление dbspaces, dbfiles Создание таблиц, представлений и индексов –Изменение таблиц и представлений –Перестройка индексов –Просмотр и изменение данных –Генерация DDL скриптов Создание хранимых процедур Добавление пользователей и групп, управление правами

Соединение через Open Client Open Client – это дополнительный способ соединения с Sybase IQ –Использует TDS протокол Sybase Зачем нужно использовать Open Client? –Предоставляет возможность соединения с Sybase IQ через командную строку –Для загрузки данных из других удаленных серверов/баз Соединение с Sybase IQ через Open Client имеет ряд особенностей: –Использует режим транзакций unchained –Не является ANSI стандартом –Не может распознавать некоторые типы данных IQ

Роль интерфейсного файла TDS клиенты и сервера находят друг друга посредством просмотра интерфейсных файлов Интерфейсные файлы необходимы: –Серверам для указания сетевых адресов, которые они должны слушать, чтобы клиенты могли к ним подключиться –Клиентам, чтобы определить, куда направлять свои запросы на подключение –Чтобы определить местонахождение сервера из которого нужно загрузить данные Интерфейсные файлы имеют различные имена на разных платформах: –UNIX: $SYBASE/interfaces –Windows: %SYBASE%\ini\sql.ini

Модуль 4 Создание баз данных

Состав базы данных IQ База создается при помощи команды CREATE DATABASE

Пространство БД (dbspace) dbspace – это логическое имя части дискового пространства, выделенной под использование базой IQ Каждая база IQ включает в себя несколько dbspace –Максимально допустимое количество dbspace для одной базы В каждой новой базе для каждого Накопителя (Store) имеется как минимум один dbspace Впоследствии к базе могут добавляться дополнительные dbspace

dbspace Новые данные в базе распределяются по всем dbspace –Правильный подход: при создании базы сразу выделить для нее все необходимое пространство Данные распределяются между всеми dbspace равномерно –Данные записываются во все dbspace по алгоритму round-robin –Такой подход является рекомендуемым для наилучшей производительности Объекты могут быть помещены в заданный dbspace –Объекты можно перемещать из одной dbspace в другую –Функции управления dbspace рассматриваются позднее Планируйте по крайней мере 10% резервного пространства в вашей базе –Место может понадобиться, например для новых версий таблиц (рассматривается позднее)

Планирование dbspace Перед созданием базы необходимо определиться с типом и размером выделяемых под нее дисков –Размер Catalog Store не должен превышать 1TB (или 4GB на Windows с файловой системой Fat32) –Размер IQ Store и IQ Temp Store На сырых устройствах – без ограничений (может зависеть от платформы) На файловой системе – 4TB dbspace для IQ Store и IQ Temp Store в последствии могут быть расширены или удалены из базы данных –Для того, чтобы можно было расширить существующую секцию dbspace, она должна быть создана определенным образом (дополнительный синтаксис при создании) – Пустая секция dbspace может быть удалена

Catalog Store Всегда создается на файловой системе –Рекомендуется создавать этот файл на той же машине, на которой работает сервер IQ Растет по мере добавления новых объектов в базу –Никогда не сокращается, даже в случае удаления объектов На файловой системе должно быть достаточно места под файл каталога –Другие файлы IQ (включая файл сообщений IQ и серверные журналы IQ) обычно располагаются на той же файловой системе, что и Catalog Store. –Если на файловой системе закончится место, сервер «зависнет»

dbspace для IQ Store и IQ Temp Store Могут создаваться на «сырых» дисках или на файловой системе Состоят из заранее выделенного набора страниц данных Могут быть увеличены на величину «зарезервированного» при создании dbspace места –Существует специальный синтаксис, выполняющий команду увеличения dbspace и создания dbspace с последующей возможностью расширения Зарезервированное пространство позволяет: –Добавлять место в существующий dbspace –dbspaces, занявший все свободное место на диске может быть перенесен на другой диск бОльшего размера (для этого нужно остановить сервер) и затем расширен.

Порядок действий при создание базы Шаг 1.Определить тип сервера, который вы хотите создать Шаг 2.Выбрать тип дискового устройства Шаг 3.Оценить размер базы данных Шаг 4.Создать базу данных

Шаг 1: Выбрать тип устройства ПреимуществаНедостатки Сырой диск Управляются напрямую приложением (СУБД), минуя файловую систему Производительность может быть выше Размер устройства может быть больше IQ получает полный контроль над кэшем данных Сложнее в управлении Файловая система Легче в управлении Дополнительные потери на операции чтения Файловая система не имеет представления о страницах IQ «Сырые» диски против Файловой системы

Устройства для Sybase IQ Рекомендации по производительности –ПО для управления Логическими Томами использовать не рекомендуется –Для IQ Store используйте устройства бОльшего размера –Для IQ Temp Store cоздавайте несколько dbspace (IQ 12.7) или dbfiles (IQ 15) »Не менее 1-2 dbspace (dbfiles) на 1 CPU –Используйте «сырые» устройства для лучшей производительности Работа с «сырыми» устройствами на Unix / Linux –Используйте «сим.линки» для «сырых» устройств. Это даст вам большую гибкость при переконфигурировании устройства

Шаг 2: Оценить размер базы IQ Store – 75% от общего размера исходных данных –Объем требуемого места зависит от нескольких факторов: Характер данных (повторяющиеся значения, типы данных) Количество и типы IQ-индексов, которые будут созданы –Пространства dbspace для IQ store впоследствии могут добавляться и удаляться по мере необходимости IQ Temporary Store – обычно 20% от размера IQ Store –Размер под IQ Temporary Store зависит от: Количества HG индексов (перестраиваемых при загрузке данных) Количества активных пользователей Сложности пользовательских запросов –Пространства dbspace для IQ Temp Store впоследствии могут добавляться и удаляться по мере необходимости

Шаг 3: Создать базу данных –Если вы используете DBISQL, подсоединитесь к серверу IQ и запустите скрипт Можно использовать команду CREATE DATABASE в DBISQL или «мастер» в Sybase Central

Файлы, создаваемые при создании базы dbspaces, создаваемые в процессе создания базы (на файловой системе) –имябазы.db – IQ catalog store –имябазы.iq* - IQ store –имябазы.iqtmp* - IQ temporary store Другие объекты, создаваемые в процессе создания базы –имябазы.log – журнал транзакций –имябазы.iqmsg – IQ журнал сообщений

Параметры создания базы Следующие несколько слайдов посвящены наиболее важным для базы данных параметрам, многие из которых оказывают прямое влияние на производительность Эти параметры нельзя изменить после того, как база создана –Отнеситесь к ним с осторожностью –Если параметры настроены некорректно, базу необходимо пересоздать

Параметры создания базы CASE – определяет чувствительность к регистру в запросах –По умолчанию, данные чувствительны к регистру (строчные и заглавные буквы различаются) –В базах данных, чувствительных к регистру, производительность выше PAGE SIZE – размер страницы для catalog store –По умолчанию: 4096 байт (4K) –Варианты: 4096, 8192, 16384, –Для баз данных с очень широкими таблицами или с очень сложными запросами (длинные SQL-команды) может потребоваться увеличение размера страницы

Параметры создания базы COLLATION – последовательность сортировки, по умолчанию равна значению ISO_BINENG –Это та же последовательность, что и для набора символов ASCII (сначала заглавные потом строчные буквы) JAVA – разрешение на хранимые процедуры на Java (по умолчанию ON) JCONNECT – разрешение на подключение через JDBC (по умолчанию ON)

IQ PAGE SIZE – какой размер выбрать? Определяющие факторы (также см. документацию) Тип платформы (32 или 64 битных ОС) –для 32-битных OS -> 64K или 128K –для 64 битных OS -> 128K или больше (256K, 512K) Количество памяти на машине (RAM) –Размер страницы IQ определяет размер «буфера» кэша IQ –Если страница IQ большого размера, то в кэше IQ поместится меньшее кол-во соответствующих «буферов» страниц Размер базы и размер самой большой таблицы (# записей) –Чем больше база данных, тем больший размер рекомендуется для страницы IQ –Чем больше таблица, тем больший размер рекомендуется для страницы IQ Количество конкурентных пользователей –Больше пользователей требуют большее число «буферов» ! !

Создание баз данных: Sybase Central Мастер создания баз данных будет запрашивать информацию, требуемую для создания базы

Удаление базы данных Удаляет базу данных и все ее содержимое Пример: DROP DATABASE D:\\mydb\\mydb.db Удаляет базу данных mydb Нужно указать имя файла базы, которое задавалось при создании – в операторе CREATE DATABASE База данных должна быть остановлена перед удалением

Проверка состояния базы - sp_iqstatus sp_iqstatus Предоставляет детальную информацию о текущей базе данных –Информация о версии –Размер базы –Объем свободного места в IQ store и IQ temporary store Пример на следующем слайде

Проверка состояния базы - sp_iqstatus

Другие полезные хранимые процедуры sp_iqcheckdb –Проверка целостности текущей базы sp_iqdbsize –Распечатка данных о размере текущей базы sp_iqdbstatistics –Статистика по IQ store sp_iqspaceused –Отображение информации о свободном и занятом месте в IQ Store и в IQ Temporary Store

Модуль 5 Конфигурирование сервера

Конфигурирование Сервера/ Базы Каждый сервер и база IQ требуют конфигурирования Конфигурирование сервера IQ: –Ключи командной строки во время старта сервера И/ИЛИ –Конфигурационный файл (.cfg файл) - передается со Это предпочтительный метод старта сервера/базы данных Sybase Central при создании базы создает конфигурационный файл «по умолчанию» с названием params.cfg Конфигурирование базы данных: –Команда Set Option

Конфигурирование сервера IQ Конфигурирование сервера –Для управления поведением сервера IQ используют ключи –Ключи задаются в командной строке или в конфигурационном файле (.cfg), переданном со Командная строка – start_iq server-switches database_file Конфигурационный файл – database_file Комбинация ключей и конфигурационного файла start_iq –n database_file

Ключи для управления памятью IQ Эти ключи конфигурационного файла IQ настраивают размер памяти, выделяемой под кэши IQ -iqmc = размер основного кэша Нужно задать размер основного кэша в MB, по умолчанию 16 MB -iqtc = размер временного кэша Нужно задать размер временного кэша в MB, по умолчанию 12MB Позднее будет рассказано как правильно задать размер памяти

Кэши IQ (кэши буферов IQ) Основной кэш (MAIN CACHE) – Область памяти для буферов IQ Store –Используется совместно всеми пользователями Временный кэш (TEMP CACHE) –Область памяти для буферов IQ Temporary Store –Используется совместно всеми пользователями Примечание: –перед началом процесса загрузки данных размер для обоих кэшей должен быть выставлен

Зачем нужно настраивать кэши? Размеры кэшей «по умолчанию» для реальной работы слишком малы Размеры «по умолчанию» достаточны для запуска сервера, но для работы с реальными большими объемами данных они должны быть увеличены Чем больше размер кэшей, тем меньше физического ввода/вывода, тем выше производительность –Кэши используются для всех операций дискового чтения/записи –Снижают объем физического ввода/вывода –Повышают производительность операции загрузки данных На время загрузки вам, возможно, понадобиться изменить пропорцию распределения памяти между основным и временным кэшами - для оптимизации загрузки таблиц с большим количеством индексов

ОСНОВНОЙ кэш (Main Buffer Cache) Инициализируется в момент старта базы Размер по умолчанию для основного кэша - 16 MB –Это слишком мало для большинства приложений После изменения этого параметра, необходимо выполнить перезапуск сервера IQ Рекомендуемый стартовый размер - 40% общей памяти, доступной под сервер IQ –Расчеты и примеры приводятся дальше

ВРЕМЕННЫЙ кэш (Temporary Buffer Cache) Инициализируется во время старта базы Этот кэш используется для выполнения операций группировки, сортировки, хэширования, и объединения в режиме ad-hoc По умолчанию, размер этого кэша - 12 MB –Это очень мало для большинства приложений После изменения этого параметра, необходим перезапуск сервера IQ Рекомендуемый стартовый размер - 60% общей памяти, доступной для сервера IQ –Расчеты и примеры приводятся далее

Просмотр размера кэшей Используйте команду sp_iqstatus Размер основного кэша IQ = 16MB Размер временного кэша IQ = 12MB

Память и «Активные» пользователи Каждый пользователь, подключающийся к серверу IQ увеличивает объем памяти, используемый процессом IQ –Память, используемая сервером IQ, увеличивается динамически, по мере увеличения числа подключенных пользователей Каждый активный пользователь увеличивает память, занимаемую сервером на 10MB –Активные пользователи исполняют запросы или загружают данные –Для бездействующих пользователей нужно меньше памяти (5MB на соединение) Вам будет нужно оценить количество активных и количество подключенных пользователей, чтобы иметь возможность оценить общее количество памяти, необходимой вашему серверу

Память под загрузку данных Во время процесса загрузки данных из плоских файлов IQ требуется дополнительная память –Эта память используется для буферизации чтений с диска –IQ НЕ использует эту память для загрузки данных с других серверов, для операций UPDATE и DELETE Объем необходимой памяти зависит от количества колонок и от ширины строки, а не от количества записей, которые необходимо загрузить Эта память нужна IQ в дополнение к той, которая выделятся для работы серверного процесса IQ и для кэшей IQ –Память для загрузки контролирует опция базы данных LOAD_MEMORY_MB

Опция LOAD_MEMORY_MB Контролирует объем памяти, выделяемой под буферизацию чтений из файлов на диске в процессе загрузки таблиц Каждая отдельная операция загрузки данных использует свои собственные буфера SET OPTION PUBLIC.LOAD_MEMORY_MB = 300 Может быть задана как постоянный параметр, как временный параметр и для заданного пользователя –Может меняться динамически (не требуется перезагрузка сервера) –Используйте эту опцию, если в процессе загрузки вы увидели следующую ошибку памяти: All virtual memory has been allocated (Вся виртуальная память занята) Также, эта ошибка может возникнуть, если лимит для заданного пользователя слишком низок

Основной и временный кэши IQ Размер кэшей определяется после того, как становится понятен размер оставшейся памяти Рекомендуется поделить оставшуюся память между основным и временным кэшами в следующей пропорции: »40% - на основной кэш »60% - на временный кэш Эти значения – хорошая стартовая точка. Дальнейшая подгонка размеров кэшей выполняется в соответствии с характером вашего приложения.

Ключи для сетевых соединений Ключи конфигурационного файла IQ, управляющие параметрами сетевых коммуникаций Параметр –x задает тип протокола, используемого для сетевых коммуникаций по умолчанию это TCP/IP с портом x tcpip(port=2640) Запустить сервер на порте x tcpip(MyIP = :2637) Установить IP адрес и порт равный x tcpip Использовать только TCP/IP с портом по умолчанию

Опции базы данных IQ Команда SET OPTION изменяет опции базы Может изменить поведение базы как для всех пользователей, так и для заданного пользователя –Изменения могут быть временными и постоянными SET [TEMPORARY] OPTION [user_id. | PUBLIC.] option-name = [option-value]

Опции базы данных IQ Область видимости и время действия Область видимости определяет то, по отношению к кому применяется данная опция –PUBLIC – воздействует на всех пользователей –USER_ID – воздействует на отдельного пользователя группы Настройки для индивидуального пользователя перекрывают настройки, установленные с ключом PUBLIC Время действия определяет длительность применяемой опции –Public – постоянная(или до тех пор пока не изменят) Разрешено устанавливать только DBA –Temporary – на время жизни сессии Перекрывает установку Public –Temporary … Public – постоянно, до тех пор пока сервер IQ не будет перегружен Разрешено устанавливать только DBA

Опции базы данных IQ Опции для повышения производительности Public.Force_No_Scroll_Cursors=On; (по умолчанию off) –Установка в On предотвращает кэширование результатов запросов пользователей –Выключает возможность прокручивания Result Set от начала к концу Public.Query_Temp_Space_Limit = 0; (по умолчанию 2000 MB) –Ограничение в 2000 MB может быть слишком маленьким для некоторых пользователей –0 снимает ограничения к объему памяти, выделяемой под временный кэш

Проверка опций базы данных sp_iqcheckoptions Показывает любые опции базы данных, которые были изменены со значений по умолчанию

Модуль 6 Типы данных. Таблицы. Индексы.

ТИПЫ ДАННЫХ Модуль 6

Типы данных Sybase IQ Поддерживается очень широкий спектр различных типов данных –Некоторые типы данных не поддерживаются через Open Client (isql) –Существует ряд ограничений между индексами IQ и типами данных Для лучшей производительности и компрессии данных –Выбирайте наиболее эффективный тип данных для этой колонки Проверяйте количество байтов, необходимое для хранение каждого типа данных Обратите особое внимание на следующие типы данных –Date / Datetime Используйте Date вместо Datetime если компонента «время» не используется –Numeric / Decimal Выбирайте разумное число знаков после запятой

Типы данных IQ Тип данных ASIQДиапазонМаксимальное число знаков Размер (в байтах) CHAR(n) CHARACTER(n) 1

Типы данных IQ Типы данных ASIQДиапазонМаксимальное число знаков Размер (В байтах) BIGINT(n) UNSIGNED BIGINT(n) -9.2(^18)

Типы данных IQ Тип данных ASIQДиапазонМаксимальное число знаков Размер (в Байтах) TIME00:00: :59: n/a8 DECIMAL(p,s) NUMERIC(p,s) От 2 до 69 DOUBLE2.22(^-308) (^308)158 BIT0, 1n/a1 bit MONEY1916 SMALLMONEY108 BINARY (длина)n/aОт 1 до 255 VARBINARY (длина)n/aОт 1 до (32K – 1) UNIQUEIDENTIFIERSTR36n/a36

Пользовательские типы данных (UDT) Являются надстройкой над встроенными типами данных Создаются командой CREATE DOMAIN CREATE DOMAIN имя_домена системный_тип Также могут быть созданы при помощи хранимой процедуры sp_addtype sp_addtype имя_типа, системный_тип

Хранение больших объектов (BLOB) IQ поддерживает возможность хранения LOB данных (такая возможность является отдельной лицензируемой опцией). –Для этих целей используются типы данных LONG BINARY и LONG VARCHAR –Максимальный размер объекта напрямую связан с размером страницы IQ Максимальный размер LOB = Размер страницы IQ x 4GB Данные типа BLOB могут только храниться в базе данных –Поиск по колонкам типа BLOB невозможен –Поддерживаются некоторые системные функции Для типа данных LONG VARCHAR поддерживается функция SUBSTRING64 –Поиск по подстроке возможен –Поддерживается ряд системных функцй См. «Large Objects Management» (Управление крупными объектами) в документации Sybase IQ

СОЗДАНИЕ ТАБЛИЦ Модуль 6

Создание таблиц в базе данных IQ

Команда CREATE TABLE Ограничение UNIQUE (уникальное значение) –Не допускает ввода повторных значений в колонке или группе колонок –Создается уникальный HG индекс на колонке (колонках) Ограничение PRIMARY KEY (первичный ключ) –То же самое что и констрейнт UNIQUE, но в таблице может быть задан только один PRIMARY KEY Опция IQ UNIQUE (кардинальность колонки) –Задает примерное количество уникальных значений в колонке –Определяет тип FP индекса

Команда CREATE TABLE Ограничение CHECK (проверка) –Позволяет задать условия, которые должны быть проверены перед выполнением операций INSERT и UPDATE Ограничение FOREIGN KEY (внешний ключ) –FK – это колонка (колонки) чьи значения являются подмножеством значений другой колонки (колонок) –Колонка (колонки), на которую идет ссылка должны быть либо основным ключом (Primary Key), либо для них должен быть задан констрейнт Unique –Для колонок типа Foreign Key создается неуникальный HG индекс

Производительность запросов и PK, FK Первичные ключи (Primary или Unique) являются критичными для производительности запросов –Оптимизатор использует ключи, чтобы определить взаимосвязь таблиц при выполнении операции join –Необходимо задавать констрейнты Primary или Unique в таблицах, используемых в операциях join В качестве ключей задавайте колонки, которые вы будете использовать для операций join Для внешних ключей (Foreign Key) и других колонок нужен HG-индекс –Констрейнт Foreign Key создает HG-индекс –Констрейнт FK не является обязательным, - фактически он нужен только в том случае, когда есть проблема целостности реляционных данных Если вы не используете внешние ключи, создавайте HG-индекс на колонках, участвующих в операции join

Создание таблицы в Sybase Central Нажмите на иконку New Table (новая таблица) в верхней части экрана Нажмите правой кнопкой мышки на области экрана со списком таблиц и выберите New > Table (Новая > Таблица)

Временные таблицы в IQ Глобальные и Локальные Глобальные временные таблицы –Таблицы будут существовать в базе данных, до тех пор пока их не удалят –Каждый пользователь будет иметь свой собственный набор данных в такой таблице Строки будут видны только в рамках того соединения, в котором их добавили в таблицу Эти строки удаляются когда соединение закрывается Локальные временные таблицы

Другие команды для работы с таблицами Просмотреть информацию о таблице sp_iqtable [table-name] Изменить структуру таблицы ALTER TABLE [owner.] table-name etc. Очистить таблицу TRUNCATE TABLE [owner.] table-name Удалить таблицу DROP TABLE tablename Полный синтаксис см. в документации Sybase IQ

ИНДЕКСЫ Модуль 6

Индексы традиционных СУБД Многие базы данных используют индекс, построенный по принципу сбалансированного дерева (B-tree)

Индексы IQ типа «битмап» Bitmap представляет заданное значение в виде битовой маски (например: 0, 1) Эффективно индексирует данные вне зависимости от их кардинальности Легок в поддержке (нет необходимости в удалении и перестройке индексов)

Особенности индексов Sybase IQ Быстро строятся, быстро работают (для запросов) Компактность –Требуют меньше дискового пространства чем традиционные B-tree индексы –Больше данных может находиться в памяти Поколоночная структура хранения –Ключевой фактор для скорости обработки запросов Выбор «правильного» индекса IQ делается на основании: –типа данных колонки, –кардинальности колонки –каким образом колонка будет использоваться в запросах Каждый индекс (метод доступа) хранится и управляется по-своему Вы можете последовательно добавлять, обновлять и удалять строки в таблицы IQ без перестройки индексов

Работа индексов IQ в запросах В отличие от реляционных баз данных, IQ использует все индексы, всех колонок, так или иначе участвующих в конструкциях sql-запроса: –в функциях - Count(), Count Distinct, Datepart –в JOIN таблиц –в аргументы поиска (SARG) в операторе Where –в GROUP BY Для реализации среды, способной качественно справляться с любыми ad-hoc запросами, вам потребуется много индексов на в ваших таблицах

Девять типов индексов Sybase IQ

Индекс FP (Fast Projection, «Проекция») Этот индекс создается автоматически, во время выполнения операции CREATE TABLE –Также известен как Default Index (индекс по умолчанию) –Сервер создает индекс с названием ASIQ_IDX_..._FP –Может быть удален только при помощи команды Alter Table Drop Используется сервером IQ в большом количестве операций –Для выборки данных (проецировании) при операции SELECT –В поиске по шаблону – LIKE %sys% –В вычислении выражений – SUM(A+B) –В операциях Join – устанавливает соответствия между значениями колонок Единственный индекс, который может быть использован в колонках с типом данных BIT

Как IQ хранит FP индексы Существует 4 формы хранения FP-индексов –Форма хранения зависит от кардинальности колонки Плоский FP индекс – Flat FP –Данные хранятся в той же форме, в какой они загружались (без оптимизации структуры хранения) –Сколько места потребуется для хранения определяется типом данных колонки Char(10) – 10 байтов, Integer – 4 байта, и т.п. Оптимизированные FP индексы - FP(1),FP(2),FP(3) –Хранятся как 1, 2 или 3 байта – в зависимости от кардинальности колонки –Для оптимизации структуры хранения DBA должен включить специальную опцию IQ или для каждой колонки указать констрейнт IQ UNIQUE в команде Create Table

Оптимизированный FP(1) – 1 байт Входные данные конвертируются в 1 байт. Далее, создается таблица соответствий, содержащая все уникальные значения и указатели на их расположение в таблице

Оптимизированный FP(2) – 2 байта Когда кардинальность составляет ,536, данные сохраняются уже в двух байтах Аналогично, создается таблица соответствий со всеми уникальными значениями

Оптимизированный FP(3) – 3 байта IQ 15 Появился в Sybase IQ 15 Используется для данных с кардинальностью > 65,536 Структура такая же, как у FP(1) и FP(2), за исключением: –Максимальный размер таблицы соответствий - 16,777,216 –Данные сохраняются в трех байтах Так как размер колонки должен быть больше 3 байт, индекс FP(3) не может быть создан на –Bit, tinyint, smallint, char(

Плоский FP (Flat) Данные колонки сжимаются, но не оптимизируются В случае плоского FP индекса, данные хранятся в том же виде, в котором они загружены Continued …

Опция колонки IQ UNIQUE() IQ UNIQUE - это опция колонки в команде Create Table Create Table customer ( id char(10) NOT NULL IQ UNIQUE(3000) …) Ее значение задает оценочную кардинальность колонки –< сервер попытается сохранить FP индекс в 1 байте –Между 256 и попытается сохранить FP-индекс в 2 байтах –Между и 16 млн. - попытается сохранить FP-индекс в 3 байтах –> 16 млн (или опция IQ UNIQUE не задана) – данные будут сохранены в виде Плоского FP индекса Значение, указанное в IQ UNIQUE служит только одной цели – определить тип создаваемого FP индекса, поэтому оно не обязательно должно быть точным

Опция БД - Minimize_Storage Когда эта опция включена (= 'ON), команда Create Table будет автоматически выставлять значение IQ Unique(255) для всех колонок –Эта опция снимает необходимость добавления опции IQ UNIQUE для всех колонок в скриптах создания таблиц Использование этой опции позволяет вам быть уверенными, что вы получите максимальное сжатие данных и наилучшую производительность запросов Примечание: Существует ситуация, когда эта опция может вызвать проблемы производительности при загрузке данных. Это происходит когда производится первичная загрузка очень широкой таблицы (1000 колонок и более) и при этом приходится выполнять переформатирование из 2х- или 3х- байтового в плоский FP. Для таких таблиц эта опция должна быть выключена

FP индексы и Загрузка данных Ситуация: работает процесс массовой загрузки данных в таблицу, на которой созданы оптимизированные FP индексы Что произойдет, если в процессе загрузки выяснится, что значение, заданное в IQ Unique() неверно? –однобайтный FP преобразуется в двухбайтный FP индекс без потерь производительности –Двухбайтный FP преобразуется в трехбайтный FP индекс, если достаточно свободного кэша памяти –Трехбайтный FP будет полностью переформирован - в плоский FP индекс Трансформация FP(2) или FP(3) индекса – в плоский FP –Потери в производительности будут, но это разовая «неприятность» –Будут перестроены страницы данных для этой колонки –Это произойдет на лету и только один раз – Эта процедура не повлияет на последующие загрузки

Формат хранение FP индекса Эффективное хранение FP индекса является критичным для скорости запросов и степени сжатия данных –Эти индексы используются оптимизатором Sybase IQ –Это может существенно уменьшить дисковое пространство, занимаемое колонкой –Существенно снизится дисковый ввод/вывод во время исполнения запросов Перед началом создания таблиц DBA и команда разработчиков должны четко осознавать важность и степень влияния оптимизированных (1,2,3 байтных) FP индексов на систему –Даже несколько неправильно настроенных колонок могут существенно ухудшить производительность

Быстрые индексы (LF и HG) Эти индексы хранят информацию о кардинальности колонки и распределении данных –Используются оптимизатором запросов IQ для формирования планов запросов LF и HG индексы являются критичными для производительности запросов –LF индекс рекомендуется для колонок с низкой кардинальностью –HG индекс рекомендуется для колонок с высокой кардинальностью, а также для колонок-ключей и колонок, участвующих в операции join Оба типа индексов представляют собой структуры B-Tree –LF и HG – это единственные индексы, которые могут быть уникальными

Индекс Low Fast (LF) B-Tree + Bitmap для данных с низкой кардинальностью Для обработки запросов используется набор битовых карт, построенных для каждого уникального значения (для регулярного LF) Лучше всего подходит для колонок с небольшим количеством уникальных значений (

Использование индекса LF LF индекс является критичным для следующих типов операций: –Аргументы Поиска (SARG) в предложении WHERE: равенство (=), неравенство (!=), операторы IN и NOT IN –Аргументы агрегативных функций MIN(), MAX(), COUNT(), COUNT DISTINCT –Group By, Order By LF индекс также рекомендуется для запросов по диапазону –>, =, Between, Not Between)

Подробнее об индексе LF Каждое конкретное значение колонки сохраняется в цепочке страниц –Нули не хранятся, хранятся только 1 (true) биты Повторяющиеся значения сжимаются –LF это дешевый индекс для данных с низкой кардинальностью Максимальная рекомендуемая кардинальность –Структуры B-Tree начинают «раздуваться» при повышении кардинальности –Если при загрузке данных будет зафиксировано более уникальных значений, загрузка ОСТАНОВИТСЯ и произойдет откат назад

Индекс High Group (HG) B-Tree + Групповой массив (G-Array) Расширенный B-tree индекс. Для операций Join, операций сравнения (=, !=) и Group By

Подробнее об индексе HG В листьях этого B-tree хранится уникальное значение колонки и указатель на цепочку страниц, содержащую номера строк (ROW ID) для этого значения –Уникальный HG индекс хранит ROW ID прямо в своих страницах- листьях. Поэтому цепочек страниц в этом случае просто нет. HG индекс – это единственный индекс, который может быть составным (задаваться для нескольких колонок сразу) –Оптимизатор IQ НЕ использует составные HG индексы для поиска по отдельной колонке в индексе HG индекс требует памяти Temp Memory и места в Temp Store –для быстрой загрузки HG индекса необходимо иметь Temp-кэш достаточного размера

HG индекс в запросах HG индекс рекомендуется для следующих операций: ВСЕ колонки, являющиеся КЛЮЧАМИ, или по которым происходит JOIN таблиц (независимо от кардинальности) Аргументы Поиска (SARG) в предложении WHERE =, !=, IN, >, =,

Индекс High Non Group (HNG) Bit-Wise Индекс. Оптимизирован для операций Поиска по диапазону и агрегатных функций Пример: SELECT SUM(sales) FROM customer (2 * 64) + (3 * 32) + (2 * 16) + (1 * 8) + (3 * 4) + (2 * 2) + (3 * 1) = 283

HNG Индекс Разработан для запросов, где операции поиска по диапазону или функции агрегации используются для колонок с высокой кардинальностью Исключение: »колонки типа Date/Datetime »колонки с оптимизированным FP индексом Не может быть объявлен как уникальный (Unique) Не может быть составным (для нескольких колонок) Идеален для колонок, используемых в операциях: –Поиска по диапазону –BETWEEN –Функциях Min(), Max(), Sum(), Avg()

Подробнее об индексе HNG Индекс HNG хорошо сжимается и быстро строится Важность этого индекса несколько уменьшилась после появления в IQ других новых типов индексов –Индексы DATE/DATETIME работают быстрее на запросах по диапазону для данных типа DATE и DATETIME –Оптимизированный FP индекс может работать быстрее на запросах по диапазону, потому что он может использовать многопоточность в процессе поиска Рекомендация – Использовать HNG индекс только для колонок с очень высокой кардинальностью (> уникальных значений)

Индекс Compare (CMP) Этот индекс IQ используется для сравнения данных двух колонок одной и той же таблицы Набор битовых масок, хранящих бинарный результат сравнения (>,

Индекс CMP Для этого индекса не поддерживаются типы данных: –Bit, Float, Real, и Double Используется для выполнения следующих операций в операторе Where, = Примеры данных колонок: –Цена продажи, Цена прайслиста –ID сотрудника, ID менеджера –Date / Datetime

Подробнее об индексе CMP CMP – это индекс, который быстро строится и не требует много места для хранения Пользователи IQ сравнительно редко используют этот индекс –Это обусловлено ограничениями индекса (обе колонки должны быть в одной таблице и одного и того же типа данных) Также, при создании CMP индекса обе колонки становятся обязательными для вставки значения –Эквивалентно созданию колонки со свойством NOT NULL

Индекс Word (WD) Индекс WD предоставляет самый быстрый способ работы с данными, представляющими собой «список слов» –Применение ограничено типами данных Char() и Varchar() Слова разделяются пробелами, знаками препинания, специальными символами –По умолчанию разделителем считается любой символ, не принадлежащий к алфавитно-цифровому ряду за исключением: Дефис (-) и одинарная кавычка (') Используется для операций поиска, где в операторе WHERE содержится –Ключевое слово CONTAINS, или –Оператор LIKE (необходимы разделители, например: like % поисковое_слово %)

Индекс WD Пример WD индекса применительно к колонке «Адрес»: Пример запроса: Select count(*) from customer where address contains (Main)

Подробнее об индексе WD Индекс WD в чем-то похож на индекс HG –Требует дополнительных ресурсов при загрузке –Требует много места для хранения Важно понимать, в каких случаях следует использовать индекс WD –Поиск должен осуществляться по целому слову –Предикаты, в которых используется только часть слова и шаблон поиска (like %олок% – «молоко»), не используют WD индекс

Индексы DATE, TIME и DTTM Три типа индексов для обработки запросов, включающих в себя работу с данными типа Date, Time, Datetime Индекс DATE предназначен только для колонок типа DATE и используется для обработки запросов, включающих в себя работу с датой Индекс TIME предназначен только для колонок типа TIME и используется для обработки запросов, включающих в себя работу со временем Индекс DTTM предназначен только для колонок типа DATETIME или TIMESTAMP используется для обработки запросов, включающих в себя работу с датой-временем

Индексы DATE, TIME и DTTM Индекс ДеньМесяцГодЧасМинутаСек. День недели Квартал года Неделя года DTTM DATE TIME

Индексы DATE, TIME и DTTM Используйте DATE, TIME, или DTTM в следующих случаях: –Запросы по диапазону (>, =,

Подробнее о DATE, TIME и DTTM Как и в случае с HNG индексом, запросы по диапазону для соответствующих типов данных могут быть быстрее, с использованием оптимизированного FP индекса –Поиск с использованием оптимизированного FP индекса может быть многопоточным Возможно, нет смысла стоит строить эти индексы, если на колонке есть оптимизированный FP индекс и он используется Оптимизатором –Протестируйте время исполнения запроса с этими индексами и без них –Перестройка этих индексов происходит быстро

Общий алгоритм для выбора индексов 8 шагов 2. Определите колонки, которые будут использоваться в операциях JOIN 3. Определите колонки с небольшим количеством уникальных значений (1500), которые используются: в выражении SELECT в функциях как предикаты в операторе WHERE в GROUP BY FASTPROJECTION LOWFAST HIGHGROUP 1. По умолчанию, после создания таблицы (CREATE TABLE) все колонки получают FP индекс

Общий алгоритм для выбора индексов 8 шагов (продолжение) 5. Определите колонки с типом данных Дата или Время и использующиеся в Сравнениях BETWEEN или RANGE 6.Определите колонки, использующиеся в: Сравнениях BETWEEN или RANGE функциях AVG и SUM 7. Определите колонки, из одной и той же таблицы, которые могут участвовать в операциях сравнения: >,

Допустимые комбинации индексов Комбинации, которые имеют смысл, помечены *

Модуль 7 Загрузка данных

Источники данных Sybase IQ может осуществлять Вставку (insert) или Загрузку (load) данных в таблицы из следующих источников: Плоские файлы –Фиксированной ширины –Переменной ширины Именованные каналы (Named pipes) Таблицы внешних СУБД (Sybase ASE, Microsoft, Oracle, IBM DB2) Таблицы самой Sybase IQ Прямой ввод данных (insert A, insert B, …) Продукты ETL – Sybase ETL (Solonde), а также популярные инструменты третьих фирм: Informatica, Datastage, и др. Репликация Sybase Replication Server – Real-Time Loading

Загрузка таблиц LOAD TABLE –Загружает данные из файлов или из именованных каналов INSERT FROM SELECT –Загружает данные из таблицы в таблицу в той же базе IQ INSERT … LOCATION –Загружает данные из таблиц другого сервера в таблицы IQ CIS и INSERT FROM SELECT –Загружает данные из таблиц другого сервера в таблицы IQ INSERT VALUES –ручная вставка данных в колонки IQ Утилита iq_bcp (только в версии IQ 12.7) –Загружает данные из файлов

LOAD TABLE Позволяет осуществлять массовую загрузку данных в отдельную таблицу, из плоских файлов или именованных каналов, содержащих текстовые(ASCII) или бинарные данные –Это самый быстрый метод загрузки данных в таблицу Позволяет добавлять данные к существующим строкам таблицы –По умолчанию, сначала заполняет пустые строки таблицы, затем добавляет новые строки –Не изменяет содержимого существующих строк Включает опции, позволяющие обрабатывать ошибки загрузки данных и переносить не прошедшие загрузку строки в специальный файл ОС Пользователь, загружающий данные, должен обладать правами на выполнение команды LOAD TABLE для данной таблицы

Загрузка и блокировка данных Sybase IQ накладывает эксклюзивную DML блокировку таблицы на запись для команд LOAD TABLE, INSERT, UPDATE и DELETE Влияние DML блокировки –В то время, когда кто-то загружает, вставляет или модифицирует данные таблицы, другие пользователи могут продолжать выполнять запросы к той же таблице –Операции по загрузке/изменению данных могут выполнятся несколькими пользователями одновременно Но они должны модифицировать разные таблицы –Если пользователи попытаются одновременно изменять данные одной и той же таблицы, «победит» тот, кто успел первым поставить DML блокировку Другие пользователи получат сообщение об ошибке

Синтаксис команды LOAD TABLE LOAD [ INTO ] TABLE [ owner ].table-name... ( load-specification [,...] )... [ FROM | USING [CLIENT] FILE ] { 'filename-string' | filename-variable } [,...]... [ CHECK CONSTRAINTS { ON | OFF } IGNORE CONSTRAINT constrainttype[,...] ]... QUOTES OFF... ESCAPES OFF... [ FORMAT { 'ascii' | 'binary | bcp } ]... [ DELIMITED BY 'string' ]... [ STRIP { ON | OFF } ]... [ WITH CHECKPOINT { ON | OFF } ]... [ { BLOCK FACTOR number | BLOCK SIZE number } ]... [ BYTE ORDER { NATIVE | HIGH | LOW } ]... [ LIMIT number-of-rows ]... [ NOTIFY number-of-rows ]... [ ON FILE ERROR { ROLLBACK | FINISH | CONTINUE} ]... [ PREVIEW { ON | OFF } ]... [ ROW DELIMITED BY 'delimiter-string' ]... [ SKIP number-of-rows ]... [ START ROW ID number ]... [ UNLOAD FORMAT ]... [ IGNORE CONSTRAINT constrainttype [,...] ]... [ MESSAGE LOG string ROW LOG string [ ONLY LOG logwhat [,...] ]... [ LOG DELIMITED BY string ]

Команда LOAD TABLE Содержит три части: Спецификации колонок и формата их загрузки –Описывает каждую загружаемую колонку и формат соответствующих данных во входном файле Оператор FROM –Описывает входной файл (файлы), который должны быть загружен –В IQ 15 FROM больше не используется Опции загрузки –Дальнейшее описание набора входных данных –Контроль поведения операции загрузки

Спецификации колонок Определяет колонки таблицы, которые должны быть загружены Описывает раскладку входного файла с помощью спецификаторов колонок –Задает длину (для полей фиксированной длины) или указывает разделитель (для полей переменной длины) Либо можно указать глобальный разделитель в блоке опций загрузки –Задает формат для входных данных типа Date, Time или Datetime –Задает, какие строковые значения входных данных должны быть интерпретированы как NULL –Указывает, какие части входного файла должны быть проигнорированы (используя FILLER) Для корректного составления спецификации загрузки, нужно внимательно просчитать каждый загружаемый байт файла данных

Пример: Загрузка из текстового файла Данные переменной длины, Разделитель – вертикальная черта (кроме последнего поля) LOAD TABLE customer (customer_id '|', cust_type '|', organization '|', contact_name '|', contact_phone '|', address '|', city '|', state_province '|', postalcode '|', country '\x0a' ) FROM '/work/data/customer1.dat' ESCAPES OFF QUOTES OFF;

Оператор FROM Определяет входной файл(ы) /именованный канал(ы), который должен быть загружен –Путь задается относительно машины, на которой находится сервер Sybase IQ FROM 'filename-string' [,…] filename-string передается серверу как строка –Имя файла может быть именованным каналом(Named Pipe) –Для корректного задания пути к директории на Windows, обратная косая черта (\) должна быть представлена в виде двух косых черт (\\) Пример загрузки FROM C:\\iqdata\\input.dat' 12.7

Оператор USING FILE Определяет входной файл(ы), который должен быть загружен –Путь задается относительно машины, на которой находится сервер Sybase IQ USING [CLIENT] FILE 'filename-string' [,…] filename-string передается серверу как строка –Исходный файл может находиться на клиентской машине –Исходный файл может находиться на серверной машине Sybase IQ –Для корректного задания пути к директории на Windows, обратная косая черта (\) должна быть представлена в виде двух косых черт (\\) Пример загрузки локального файла, расположенного на том же сервере, где работает и сам сервер Sybase IQ: – USING FILE C:\\iqdata\\input.dat' IQ 15

Загрузка из нескольких входных файлов Позволяет загрузить большой объем входных данных в один этап

Загрузка из нескольких файлов Когда есть множество файлов, которые нужно загрузить в таблицу, - лучше выполнить эту загрузку в одной транзакции –Эта техника гораздо быстрее, чем загрузка и подтверждение транзакции для каждого отдельного файла В команде LOAD TABLE нужно задать все входные файлы в операторе from –Используйте опцию ON FILE ERROR для контроля поведения загрузки, в случае, если система не может получить доступ к входному файлу

Обработка проблем загрузки данных в команде LOAD TABLE Выполнение команды LOAD TABLE остановится (выполнится откат) in в каждой из следующих ситуаций: –Повторение первичного или повторение уникального ключа –Внешний ключ не найден в таблице, на которую он ссылается –Ошибки преобразования данных В команде LOAD TABLE есть дополнительный синтаксис для : –Возможности отбросить входные строки, нарушающие какие-то ограничения (Primary Key и т.п.) или не проходящие по формату, и продолжить загрузку –Задания предельного количества нарушений ограничений (constraints) перед тем, как начать откат операции загрузки –Журналирования всех возникших ошибок –Создания «файла отказов», куда будут помещены все отброшенные записи

Рекомендации по загрузке Использовать команду LOAD TABLE для загрузки из файлов –Стараться выполнять загрузку всех файлов в одной транзакции Располагать файлы для загрузки на отдельном диске (отдельном от дисков базы данных) Создавать все индексы IQ до загрузки данных Настраивать память под загрузку –Использовать опцию LOAD_MEMORY_MB для ограничения размера кучи (heap size) –Правильно настроить IQ Temp Cache для HG индексов Выполнять загрузку в часы наименьшей нагрузки на сервер –Для загрузки больших объемов данных рассмотреть возможность использования IQ Multiplex и выделенного узла «Писателя»

Вставка данных Команда INSERT from SELECT –Позволяет выполнить массовую вставку в таблицу результатов, полученных от выполнения оператора SELECT из таблицы в той же базе данных Команда INSERT from SELECT (другой сервер / база данных) - CIS –Позволяет осуществить выборку строк для вставки из другой базы данных. Команда INSERT …. LOCATION –Выполняет вставку непосредственно из удаленной базы данных Команда INSERT VALUES –Вставка одной строки с заданными значениями

Удаление данных Выражение DELETE –Удаляет данные в соответствии с заданными критериями DROP TABLE –Полностью удаляет таблицу, вместе с ее данными и индексами TRUNCATE TABLE –Удаляет все строки из таблицы

Изменение данных Команда UPDATE –Используется для модификации данных таблицы –Это может быть основная или временная таблица

Реляционные базы - источники База данных IQ Плоские файлы Sybase IQ Разделяемые файлы UNIX NFS Mount Windows Network Drive ETL Сервер DB API FTP ODBC Плоские файлы Client-side Load Server-side Load Архитектура загрузки ETL инструментом

Businesses demand fast, flexible access to mission- critical information. Sybase IQ 15.2 now delivers: Flexibility via Sybase ETL data transformation and load capability, Speed via Sybase Replication Servers Real-Time Loading capability. Sybase IQ Replication Server 15.5 = Real-time loading Replication Server – Real Time Loading Edition 15.5 now supports both batch and continuous data movement from ASE to Sybase IQ Sybase ETL 4.9 with CDC capability using Replication Server as CDC agent provides real- time data loading Sybase ETL 4.9 provides upsert (micro-batching) capability for data from other sources Sybase IQ ASE DB2 Oracle Replication Server Sybase ETL Fast Loading Data Transformation Needed for: Real-time data access for customer service, troubleshooting, order fulfillment, other just-in-time reporting

REAL-TIME LOADING PERFORMANCE Use design partner data and transactions at primary DB –Replicate data to DBon with RTL on –Replicate data to DBoff with RTL off Show performance difference between DBon and DBoff DS (ASE) DB RS DBon DSon (IQ) PUBSUBon DBoff DSoff (IQ) SUBoff

REAL-TIME LOADING PERFORMANCE TEST DATA –Two tables (56 columns and 13 columns) –685MB log size generated by captured design partner transactions –6,937 Transactions with 1,192,642 CMDs (172 CMD/Tran) Largest transaction has 289,532 commands 91% inserts, 8% deletes, and 1% updates

Replication Server для загрузки в IQ Когда репликация является подходящим механизмом? –Когда объем данных невелик –Когда изменения происходят в течение дня –Когда режим реального времени не является обязательным условием –Когда у вас есть RS 15.5 ! загрузка в реальном масштабе времени

Использование iq_bcp Клиентская утилита для загрузки данных в IQ –Доступна только в версии IQ 12.7 Альтернатива серверному механизму массовой загрузки (LOAD TABLE) В настоящее время имеет ряд ограничений –Не задействуют механизм массовой загрузки IQ –Осуществляет вставку данных в виде пакета insert предложений –Быстрее чем вставка одной строки, но даже близко не сравнима по скорости с операциями LOAD TABLE и INSERT FROM LOCATION 12.7

Модуль 8 Работа с Sybase IQ

dbisql и dbisqlc Обе утилиты поставляются с серверным и клиентским программным обеспечением IQ –ODBC драйвер для Sybase IQ включен в дистрибутив IQ DBISQL (Interactive SQL Java) – более предпочтительный клиент –Лучше использовать его (кроме случаев, когда документация явно рекомендует что-то другое) –Обладает более удобным пользовательским интерфейсом и более широким функционалом Возможность поиска сервера Сохраняет историю введенных SQL запросов Поддержка кнопок мыши под Unix Возможность выполнять операции копирования и вставки

Sybase Central Предоставляет графический интерфейс для администрирования сервера IQ –Большинство операций по администрированию IQ может быть выполнено при помощи SQL команд –Одним из исключений является создание кластера IQ Multiplex. Для этого используйте Sybase Central. Позволяет подключать «плагины» других серверных продуктов Sybase

Возможности Sybase Central Создание баз данных Старт и остановка сервера Управление пользователями/группами и их правами Добавление/удаление dbspace Администрирование кластера Multiplex Далее следует краткий обзор некоторых его функций

Sybase Central – Подключение к IQ Из строки меню, пункт Tools Ручное соединение, используя Connect Создание «Профиля» для соединения (Connection profile) – для более быстрого доступа к базе IQ Регистрация плагинов других серверных продуктов, используя пункт меню Plug-ins Соединение с сервером, используя ODBC или JDBC Использует такой же диалог для подключения, что и в клиенте dbisql

Навигация по Sybase Central Соединиться – Отсоединиться – Профайлы – Обновить - Свойства Имя сервера «Бочка» базы данных Тулбар Папки разных объектов базы данных Плагин IQ Нажмите правой кнопкой мыши на этой панели для отображения возможных действий

Свойства таблицы Нажмите правой кнопкой мыши на таблице, чтобы открыть ее свойства Закладка Columns отображает информацию, касающуюся колонок Тип FP индекса, плотность Закладка Placement отображает размер индексов и местоположение dbspace

Свойства колонок таблицы

Язык SQL в Sybase IQ Соответствует стандартам ANSI SQL 92/99 Поддерживает функции и команды, не входящие в стандарт ANSI –Это так называемые расширения поставщика для ANSI SQL Совместимость с другими серверными продуктами Sybase –В хранимых процедурах используется тот же T-SQL и Watcom SQL что и в ASA Существует ряд различий между ASE T-SQL и ASA T-SQL –Существует ряд различий в поведении при использовании соединения через Open Client и других соединений (ODBC, JDBC и т.п.) Соединение Open Client не соответствует стандарту ANSI

Экспорт данных из Sybase IQ Экспорт данных производится командой SELECT, используя опции TEMP_EXTRACT Экспортирует данные в файл на той машине, где работает Sybase IQ Server Может выводить данные в несколько файлов параллельно (максимум 8) Это самый быстрый метод экспорта данных Перенаправление, используя команду SELECT и значок ># Экспортирует данные в файл на клиентской машине Внешняя утилита: iq_bcp { in | out } только для IQ 12.7 В $ASDIR/bin – там где располагаются бинарные файлы сервера IQ

174 – Sybase Confidential – February 13, 2009 ВОПРОСЫ и ОТВЕТЫ

Quick Start

176 – Sybase Confidential – February 13, 2009 ВВЕДЕНИЕ в SYBASE IQ Обзорный тренинг Москва, 4 июня, 2010 Андрей Хромов, технический консультант, Sybase CIS