SlideShare a Scribd company logo
1 of 31
GREENPLUM DB
Особенности и применение
в Тинькофф банке
Дмитрий немчин
Администратор DWH
Содержание
• Особенности
• Архитектура
• Хранение данных
• Загрузка данных в БД
• Доступ к данным
• Установка
• Мониторинг
• Проблемы и наши решения
2
Особенности
• СУБД для суровой аналитики больших объемов данных
– Легкая интеграция с BI и аналитическим ПО
– Быстрая работа с большими объемами данных
• PostgreSQL-based (8.2.15 + back-ported features of 9.0+)
– Легкость администрирования и поддержки
– Работа почти с любыми клиентами (JDBC, ODBC)
– Удобные механизмы загрузки и выгрузки данных
– Хорошие механизмы шардирования данных
• Отличная масштабируемость
– Архитектура MPP shared-nothing
– Производительность растет почти линейно
Архитектура. Термины
 Master instance (он же просто «мастер») – инстанс постгреса, содержащий каталог БД и управляющий
запросами к сегментам
 Master host («сервер-мастер») – Сервер, на котором работает Master instance
 Secondary master instance - инстанс Postgres, являющийся резервным мастером, включается в работу в
случае недоступности основного мастера (переключение происходит вручную);
 Primary segment instance («сегмент») - инстанс Postgres, являющийся одним из сегментов. Именно
сегменты непосредственно хранят данные, выполняют с ними операции и отдают результаты мастеру
(в общем случае). Сегмент – самый обычный инстанс PostgreSQL 8.2.15 с настроенной WAL-
репликацией в своё зеркало на другом сервере:
 /app/greenplum/greenplum-db-4.3.5.2/bin/postgres -D /data1/primary/gpseg76 -p 50004 -b 126 -z 96 --silent-mode=true -i -M quiescent -C 76
 Mirror segment instance («зеркало») - инстанс Postgres, являющийся зеркалом одного из primary
сегментов, автоматически принимает на себя роль primary в случае падения оного:
 /app/greenplum/greenplum-db-4.3.5.2/bin/postgres -D /data1/mirror/gpseg76 -p 51004 -b 186 -z 96 --silent-mode=true -i -M quiescent -C 76
 Segment host («сервер-сегмент») – сервер, на котором работает один или несколько сегментов и/или
зеркал.
4
NOTE: GP поддерживает только 1-to-1 репликацию: для каждого primary может быть только
одно зеркало.
Архитектура. Cвязи в кластере
Хранение данных
• Filespace – набор папок, дисков и т.д. на всех серверах
кластера
gpfilespace -o gpfilespace_config
a name for this filespace> fastdisk
primary location 1> /gpfs1/seg1
primary location 2> /gpfs1/seg2
mirror location 1> /gpfs2/mir1
mirror location 2> /gpfs2/mir2
master location> /gpfs1/master
• Tablespace – привязывается к filespace
CREATE TABLESPACE fastspace FILESPACE fastdisk;
• Между filespace можно перемещать как табличные
пространства, так и временные и транзакционные
файлы
gpfilespace --movetempfilespace filespace_name
gpfilespace --movetransfilespace filespace_name
Хранение данных
• Классическая схема шардирования данных
– Каждая таблица -> N+1 таблиц на всех сегментах кластера
– где N – число сегментов. На каждом сегменте хранится 1/N строк
таблицы
– +1 - это таблица на мастере, данных в ней нет. Только мета
• Distribution key - ключ (поле или набор полей) распределения
– Greenplum работает со скоростью самого медленного сегмента,
это означает, что перекос в количестве данных между сегментами
ведёт к деградации производительности кластера и к другим
проблемам
• Распределение данных поможет оценить служебное поле
gp_segment_id, существующее в каждой таблице –номер
сегмента, на котором хранится конкретная строка
NOTE: GP не поддерживает UPDATE полей, по которым распределена таблица
Хранение данных
• Heap tables
– Как в PostgreSQL
– Row storage. Только строковое хранение
– Можно не бояться update
– Хорошо для небольших таблиц
• Append-optimized (append-only) tables
– Column
– Compression. АО-таблицы можно сжимать
zlib/quicklz
– Batch-only. Плохо работают в row-by-row
8
Основные вопросы архитектору
• Data Distribution
 Выбор ключа распределения
• Data Skew
• Чем равномернее разложены данные по сегментам, тем лучше
• Partition or not to Partition
• Секционирование позволяет использовать разные виды хранения в одной таблице
• Разные секции одной таблицы можно разложить по разным дискам
• Data Types
 Лучше использовать максимально компактные типы данных
• Constraints
 Table
 Column
