Exadata Storage Server, part 1
Как я писал, на Open World было объявлено о Database Machine и Exadata Storage Server. Данная заметка, первая из серии, об Exadata.
Отмазка:
Сразу оговорюсь - моя цель написать максимально доступно, а значит, не всегда абсолютно технически верно. Также я сделал массу предположений, которые могут оказаться неправильными.
Благодаря служебному положению, у меня есть доступ к Exadata Storage Software, я потихоньку разбираюсь, как оно все работает.
Идея:
В хранилищах данных при обработке запросов между дисковым массивом и сервером СУБД передается слишком много данных. Даже если мы делаем выборку по определенному региону, нам нужно передать информацию блоками данных (8K или даже 16K) в которых нам полезными могут оказаться 100 или 200 байт. Все эти блоки данных нужно передать через SAN маршрутизаторы, SAN адаптеры, выделить под них память с ОС, отфильтровать не нужные нам записи и колонки. Что если уже на выходе дискового массива к нам придут только нужные записи и колонки ? Было бы неплохо. Но для этого дисковый массив должен знать структуру блока и немного понимать SQL.
Идея была проверена на реальных заказчиках и некоторые результаты вы видите на картинке слева. Конечно же, результаты для вашего приложения буду другими.
Реализация:
Аппаратная реализация - мы собираем наш дисковый массив (storage server) из ячеек (cell), в каждой ячейке HP ProLiant DL180 G5, 12 дисков, 2 - 4-x ядерных процессора. Используя SAS диски, получаем 1.5 Tb, SATA - 3,3 Tb. В каждой ячейке 2 InfiniBand порта.
Программная реализация - Oracle Unbkreakable Linux + Oracle Exadata Storage Software. Последнее - это не ASM и не Database. Это некоторое новое ПО. Ниже я попытаюсь пояснить, что оно делает.
Раз Exadata - это дисковый массив, значит его нужно подключить к нашему серверу БД.
На сервере БД у нас есть ASM. Значит ASM должен увидеть нашу Exadata как внешний storage. Чтобы ASM увидел, мы создаем пару конфигурационных файлов в /etc/oracle/network/cell директории. А раз возникает новая функциональность, то поддерживается она только начиная с версии 11.1.0.7.
По пржнему, ASM выполняет всю свою работу - поддержание striping, mirroring, rebalancing и пр. БД выполняет свою - разбор SQL выражений, и определение, нельзя ли попросить storage выполнить ту или иную часть SQL запроса. Чтобы стало совершенно понятно, где что стоит, привожу картинку.
Обратите внимание на специальный уровень libcell & процесс diskmon.
Так что же умеет Oracle Exadata Storage Software ?
По крайне мере 3 вещи:
Что же мы видим со стороны сервера БД ?
Вот такой план выполнения со словами TABLE ACCESS STORAGE FULL.
TTDEMO@orcl > select count(*) from cell_accounts;
COUNT(*)
----------
1000000
TTDEMO@orcl > select plan_table_output from table(dbms_xplan.display_cursor(null,null,'BASIC ROWS +NOTE +COST +PEEKED_BINDS'));
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
EXPLAINED SQL STATEMENT:
------------------------
select count(*) from cell_accounts
Plan hash value: 3481329747
-------------------------------------------------------------------------
| Id | Operation | Name | Rows | Cost (%CPU)|
-------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | | 1504 (100)|
| 1 | SORT AGGREGATE | | 1 | |
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
| 2 | TABLE ACCESS STORAGE FULL| CELL_ACCOUNTS | 808K| 1504 (1)|
-------------------------------------------------------------------------
FAQ:
Q. Поддерживает ли Exadata Advanced Compression ?
A. Поскольку компрессия работает на уровне блока, для того, чтобы посмотреть в блок ничего не надо, достаточно знать как блок устроен. Поэтому, да.
Q. Поддерживает ли Exadata Advanced Security ?
A. Для того, чтобы расшифровать блок, нужно знать ключ. Пока нет описанного метода передачи ключей между серверов БД и Exadata. Поэтому, скорее, нет.
Q. Нужно ли модифицировать приложение, чтобы оно использовало Exadata Storage ?
A. Нет. Любое существующее приложение будет работать с Exadata как с обычным массивом. Для приложения существуют лишь таблицы, расположенные в табличных пространтсвах на группах ASM. Но приложение может получить прирост производительности, если выполняет тяжелые запросы к БД.
Благодарности: Андрею Пивоварову (Andrey.Pivovarov, oraclebi.ru) за мозговой штурм в части как-оно-там-работает-на-самом-деле.
Ссылки:
exadata-technical-whitepaper.pdf (объект «application/pdf»)
Kevin Closson blog
Осталась масса вопросов - какие приложения получат выигрыш, какие нет, как мигрировать, как смотреть планы и так далее.
Продолжение следует...
Комментариев нет:
Отправить комментарий