9
Ключ распределения
10
Primary key Distribution key
Логическое ограничение Физическое хранение данных
Не обязателен Обязателен для GP
(если не задан – используется первый столбец)
db_dev=# create table tttttt (id serial, tt text);
NOTICE: CREATE TABLE will create implicit sequence
"tttttt_id_seq" for serial column "tttttt.id"
NOTICE: Table doesn't have 'DISTRIBUTED BY' clause -- Using
column named 'id' as the Greenplum Database data distribution
key for this table.
Нет ограничения на количество полей Есть ограничения
Определяется в модели данных Задается при создании таблицы
Уникальные значения Любые значения
Однозначно определяет строку Может и не определять строку однозначно
Значение нельзя изменить Значение нельзя изменить
Не может быть NULL Может быть NULL
Не зависит от СУБД Актуален только для GP
Задается для корректности данных Подбирается для быстродействия и оптимального
хранения
Распределение данных
Count | gp_segment_id
1 | 4
1 | 6
1 | 15
1 | 21
1 | 23
1 | 25
1 | 31
1 | 40
1 | 42
1 | 48
1 | 50
1 | 52
1 | 65
1 | 67
1 | 73
1 | 75
1 | 77
1 | 90
1 | 92
1 | 94
--Создаем таблицу
create table distrib_test_table as
select generate_series(1,20)
as num_field
distributed by (num_field);
--Проверим распределение данных
select count(1),gp_segment_id
from distrib_test_table
group by gp_segment_id
order by gp_segment_id;
Распределение данных
truncate table distrib_test_table;
insert into distrib_test_table
values (1), (1), (1),
(1), (1), (1),
(1), (1), (1),
(1), (1), (1),
(1), (1), (1),
(1), (1), (1),
(1), (1);
INSERT 0 20
select count(1),gp_segment_id
from distrib_test_table
group by gp_segment_id
order by gp_segment_id;
count | gp_segment_id
-------+---------------
20 | 42
Выбирайте ключ распределения с уникальными
значениями или высокой кардинальностью
Gender = M or F
Segment
Instance CPUDisk I/ONetwork
0
1
2
3
4
5
Если выбрать дату, то данные
могут быть распределены
равномерно, но при
определенных запросах это
вызовет перекос по нагрузке
Segment
Instance CPUDisk I/ONetwork
0
1
2
3
4
5
Выбирайте ключ распределения, который
обеспечит распараллеливание запроса
JanFebMarAprMayJun
Распределение данных
Таблицы и распределение данных
• создавать отдельные столбцы только для распределения
данных
• Распределять таблицы по полям, которые не используются в
джойнах
• Распределять таблицу по Boolean полям
• Распределять таблицу по float полям
• Использовать DISTRIBUTED RANDOMLY потому, что так проще
Неправильно
• Распределять все таблицы по всем сегментам БД
• Определить общую политику распределения данных
• Уникальные ключи обеспечивают равномерное
распределение данных
• Если ключ не задан – используется первое поле или PK
• Random distribution – данные распределяются равномерно,
но быстродействие не идеально
Правильно
Резервирование и надежность. Мастер
В кластере GP используется полное резервирование мастера с помощью
механизма репликации транзакционных логов, контролируемого
специальным агентом (gpsyncagent). При этом автоматическое
переключение роли мастера на резервный инстанс не поддерживается.
Для переключения на резервный мастер необходимо:
• Убедиться, что основной мастер остановлен (процесс убит и в рабочей
директории инстанса мастера отсутвует файл postmaster.pid)
• На сервере резервного мастера выполнить команду
gpactivatestandby -d /master_instance_directory
• Переключить виртуальный ip-адрес на сервер нового мастера.
При принятии определённых рисков переключение можно
автоматизировать
Резервирование и надежность. Сегменты
Вариант 1: все зеркала сегментов, располагающихся на хосте N, находятся на хосте N+1
Резервирование и надежность. Сегменты
17
Вариант 2: зеркала сегментов сервера N распределены между N+1, N+2, N+3 …
Внешние таблицы
18
/usr/local/greenplum-loaders-
4.3.0.0-build-2/bin/gpfdist -d
/mnt/ -p 8087 –l
/tmp/gpfdist8087.log
/usr/local/greenplum-loaders-
4.3.0.0-build-2/bin/gpfdist -
d /path2 -p 8108 -l
/tmp/gpfdist8108.log
CREATE EXTERNAL WEB TABLE dev_src.src_abm_rate(
organisations ,
department ,
department_id ,
managment ,
managment_id)
LOCATION ('http://tcsbank.ru:8086/data/log*.csv')
FORMAT 'csv' (delimiter ';' null 'NULL' escape '"'
quote '"')
ENCODING 'WIN1251';
Внешние таблицы в Hadoop
19
gpconfig -c gp_hadoop_target_version -v "'gphd-2.0'"
gpconfig -c gp_hadoop_home -v "'/usr/lib/gphd'
gpstop -u
GRANT SELECT ON PROTOCOL gphdfs TO gpadmin;
GRANT INSERT ON PROTOCOL gphdfs TO gpadmin;
CREATE EXTERNAL TABLE dev_src.Hadoop_table( id ,
text )
LOCATION
('gphdfs://hdfs_host[:port]/path/filename.txt')
CREATE WRITABLE EXTERNAL TABLE
ext_expenses LOCATION ('gphdfs://hdfshost-
1:8081/data/ ?compress=true&compression_typ
e=RECORD &codec=org.apache.hadoop.io.compre
ss.DefaultCodec') FORMAT 'custom'
(formatter='gphdfs_export');
Работа с базой
• pgAdmin III
• Aginity WB for
Greenplum
• DataGrip
• psql
Обслуживание
• Вакуум таблиц каталога
• Вакуум всех таблиц
• Сбор статистики
• Проверка свободного места (!)
• Управление Spill-files
• Управление WORK-схемами SAS
• Периодический Re-partitioning таблиц
• Синхронизация с AD (LDAP)
Параметры
• Joins
– enable_nestloop (off)
– enable_hashjoin (on)
– enable_mergejoin (off)
• Aggregation:
– enable_hashagg (on)
– enable_groupagg (on)
– gp_enable_multiphaseagg
(on)
• Sequential Scans / Index Scans
– enable_seqscan (on)
– enable_indexscan (on)
– enable_bitmapscan (on)
• Memory
– gp_resqueue_memory_policy
( eager_free)
– statement_mem ( 128Mb)
– max_statement_mem
(2000Mb)
– work_mem
– gp_vmem_protect_limit
22
Установка. Подготовка
• Форматирование XFS
• Монтирование XFS
• Настройка ядра Linux
• Установка pssh
• chmod 777 /user/local
• Поставить из-под gpadmin ГП в /usr/local/greenplum-db-4.3.x.x
• Создать файл с перечислением всех интерфейсов всех серверов
(hostfile_exkeys)
• Создать карту сегментов (если требуется кастомное распределение
primary/mirrors
• gpssh-exkeys -f hostfile_exkeys
• gpseginstall -f hostfile_exkeys
• source /usr/local/greenplum-db/greenplum_path.sh
• alias run_allsegments='gpssh -f /u0/projects/tf_gp/hostfiles/greenplum_allsegments.txt‘
23
Карта сегментов
#### Shell utility used to connect to remote hosts.
TRUSTED_SHELL=ssh
ENCODING=WIN1251
#### Specify the location of the host address file here instead of
#### with the the -h option of gpinitsystem.
#MACHINE_LIST_FILE=/home/gpadmin/gpconfigs/hostfile_gpinitsystem
QD_PRIMARY_ARRAY=mdw:5432:/data1/master/gpseg-1:1:-1:0
declare -a PRIMARY_ARRAY=(
sdw1-1:40000:/data1/primary/gpseg0:2:0:41000
sdw1-2:40001:/data1/primary/gpseg1:3:1:41001
...
sdwN-1:40002:/data2/primary/gpseg94:96:94:41002
sdwN-2:40003:/data2/primary/gpseg95:97:95:41003
)
declare -a MIRROR_ARRAY=(
sdw1-2:50000:/data1/mirror/gpseg8:98:8:51000
sdw1-1:50001:/data1/mirror/gpseg13:99:13:51001
...
sdwN-2:50002:/data2/mirror/gpseg86:192:86:51002
sdwN-1:50003:/data2/mirror/gpseg91:193:91:51003
)
24
Создаем БД
CREATE DATABASE db_prod
WITH OWNER = gpadmin
ENCODING = 'WIN1251'
CONNECTION LIMIT = -1;
GRANT CONNECT, TEMPORARY ON DATABASE db_prod TO public;
GRANT ALL ON DATABASE db_prod TO gpadmin;
set allow_system_table_mods=dml;
update pg_proc set proname =
'gp_update_ao_master_stats_rnm' where proname =
'gp_update_ao_master_stats' and prosrc =
'gp_update_ao_master_stats_name';
25
Greenplum Command Center
26
Мониторинг. Graphite+Grafana
27
Нагрузка на железо
• CPU
• HDD I/O
• Ethernet performance
Мониторинг. Graphite+Grafana
28
Репликация CDC
• Актуальность
метаданных
• Отставание от
источника
• Работа Oracle GG
Мониторинг. Cabot
29
Мониторинг. Cabot
30
HAWQ. Greenplum на Hadoop
31

More Related Content

What's hot

Современные серверы DEPO Storm и системы хранения DEPO Storage
Современные серверы DEPO Storm и системы хранения DEPO StorageСовременные серверы DEPO Storm и системы хранения DEPO Storage
Современные серверы DEPO Storm и системы хранения DEPO StorageDEPO Computers
 
Лекция 12. Spark
Лекция 12. SparkЛекция 12. Spark
Лекция 12. SparkTechnopark
 
Migrate To Emc Symmetrix Vmax Rus
Migrate To Emc Symmetrix Vmax RusMigrate To Emc Symmetrix Vmax Rus
Migrate To Emc Symmetrix Vmax RusOleg Korol
 
Лекция №3 Организация ЭВМ и систем
Лекция №3 Организация ЭВМ и системЛекция №3 Организация ЭВМ и систем
Лекция №3 Организация ЭВМ и системpianist2317
 
Системы хранения данных
Системы хранения данныхСистемы хранения данных
Системы хранения данныхyaevents
 
Кластер БГУИР: расширенные возможности
Кластер БГУИР: расширенные возможностиКластер БГУИР: расширенные возможности
Кластер БГУИР: расширенные возможностиAlexey Demidchuk
 
Firebird 2.5 - вектор дальнейшего развития, Dmitry Yemanov, (in Russian)
Firebird 2.5 - вектор дальнейшего развития, Dmitry Yemanov, (in Russian)Firebird 2.5 - вектор дальнейшего развития, Dmitry Yemanov, (in Russian)
Firebird 2.5 - вектор дальнейшего развития, Dmitry Yemanov, (in Russian)Alexey Kovyazin
 
Серверы Fujitsu. Максимальная эффективность инвестиций
Серверы Fujitsu. Максимальная эффективность инвестицийСерверы Fujitsu. Максимальная эффективность инвестиций
Серверы Fujitsu. Максимальная эффективность инвестицийFujitsu Russia
 
Новые возможности языка SQL в Firebird 3.0
Новые возможности языка SQL в Firebird 3.0Новые возможности языка SQL в Firebird 3.0
Новые возможности языка SQL в Firebird 3.0Alexey Kovyazin
 
Лекция 11: Программирование графических процессоров на NVIDIA CUDA
Лекция 11: Программирование графических процессоров на NVIDIA CUDAЛекция 11: Программирование графических процессоров на NVIDIA CUDA
Лекция 11: Программирование графических процессоров на NVIDIA CUDAMikhail Kurnosov
 
Константин Осипов (Mail.Ru)
Константин Осипов (Mail.Ru)Константин Осипов (Mail.Ru)
Константин Осипов (Mail.Ru)Ontico
 
Сервисы Fujitsu – заглянем внутрь!
Сервисы Fujitsu – заглянем внутрь!Сервисы Fujitsu – заглянем внутрь!
Сервисы Fujitsu – заглянем внутрь!Fujitsu Russia
 
Argo Technologie SA системы хранения данных
Argo Technologie SA системы хранения данныхArgo Technologie SA системы хранения данных
Argo Technologie SA системы хранения данныхKonstantin Vanin
 
Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...a15464321646213
 
Symantec Backup Exec 2014 vs. Acronis Backup And Recovery 11.5
Symantec Backup Exec 2014 vs. Acronis Backup And Recovery 11.5Symantec Backup Exec 2014 vs. Acronis Backup And Recovery 11.5
Symantec Backup Exec 2014 vs. Acronis Backup And Recovery 11.5hdablin
 
Обзор архитектуры [файловой] системы Ceph
Обзор архитектуры [файловой] системы CephОбзор архитектуры [файловой] системы Ceph
Обзор архитектуры [файловой] системы CephOSLL
 
Андрей Чередарчук "HP-UX - платформа для сервера баз данных"
Андрей Чередарчук "HP-UX - платформа для сервера баз данных"Андрей Чередарчук "HP-UX - платформа для сервера баз данных"
Андрей Чередарчук "HP-UX - платформа для сервера баз данных"Dmitry Savchenko
 
Лекция 9. Программирование GPU
Лекция 9. Программирование GPUЛекция 9. Программирование GPU
Лекция 9. Программирование GPUMikhail Kurnosov
 

What's hot (20)

Efficiency vvv
Efficiency vvvEfficiency vvv
Efficiency vvv
 
Современные серверы DEPO Storm и системы хранения DEPO Storage
Современные серверы DEPO Storm и системы хранения DEPO StorageСовременные серверы DEPO Storm и системы хранения DEPO Storage
Современные серверы DEPO Storm и системы хранения DEPO Storage
 
Лекция 12. Spark
Лекция 12. SparkЛекция 12. Spark
Лекция 12. Spark
 
Migrate To Emc Symmetrix Vmax Rus
Migrate To Emc Symmetrix Vmax RusMigrate To Emc Symmetrix Vmax Rus
Migrate To Emc Symmetrix Vmax Rus
 
Лекция № 3 Организация ЭВМ и систем
Лекция № 3 Организация ЭВМ и системЛекция № 3 Организация ЭВМ и систем
Лекция № 3 Организация ЭВМ и систем
 
Лекция №3 Организация ЭВМ и систем
Лекция №3 Организация ЭВМ и системЛекция №3 Организация ЭВМ и систем
Лекция №3 Организация ЭВМ и систем
 
Системы хранения данных
Системы хранения данныхСистемы хранения данных
Системы хранения данных
 
Кластер БГУИР: расширенные возможности
Кластер БГУИР: расширенные возможностиКластер БГУИР: расширенные возможности
Кластер БГУИР: расширенные возможности
 
Firebird 2.5 - вектор дальнейшего развития, Dmitry Yemanov, (in Russian)
Firebird 2.5 - вектор дальнейшего развития, Dmitry Yemanov, (in Russian)Firebird 2.5 - вектор дальнейшего развития, Dmitry Yemanov, (in Russian)
Firebird 2.5 - вектор дальнейшего развития, Dmitry Yemanov, (in Russian)
 
Серверы Fujitsu. Максимальная эффективность инвестиций
Серверы Fujitsu. Максимальная эффективность инвестицийСерверы Fujitsu. Максимальная эффективность инвестиций
Серверы Fujitsu. Максимальная эффективность инвестиций
 
Новые возможности языка SQL в Firebird 3.0
Новые возможности языка SQL в Firebird 3.0Новые возможности языка SQL в Firebird 3.0
Новые возможности языка SQL в Firebird 3.0
 
Лекция 11: Программирование графических процессоров на NVIDIA CUDA
Лекция 11: Программирование графических процессоров на NVIDIA CUDAЛекция 11: Программирование графических процессоров на NVIDIA CUDA
Лекция 11: Программирование графических процессоров на NVIDIA CUDA
 
Константин Осипов (Mail.Ru)
Константин Осипов (Mail.Ru)Константин Осипов (Mail.Ru)
Константин Осипов (Mail.Ru)
 
Сервисы Fujitsu – заглянем внутрь!
Сервисы Fujitsu – заглянем внутрь!Сервисы Fujitsu – заглянем внутрь!
Сервисы Fujitsu – заглянем внутрь!
 
Argo Technologie SA системы хранения данных
Argo Technologie SA системы хранения данныхArgo Technologie SA системы хранения данных
Argo Technologie SA системы хранения данных
 
Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...
 
Symantec Backup Exec 2014 vs. Acronis Backup And Recovery 11.5
Symantec Backup Exec 2014 vs. Acronis Backup And Recovery 11.5Symantec Backup Exec 2014 vs. Acronis Backup And Recovery 11.5
Symantec Backup Exec 2014 vs. Acronis Backup And Recovery 11.5
 
Обзор архитектуры [файловой] системы Ceph
Обзор архитектуры [файловой] системы CephОбзор архитектуры [файловой] системы Ceph
Обзор архитектуры [файловой] системы Ceph
 
Андрей Чередарчук "HP-UX - платформа для сервера баз данных"
Андрей Чередарчук "HP-UX - платформа для сервера баз данных"Андрей Чередарчук "HP-UX - платформа для сервера баз данных"
Андрей Чередарчук "HP-UX - платформа для сервера баз данных"
 
Лекция 9. Программирование GPU
Лекция 9. Программирование GPUЛекция 9. Программирование GPU
Лекция 9. Программирование GPU
 

Viewers also liked

Cross media
Cross mediaCross media
Cross mediatns_ru
 
Greenplum Database Open Source December 2015
Greenplum Database Open Source December 2015Greenplum Database Open Source December 2015
Greenplum Database Open Source December 2015PivotalOpenSourceHub
 
Introduction to Greenplum
Introduction to GreenplumIntroduction to Greenplum
Introduction to GreenplumDave Cramer
 
Greenplum: O banco de dados open source massivamente paralelo baseado em Post...
Greenplum: O banco de dados open source massivamente paralelo baseado em Post...Greenplum: O banco de dados open source massivamente paralelo baseado em Post...
Greenplum: O banco de dados open source massivamente paralelo baseado em Post...PGDay Campinas
 
Cloud-native Data: Every Microservice Needs a Cache
Cloud-native Data: Every Microservice Needs a CacheCloud-native Data: Every Microservice Needs a Cache
Cloud-native Data: Every Microservice Needs a Cachecornelia davis
 
White Paper: Monitoring EMC Greenplum DCA with Nagios - EMC Greenplum Data Co...
White Paper: Monitoring EMC Greenplum DCA with Nagios - EMC Greenplum Data Co...White Paper: Monitoring EMC Greenplum DCA with Nagios - EMC Greenplum Data Co...
White Paper: Monitoring EMC Greenplum DCA with Nagios - EMC Greenplum Data Co...EMC
 

Viewers also liked (8)

Cross media
Cross mediaCross media
Cross media
 
Greenplum Database Open Source December 2015
Greenplum Database Open Source December 2015Greenplum Database Open Source December 2015
Greenplum Database Open Source December 2015
 
5. pivotal hd 2013
5. pivotal hd 20135. pivotal hd 2013
5. pivotal hd 2013
 
Introduction to Greenplum
Introduction to GreenplumIntroduction to Greenplum
Introduction to Greenplum
 
Greenplum: O banco de dados open source massivamente paralelo baseado em Post...
Greenplum: O banco de dados open source massivamente paralelo baseado em Post...Greenplum: O banco de dados open source massivamente paralelo baseado em Post...
Greenplum: O banco de dados open source massivamente paralelo baseado em Post...
 
Greenplum Architecture
Greenplum ArchitectureGreenplum Architecture
Greenplum Architecture
 
Cloud-native Data: Every Microservice Needs a Cache
Cloud-native Data: Every Microservice Needs a CacheCloud-native Data: Every Microservice Needs a Cache
Cloud-native Data: Every Microservice Needs a Cache
 
White Paper: Monitoring EMC Greenplum DCA with Nagios - EMC Greenplum Data Co...
White Paper: Monitoring EMC Greenplum DCA with Nagios - EMC Greenplum Data Co...White Paper: Monitoring EMC Greenplum DCA with Nagios - EMC Greenplum Data Co...
White Paper: Monitoring EMC Greenplum DCA with Nagios - EMC Greenplum Data Co...
 

Similar to #PostgreSQLRussia в банке Тинькофф, доклад №1

Что такое Postgresql (Максим Богук)
Что такое Postgresql (Максим Богук)Что такое Postgresql (Максим Богук)
Что такое Postgresql (Максим Богук)Ontico
 
Максим Богук. Postgres-XC
Максим Богук. Postgres-XCМаксим Богук. Postgres-XC
Максим Богук. Postgres-XCPostgreSQL-Consulting
 
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)Ontico
 
hl++ Rubtsov
hl++ Rubtsovhl++ Rubtsov
hl++ RubtsovOntico
 
"Деплой кода процедур" Мурат Кабилов (Avito)
"Деплой кода процедур" Мурат Кабилов (Avito)"Деплой кода процедур" Мурат Кабилов (Avito)
"Деплой кода процедур" Мурат Кабилов (Avito)AvitoTech
 
Масштабирование баз данных. (Database Scalability)
Масштабирование баз данных. (Database Scalability)Масштабирование баз данных. (Database Scalability)
Масштабирование баз данных. (Database Scalability)Andrew Avdeev
 
My sql 5.6-new-stable-mmug
My sql 5.6-new-stable-mmugMy sql 5.6-new-stable-mmug
My sql 5.6-new-stable-mmugAndrey Tokarchuk
 
05 db server_deployment_ru
05 db server_deployment_ru05 db server_deployment_ru
05 db server_deployment_rumcroitor
 
Организация хранения данных
Организация хранения данныхОрганизация хранения данных
Организация хранения данныхOleg Lipin
 
MySQL: Есть ли жизнь после 1 млрд. записей.
MySQL: Есть ли жизнь после 1 млрд. записей.MySQL: Есть ли жизнь после 1 млрд. записей.
MySQL: Есть ли жизнь после 1 млрд. записей.MageCloud
 
Call of Postgres: Advanced Operations (part 2)
Call of Postgres: Advanced Operations (part 2)Call of Postgres: Advanced Operations (part 2)
Call of Postgres: Advanced Operations (part 2)Alexey Lesovsky
 
SDN & DEVOPS ?= ❤: Практики использования SDN / Александр Шалимов (ЦПИКС, МГУ)
SDN & DEVOPS ?= ❤: Практики использования SDN / Александр Шалимов (ЦПИКС, МГУ)SDN & DEVOPS ?= ❤: Практики использования SDN / Александр Шалимов (ЦПИКС, МГУ)
SDN & DEVOPS ?= ❤: Практики использования SDN / Александр Шалимов (ЦПИКС, МГУ)Ontico
 
XML Native Database на примере SednaXML
XML Native Database на примере SednaXMLXML Native Database на примере SednaXML
XML Native Database на примере SednaXMLSlach
 
От Make к Ansible
От Make к AnsibleОт Make к Ansible
От Make к AnsibleIvan Grishaev
 
Новое поколение серверов Dell
Новое поколение серверов DellНовое поколение серверов Dell
Новое поколение серверов DellMUK
 
Вебинар по отказоустойчивости, 13.04.2017
Вебинар по отказоустойчивости, 13.04.2017Вебинар по отказоустойчивости, 13.04.2017
Вебинар по отказоустойчивости, 13.04.2017S-Terra CSP
 
СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"Technopark
 
Использование Sedna в WEB
Использование Sedna в WEBИспользование Sedna в WEB
Использование Sedna в WEBAlexandre Kalendarev
 

Similar to #PostgreSQLRussia в банке Тинькофф, доклад №1 (20)

Что такое Postgresql (Максим Богук)
Что такое Postgresql (Максим Богук)Что такое Postgresql (Максим Богук)
Что такое Postgresql (Максим Богук)
 
Максим Богук. Postgres-XC
Максим Богук. Postgres-XCМаксим Богук. Postgres-XC
Максим Богук. Postgres-XC
 
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
 
PostgreSQL on sas/ssd/nvme/nvdimm
PostgreSQL on sas/ssd/nvme/nvdimmPostgreSQL on sas/ssd/nvme/nvdimm
PostgreSQL on sas/ssd/nvme/nvdimm
 
hl++ Rubtsov
hl++ Rubtsovhl++ Rubtsov
hl++ Rubtsov
 
"Деплой кода процедур" Мурат Кабилов (Avito)
"Деплой кода процедур" Мурат Кабилов (Avito)"Деплой кода процедур" Мурат Кабилов (Avito)
"Деплой кода процедур" Мурат Кабилов (Avito)
 
Масштабирование баз данных. (Database Scalability)
Масштабирование баз данных. (Database Scalability)Масштабирование баз данных. (Database Scalability)
Масштабирование баз данных. (Database Scalability)
 
pgconf.ru 2015 avito postgresql
pgconf.ru 2015 avito postgresqlpgconf.ru 2015 avito postgresql
pgconf.ru 2015 avito postgresql
 
My sql 5.6-new-stable-mmug
My sql 5.6-new-stable-mmugMy sql 5.6-new-stable-mmug
My sql 5.6-new-stable-mmug
 
05 db server_deployment_ru
05 db server_deployment_ru05 db server_deployment_ru
05 db server_deployment_ru
 
Организация хранения данных
Организация хранения данныхОрганизация хранения данных
Организация хранения данных
 
MySQL: Есть ли жизнь после 1 млрд. записей.
MySQL: Есть ли жизнь после 1 млрд. записей.MySQL: Есть ли жизнь после 1 млрд. записей.
MySQL: Есть ли жизнь после 1 млрд. записей.
 
Call of Postgres: Advanced Operations (part 2)
Call of Postgres: Advanced Operations (part 2)Call of Postgres: Advanced Operations (part 2)
Call of Postgres: Advanced Operations (part 2)
 
SDN & DEVOPS ?= ❤: Практики использования SDN / Александр Шалимов (ЦПИКС, МГУ)
SDN & DEVOPS ?= ❤: Практики использования SDN / Александр Шалимов (ЦПИКС, МГУ)SDN & DEVOPS ?= ❤: Практики использования SDN / Александр Шалимов (ЦПИКС, МГУ)
SDN & DEVOPS ?= ❤: Практики использования SDN / Александр Шалимов (ЦПИКС, МГУ)
 
XML Native Database на примере SednaXML
XML Native Database на примере SednaXMLXML Native Database на примере SednaXML
XML Native Database на примере SednaXML
 
От Make к Ansible
От Make к AnsibleОт Make к Ansible
От Make к Ansible
 
Новое поколение серверов Dell
Новое поколение серверов DellНовое поколение серверов Dell
Новое поколение серверов Dell
 
Вебинар по отказоустойчивости, 13.04.2017
Вебинар по отказоустойчивости, 13.04.2017Вебинар по отказоустойчивости, 13.04.2017
Вебинар по отказоустойчивости, 13.04.2017
 
СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"
 
Использование Sedna в WEB
Использование Sedna в WEBИспользование Sedna в WEB
Использование Sedna в WEB
 

More from Nikolay Samokhvalov

Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
 Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва... Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...Nikolay Samokhvalov
 
Промышленный подход к тюнингу PostgreSQL: эксперименты над базами данных
Промышленный подход к тюнингу PostgreSQL: эксперименты над базами данныхПромышленный подход к тюнингу PostgreSQL: эксперименты над базами данных
Промышленный подход к тюнингу PostgreSQL: эксперименты над базами данныхNikolay Samokhvalov
 
The Art of Database Experiments – PostgresConf Silicon Valley 2018 / San Jose
The Art of Database Experiments – PostgresConf Silicon Valley 2018 / San JoseThe Art of Database Experiments – PostgresConf Silicon Valley 2018 / San Jose
The Art of Database Experiments – PostgresConf Silicon Valley 2018 / San JoseNikolay Samokhvalov
 
Nancy CLI. Automated Database Experiments
Nancy CLI. Automated Database ExperimentsNancy CLI. Automated Database Experiments
Nancy CLI. Automated Database ExperimentsNikolay Samokhvalov
 
#RuPostgresLive 4: как писать и читать сложные SQL-запросы
#RuPostgresLive 4: как писать и читать сложные SQL-запросы#RuPostgresLive 4: как писать и читать сложные SQL-запросы
#RuPostgresLive 4: как писать и читать сложные SQL-запросыNikolay Samokhvalov
 
Database First! О распространённых ошибках использования РСУБД
Database First! О распространённых ошибках использования РСУБДDatabase First! О распространённых ошибках использования РСУБД
Database First! О распространённых ошибках использования РСУБДNikolay Samokhvalov
 
#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6
#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6
#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6Nikolay Samokhvalov
 
#noBackend, или Как выжить в эпоху толстеющих клиентов
#noBackend, или Как выжить в эпоху толстеющих клиентов#noBackend, или Как выжить в эпоху толстеющих клиентов
#noBackend, или Как выжить в эпоху толстеющих клиентовNikolay Samokhvalov
 
SFPUG 2015.11.20 lightning talk "PostgreSQL in Russia"
SFPUG 2015.11.20 lightning talk "PostgreSQL in Russia"SFPUG 2015.11.20 lightning talk "PostgreSQL in Russia"
SFPUG 2015.11.20 lightning talk "PostgreSQL in Russia"Nikolay Samokhvalov
 
Владимир Бородин: Как спать спокойно - 2015.10.14 PostgreSQLRussia.org meetu...
Владимир Бородин: Как спать спокойно - 2015.10.14 PostgreSQLRussia.org meetu...Владимир Бородин: Как спать спокойно - 2015.10.14 PostgreSQLRussia.org meetu...
Владимир Бородин: Как спать спокойно - 2015.10.14 PostgreSQLRussia.org meetu...Nikolay Samokhvalov
 
#PostgreSQLRussia 2015.09.15 - Николай Самохвалов - 5 главных особенностей Po...
#PostgreSQLRussia 2015.09.15 - Николай Самохвалов - 5 главных особенностей Po...#PostgreSQLRussia 2015.09.15 - Николай Самохвалов - 5 главных особенностей Po...
#PostgreSQLRussia 2015.09.15 - Николай Самохвалов - 5 главных особенностей Po...Nikolay Samokhvalov
 
#PostgreSQLRussia 2015.09.15 - Максим Трегубов, CUSTIS - Миграция из Oracle в...
#PostgreSQLRussia 2015.09.15 - Максим Трегубов, CUSTIS - Миграция из Oracle в...#PostgreSQLRussia 2015.09.15 - Максим Трегубов, CUSTIS - Миграция из Oracle в...
#PostgreSQLRussia 2015.09.15 - Максим Трегубов, CUSTIS - Миграция из Oracle в...Nikolay Samokhvalov
 
Три вызова реляционным СУБД и новый PostgreSQL - #PostgreSQLRussia семинар по...
Три вызова реляционным СУБД и новый PostgreSQL - #PostgreSQLRussia семинар по...Три вызова реляционным СУБД и новый PostgreSQL - #PostgreSQLRussia семинар по...
Три вызова реляционным СУБД и новый PostgreSQL - #PostgreSQLRussia семинар по...Nikolay Samokhvalov
 
2014.12.23 Николай Самохвалов, Ещё раз о JSON(b) в PostgreSQL 9.4
2014.12.23 Николай Самохвалов, Ещё раз о JSON(b) в PostgreSQL 9.42014.12.23 Николай Самохвалов, Ещё раз о JSON(b) в PostgreSQL 9.4
2014.12.23 Николай Самохвалов, Ещё раз о JSON(b) в PostgreSQL 9.4Nikolay Samokhvalov
 
2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, ParallelsNikolay Samokhvalov
 
2014.10.15 Сергей Бурладян, Avito.ru
2014.10.15 Сергей Бурладян, Avito.ru2014.10.15 Сергей Бурладян, Avito.ru
2014.10.15 Сергей Бурладян, Avito.ruNikolay Samokhvalov
 
2014.10.15 Мурат Кабилов, Avito.ru #PostgreSQLRussia
2014.10.15 Мурат Кабилов, Avito.ru #PostgreSQLRussia2014.10.15 Мурат Кабилов, Avito.ru #PostgreSQLRussia
2014.10.15 Мурат Кабилов, Avito.ru #PostgreSQLRussiaNikolay Samokhvalov
 
2014.10.15 блиц-доклад PostgreSQL kNN search
2014.10.15 блиц-доклад PostgreSQL kNN search2014.10.15 блиц-доклад PostgreSQL kNN search
2014.10.15 блиц-доклад PostgreSQL kNN searchNikolay Samokhvalov
 
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)2014.09.24 история небольшого успеха с PostgreSQL (Yandex)
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)Nikolay Samokhvalov
 

More from Nikolay Samokhvalov (20)

Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
 Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва... Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
 
Промышленный подход к тюнингу PostgreSQL: эксперименты над базами данных
Промышленный подход к тюнингу PostgreSQL: эксперименты над базами данныхПромышленный подход к тюнингу PostgreSQL: эксперименты над базами данных
Промышленный подход к тюнингу PostgreSQL: эксперименты над базами данных
 
The Art of Database Experiments – PostgresConf Silicon Valley 2018 / San Jose
The Art of Database Experiments – PostgresConf Silicon Valley 2018 / San JoseThe Art of Database Experiments – PostgresConf Silicon Valley 2018 / San Jose
The Art of Database Experiments – PostgresConf Silicon Valley 2018 / San Jose
 
Nancy CLI. Automated Database Experiments
Nancy CLI. Automated Database ExperimentsNancy CLI. Automated Database Experiments
Nancy CLI. Automated Database Experiments
 
#RuPostgresLive 4: как писать и читать сложные SQL-запросы
#RuPostgresLive 4: как писать и читать сложные SQL-запросы#RuPostgresLive 4: как писать и читать сложные SQL-запросы
#RuPostgresLive 4: как писать и читать сложные SQL-запросы
 
Database First! О распространённых ошибках использования РСУБД
Database First! О распространённых ошибках использования РСУБДDatabase First! О распространённых ошибках использования РСУБД
Database First! О распространённых ошибках использования РСУБД
 
2016.10.13 PostgreSQL in Russia
2016.10.13 PostgreSQL in Russia2016.10.13 PostgreSQL in Russia
2016.10.13 PostgreSQL in Russia
 
#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6
#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6
#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6
 
#noBackend, или Как выжить в эпоху толстеющих клиентов
#noBackend, или Как выжить в эпоху толстеющих клиентов#noBackend, или Как выжить в эпоху толстеющих клиентов
#noBackend, или Как выжить в эпоху толстеющих клиентов
 
SFPUG 2015.11.20 lightning talk "PostgreSQL in Russia"
SFPUG 2015.11.20 lightning talk "PostgreSQL in Russia"SFPUG 2015.11.20 lightning talk "PostgreSQL in Russia"
SFPUG 2015.11.20 lightning talk "PostgreSQL in Russia"
 
Владимир Бородин: Как спать спокойно - 2015.10.14 PostgreSQLRussia.org meetu...
Владимир Бородин: Как спать спокойно - 2015.10.14 PostgreSQLRussia.org meetu...Владимир Бородин: Как спать спокойно - 2015.10.14 PostgreSQLRussia.org meetu...
Владимир Бородин: Как спать спокойно - 2015.10.14 PostgreSQLRussia.org meetu...
 
#PostgreSQLRussia 2015.09.15 - Николай Самохвалов - 5 главных особенностей Po...
#PostgreSQLRussia 2015.09.15 - Николай Самохвалов - 5 главных особенностей Po...#PostgreSQLRussia 2015.09.15 - Николай Самохвалов - 5 главных особенностей Po...
#PostgreSQLRussia 2015.09.15 - Николай Самохвалов - 5 главных особенностей Po...
 
#PostgreSQLRussia 2015.09.15 - Максим Трегубов, CUSTIS - Миграция из Oracle в...
#PostgreSQLRussia 2015.09.15 - Максим Трегубов, CUSTIS - Миграция из Oracle в...#PostgreSQLRussia 2015.09.15 - Максим Трегубов, CUSTIS - Миграция из Oracle в...
#PostgreSQLRussia 2015.09.15 - Максим Трегубов, CUSTIS - Миграция из Oracle в...
 
Три вызова реляционным СУБД и новый PostgreSQL - #PostgreSQLRussia семинар по...
Три вызова реляционным СУБД и новый PostgreSQL - #PostgreSQLRussia семинар по...Три вызова реляционным СУБД и новый PostgreSQL - #PostgreSQLRussia семинар по...
Три вызова реляционным СУБД и новый PostgreSQL - #PostgreSQLRussia семинар по...
 
2014.12.23 Николай Самохвалов, Ещё раз о JSON(b) в PostgreSQL 9.4
2014.12.23 Николай Самохвалов, Ещё раз о JSON(b) в PostgreSQL 9.42014.12.23 Николай Самохвалов, Ещё раз о JSON(b) в PostgreSQL 9.4
2014.12.23 Николай Самохвалов, Ещё раз о JSON(b) в PostgreSQL 9.4
 
2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels
 
2014.10.15 Сергей Бурладян, Avito.ru
2014.10.15 Сергей Бурладян, Avito.ru2014.10.15 Сергей Бурладян, Avito.ru
2014.10.15 Сергей Бурладян, Avito.ru
 
2014.10.15 Мурат Кабилов, Avito.ru #PostgreSQLRussia
2014.10.15 Мурат Кабилов, Avito.ru #PostgreSQLRussia2014.10.15 Мурат Кабилов, Avito.ru #PostgreSQLRussia
2014.10.15 Мурат Кабилов, Avito.ru #PostgreSQLRussia
 
2014.10.15 блиц-доклад PostgreSQL kNN search
2014.10.15 блиц-доклад PostgreSQL kNN search2014.10.15 блиц-доклад PostgreSQL kNN search
2014.10.15 блиц-доклад PostgreSQL kNN search
 
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)2014.09.24 история небольшого успеха с PostgreSQL (Yandex)
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)
 

#PostgreSQLRussia в банке Тинькофф, доклад №1

  • 1. GREENPLUM DB Особенности и применение в Тинькофф банке Дмитрий немчин Администратор DWH
  • 2. Содержание • Особенности • Архитектура • Хранение данных • Загрузка данных в БД • Доступ к данным • Установка • Мониторинг • Проблемы и наши решения 2
  • 3. Особенности • СУБД для суровой аналитики больших объемов данных – Легкая интеграция с BI и аналитическим ПО – Быстрая работа с большими объемами данных • PostgreSQL-based (8.2.15 + back-ported features of 9.0+) – Легкость администрирования и поддержки – Работа почти с любыми клиентами (JDBC, ODBC) – Удобные механизмы загрузки и выгрузки данных – Хорошие механизмы шардирования данных • Отличная масштабируемость – Архитектура MPP shared-nothing – Производительность растет почти линейно
  • 4. Архитектура. Термины  Master instance (он же просто «мастер») – инстанс постгреса, содержащий каталог БД и управляющий запросами к сегментам  Master host («сервер-мастер») – Сервер, на котором работает Master instance  Secondary master instance - инстанс Postgres, являющийся резервным мастером, включается в работу в случае недоступности основного мастера (переключение происходит вручную);  Primary segment instance («сегмент») - инстанс Postgres, являющийся одним из сегментов. Именно сегменты непосредственно хранят данные, выполняют с ними операции и отдают результаты мастеру (в общем случае). Сегмент – самый обычный инстанс PostgreSQL 8.2.15 с настроенной WAL- репликацией в своё зеркало на другом сервере:  /app/greenplum/greenplum-db-4.3.5.2/bin/postgres -D /data1/primary/gpseg76 -p 50004 -b 126 -z 96 --silent-mode=true -i -M quiescent -C 76  Mirror segment instance («зеркало») - инстанс Postgres, являющийся зеркалом одного из primary сегментов, автоматически принимает на себя роль primary в случае падения оного:  /app/greenplum/greenplum-db-4.3.5.2/bin/postgres -D /data1/mirror/gpseg76 -p 51004 -b 186 -z 96 --silent-mode=true -i -M quiescent -C 76  Segment host («сервер-сегмент») – сервер, на котором работает один или несколько сегментов и/или зеркал. 4 NOTE: GP поддерживает только 1-to-1 репликацию: для каждого primary может быть только одно зеркало.
  • 6. Хранение данных • Filespace – набор папок, дисков и т.д. на всех серверах кластера gpfilespace -o gpfilespace_config a name for this filespace> fastdisk primary location 1> /gpfs1/seg1 primary location 2> /gpfs1/seg2 mirror location 1> /gpfs2/mir1 mirror location 2> /gpfs2/mir2 master location> /gpfs1/master • Tablespace – привязывается к filespace CREATE TABLESPACE fastspace FILESPACE fastdisk; • Между filespace можно перемещать как табличные пространства, так и временные и транзакционные файлы gpfilespace --movetempfilespace filespace_name gpfilespace --movetransfilespace filespace_name
  • 7. Хранение данных • Классическая схема шардирования данных – Каждая таблица -> N+1 таблиц на всех сегментах кластера – где N – число сегментов. На каждом сегменте хранится 1/N строк таблицы – +1 - это таблица на мастере, данных в ней нет. Только мета • Distribution key - ключ (поле или набор полей) распределения – Greenplum работает со скоростью самого медленного сегмента, это означает, что перекос в количестве данных между сегментами ведёт к деградации производительности кластера и к другим проблемам • Распределение данных поможет оценить служебное поле gp_segment_id, существующее в каждой таблице –номер сегмента, на котором хранится конкретная строка NOTE: GP не поддерживает UPDATE полей, по которым распределена таблица
  • 8. Хранение данных • Heap tables – Как в PostgreSQL – Row storage. Только строковое хранение – Можно не бояться update – Хорошо для небольших таблиц • Append-optimized (append-only) tables – Column – Compression. АО-таблицы можно сжимать zlib/quicklz – Batch-only. Плохо работают в row-by-row 8
  • 9. Основные вопросы архитектору • Data Distribution  Выбор ключа распределения • Data Skew • Чем равномернее разложены данные по сегментам, тем лучше • Partition or not to Partition • Секционирование позволяет использовать разные виды хранения в одной таблице • Разные секции одной таблицы можно разложить по разным дискам • Data Types  Лучше использовать максимально компактные типы данных • Constraints  Table  Column 9
  • 10. Ключ распределения 10 Primary key Distribution key Логическое ограничение Физическое хранение данных Не обязателен Обязателен для GP (если не задан – используется первый столбец) db_dev=# create table tttttt (id serial, tt text); NOTICE: CREATE TABLE will create implicit sequence "tttttt_id_seq" for serial column "tttttt.id" NOTICE: Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'id' as the Greenplum Database data distribution key for this table. Нет ограничения на количество полей Есть ограничения Определяется в модели данных Задается при создании таблицы Уникальные значения Любые значения Однозначно определяет строку Может и не определять строку однозначно Значение нельзя изменить Значение нельзя изменить Не может быть NULL Может быть NULL Не зависит от СУБД Актуален только для GP Задается для корректности данных Подбирается для быстродействия и оптимального хранения
  • 11. Распределение данных Count | gp_segment_id 1 | 4 1 | 6 1 | 15 1 | 21 1 | 23 1 | 25 1 | 31 1 | 40 1 | 42 1 | 48 1 | 50 1 | 52 1 | 65 1 | 67 1 | 73 1 | 75 1 | 77 1 | 90 1 | 92 1 | 94 --Создаем таблицу create table distrib_test_table as select generate_series(1,20) as num_field distributed by (num_field); --Проверим распределение данных select count(1),gp_segment_id from distrib_test_table group by gp_segment_id order by gp_segment_id;
  • 12. Распределение данных truncate table distrib_test_table; insert into distrib_test_table values (1), (1), (1), (1), (1), (1), (1), (1), (1), (1), (1), (1), (1), (1), (1), (1), (1), (1), (1), (1); INSERT 0 20 select count(1),gp_segment_id from distrib_test_table group by gp_segment_id order by gp_segment_id; count | gp_segment_id -------+--------------- 20 | 42
  • 13. Выбирайте ключ распределения с уникальными значениями или высокой кардинальностью Gender = M or F Segment Instance CPUDisk I/ONetwork 0 1 2 3 4 5 Если выбрать дату, то данные могут быть распределены равномерно, но при определенных запросах это вызовет перекос по нагрузке Segment Instance CPUDisk I/ONetwork 0 1 2 3 4 5 Выбирайте ключ распределения, который обеспечит распараллеливание запроса JanFebMarAprMayJun Распределение данных
  • 14. Таблицы и распределение данных • создавать отдельные столбцы только для распределения данных • Распределять таблицы по полям, которые не используются в джойнах • Распределять таблицу по Boolean полям • Распределять таблицу по float полям • Использовать DISTRIBUTED RANDOMLY потому, что так проще Неправильно • Распределять все таблицы по всем сегментам БД • Определить общую политику распределения данных • Уникальные ключи обеспечивают равномерное распределение данных • Если ключ не задан – используется первое поле или PK • Random distribution – данные распределяются равномерно, но быстродействие не идеально Правильно
  • 15. Резервирование и надежность. Мастер В кластере GP используется полное резервирование мастера с помощью механизма репликации транзакционных логов, контролируемого специальным агентом (gpsyncagent). При этом автоматическое переключение роли мастера на резервный инстанс не поддерживается. Для переключения на резервный мастер необходимо: • Убедиться, что основной мастер остановлен (процесс убит и в рабочей директории инстанса мастера отсутвует файл postmaster.pid) • На сервере резервного мастера выполнить команду gpactivatestandby -d /master_instance_directory • Переключить виртуальный ip-адрес на сервер нового мастера. При принятии определённых рисков переключение можно автоматизировать
  • 16. Резервирование и надежность. Сегменты Вариант 1: все зеркала сегментов, располагающихся на хосте N, находятся на хосте N+1
  • 17. Резервирование и надежность. Сегменты 17 Вариант 2: зеркала сегментов сервера N распределены между N+1, N+2, N+3 …
  • 18. Внешние таблицы 18 /usr/local/greenplum-loaders- 4.3.0.0-build-2/bin/gpfdist -d /mnt/ -p 8087 –l /tmp/gpfdist8087.log /usr/local/greenplum-loaders- 4.3.0.0-build-2/bin/gpfdist - d /path2 -p 8108 -l /tmp/gpfdist8108.log CREATE EXTERNAL WEB TABLE dev_src.src_abm_rate( organisations , department , department_id , managment , managment_id) LOCATION ('http://tcsbank.ru:8086/data/log*.csv') FORMAT 'csv' (delimiter ';' null 'NULL' escape '"' quote '"') ENCODING 'WIN1251';
  • 19. Внешние таблицы в Hadoop 19 gpconfig -c gp_hadoop_target_version -v "'gphd-2.0'" gpconfig -c gp_hadoop_home -v "'/usr/lib/gphd' gpstop -u GRANT SELECT ON PROTOCOL gphdfs TO gpadmin; GRANT INSERT ON PROTOCOL gphdfs TO gpadmin; CREATE EXTERNAL TABLE dev_src.Hadoop_table( id , text ) LOCATION ('gphdfs://hdfs_host[:port]/path/filename.txt') CREATE WRITABLE EXTERNAL TABLE ext_expenses LOCATION ('gphdfs://hdfshost- 1:8081/data/ ?compress=true&compression_typ e=RECORD &codec=org.apache.hadoop.io.compre ss.DefaultCodec') FORMAT 'custom' (formatter='gphdfs_export');
  • 20. Работа с базой • pgAdmin III • Aginity WB for Greenplum • DataGrip • psql
  • 21. Обслуживание • Вакуум таблиц каталога • Вакуум всех таблиц • Сбор статистики • Проверка свободного места (!) • Управление Spill-files • Управление WORK-схемами SAS • Периодический Re-partitioning таблиц • Синхронизация с AD (LDAP)
  • 22. Параметры • Joins – enable_nestloop (off) – enable_hashjoin (on) – enable_mergejoin (off) • Aggregation: – enable_hashagg (on) – enable_groupagg (on) – gp_enable_multiphaseagg (on) • Sequential Scans / Index Scans – enable_seqscan (on) – enable_indexscan (on) – enable_bitmapscan (on) • Memory – gp_resqueue_memory_policy ( eager_free) – statement_mem ( 128Mb) – max_statement_mem (2000Mb) – work_mem – gp_vmem_protect_limit 22
  • 23. Установка. Подготовка • Форматирование XFS • Монтирование XFS • Настройка ядра Linux • Установка pssh • chmod 777 /user/local • Поставить из-под gpadmin ГП в /usr/local/greenplum-db-4.3.x.x • Создать файл с перечислением всех интерфейсов всех серверов (hostfile_exkeys) • Создать карту сегментов (если требуется кастомное распределение primary/mirrors • gpssh-exkeys -f hostfile_exkeys • gpseginstall -f hostfile_exkeys • source /usr/local/greenplum-db/greenplum_path.sh • alias run_allsegments='gpssh -f /u0/projects/tf_gp/hostfiles/greenplum_allsegments.txt‘ 23
  • 24. Карта сегментов #### Shell utility used to connect to remote hosts. TRUSTED_SHELL=ssh ENCODING=WIN1251 #### Specify the location of the host address file here instead of #### with the the -h option of gpinitsystem. #MACHINE_LIST_FILE=/home/gpadmin/gpconfigs/hostfile_gpinitsystem QD_PRIMARY_ARRAY=mdw:5432:/data1/master/gpseg-1:1:-1:0 declare -a PRIMARY_ARRAY=( sdw1-1:40000:/data1/primary/gpseg0:2:0:41000 sdw1-2:40001:/data1/primary/gpseg1:3:1:41001 ... sdwN-1:40002:/data2/primary/gpseg94:96:94:41002 sdwN-2:40003:/data2/primary/gpseg95:97:95:41003 ) declare -a MIRROR_ARRAY=( sdw1-2:50000:/data1/mirror/gpseg8:98:8:51000 sdw1-1:50001:/data1/mirror/gpseg13:99:13:51001 ... sdwN-2:50002:/data2/mirror/gpseg86:192:86:51002 sdwN-1:50003:/data2/mirror/gpseg91:193:91:51003 ) 24
  • 25. Создаем БД CREATE DATABASE db_prod WITH OWNER = gpadmin ENCODING = 'WIN1251' CONNECTION LIMIT = -1; GRANT CONNECT, TEMPORARY ON DATABASE db_prod TO public; GRANT ALL ON DATABASE db_prod TO gpadmin; set allow_system_table_mods=dml; update pg_proc set proname = 'gp_update_ao_master_stats_rnm' where proname = 'gp_update_ao_master_stats' and prosrc = 'gp_update_ao_master_stats_name'; 25
  • 27. Мониторинг. Graphite+Grafana 27 Нагрузка на железо • CPU • HDD I/O • Ethernet performance
  • 28. Мониторинг. Graphite+Grafana 28 Репликация CDC • Актуальность метаданных • Отставание от источника • Работа Oracle GG
  • 31. HAWQ. Greenplum на Hadoop 31

Editor's Notes

  1. 13