powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Распределение БД по серверам
46 сообщений из 46, показаны все 2 страниц
Распределение БД по серверам
    #35255001
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите, плз... Как делать надо..? Есть IBM DB2 UDB for Win32 v.8.1.9.
Нужно сделать следующее... Есть одна БД. Хочется таблицы разбить на пару серверов. Один оперативный, другой имеет достаточно большой массив данных... Пользователи в основном (80% времени) работают на оперативном сервере... Время от времени они обращаютяс к данным, которые лежат на втором сервере...
Вопросы:
1. Можно ли такое организовать без federated?
2. Как такое организовать без federated?
...
Рейтинг: 0 / 0
Распределение БД по серверам
    #35255047
xz321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Чем не нравится federated?
...
Рейтинг: 0 / 0
Распределение БД по серверам
    #35255247
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Репликацию нужно настроить.
2. Невозможность правки таблиц из двух баз в одной транзакции.
...
Рейтинг: 0 / 0
Распределение БД по серверам
    #35255270
чя321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В 9-ке можно в одной транзакции...
...
Рейтинг: 0 / 0
Распределение БД по серверам
    #35255318
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть IBM DB2 UDB for Win32 v.8.1.9.
...
Рейтинг: 0 / 0
Распределение БД по серверам
    #35257004
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет решения чтоли?
...
Рейтинг: 0 / 0
Распределение БД по серверам
    #35257044
mitek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DPF ?
но оно за дЭнги
...
Рейтинг: 0 / 0
Распределение БД по серверам
    #35257206
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что за DPF?
...
Рейтинг: 0 / 0
Распределение БД по серверам
    #35257211
mitek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Database Partitioning Feature, опция к DB2 ESE
размазывание таблиц по узлам shared-nothing кластера
...
Рейтинг: 0 / 0
Распределение БД по серверам
    #35258613
Evclid79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так разве нельзя сделать партиционную таблицу где указать в какую партицию что класть? А tablespace (партиционный соответственно) настроить какую партицию на какой partition_num положить?
...
Рейтинг: 0 / 0
Распределение БД по серверам
    #35258646
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 ТОРТ
Интересно а у вас VIEW WITH ROW MOVEMENT имеется?
...
Рейтинг: 0 / 0
Распределение БД по серверам
    #35258690
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gardenman, нет... пока такого не пользовали.. А что? Есть мысли на сей счет?
...
Рейтинг: 0 / 0
Распределение БД по серверам
    #35258695
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Evclid79, то есть?
...
Рейтинг: 0 / 0
Распределение БД по серверам
    #35258716
mitek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В многораздельной базе таблспейс привязывается к конкретной database partition group, при создании которой соответственно указывается, какие ноды будут в неё входить.
Строки таблицы, созданной в этом таблспейсе раскидываются по заданным нодам согласно хешу ключа партицирования.
...
Рейтинг: 0 / 0
Распределение БД по серверам
    #35258750
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все же тут партицировать по таблице лучше а не по табличному пространству.
И партиции таблицы легче присоединять и отсоединять. И 9.5 поэтому подойдет лучше.
Но все равно ESE нужно.
С DPF лучше не связываться - очень дорого.
...
Рейтинг: 0 / 0
Распределение БД по серверам
    #35259079
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gardenman, mitek мне на эту отдельную ноду надо вынести одну большую таблицу ~100млн. записей + к ней штук 10-15 summary table. Так что Вы там про ESE говорили? Куда хоть копнуть? С чего начать? Какое меню выбрать?:)
...
Рейтинг: 0 / 0
Распределение БД по серверам
    #35259126
mitek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gardenmanВсе же тут партицировать по таблице лучше а не по табличному пространству.
И партиции таблицы легче присоединять и отсоединять. И 9.5 поэтому подойдет лучше.
Но все равно ESE нужно.

Ну задача была поставлена "Хочется таблицы разбить на пару серверов", а тут имхо только два варианта, либо federation либо DPF
А range partitionig таки да, весьма пользительная штука для больших таблиц, особенно в купе с MDC и deep compression. Ну а если еще и DPF так вообще.... Есть кстати наглядный вайтпапер на эту тему, как типа уменьшить query response time c часов до секунд :))

gardenmanС DPF лучше не связываться - очень дорого.
угу, 5000$ на x86-кору
...
Рейтинг: 0 / 0
Распределение БД по серверам
    #35259166
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Берешь несколько компов. В каждый вставляешь по дополнительной гигабитной карте.
Засовываешь их всех в отдельных хаб.
И далее как в докумнетации:
http://publib.boulder.ibm.com/infocenter/db2luw/v8//index.jsp?topic=/com.ibm.db2.udb.doc/admin/r0001910.htm

http://publib.boulder.ibm.com/infocenter/db2luw/v8//index.jsp?topic=/com.ibm.db2.udb.doc/admin/r0001910.htm

Но повторяюсь, 100 млн это не такая уж и большая БД.
Лучше партицировать таблицу, а не базу данных. Наверное вам будет выгоднее с 8.1 ESE перескочить на 9.5 ESE.
Тогда там:
http://publib.boulder.ibm.com/infocenter/db2luw/v9r5//topic/com.ibm.db2.luw.admin.partition.doc/doc/t0021574.html
и поизучай ALTER TABLE - чтобы части таблицы можно было отсоединять и переприсоединять.
И можно типа такого:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
create table sales2 (
	invoce_date date, 
	inv_month int not null generated always as (month (invoce_date)),
	inv_year int not null generated always as (year(invoce_date)),
	item_id int not null,
	cust_id int not null
) partition by range (
	inv_year,
	inv_month
) (
	part before starting (minvalue,minvalue) in tbsp0,
	part q1_02 starting ( 2002 , 1 ) ending ( 2002 , 3 ) inclusive in tbsp1,
	part q2_02 starting ( 2002 , 3 ) exclusive ending ( 2002 , 6 ) inclusive in tbsp2,
	part q3_02 starting ( 2002 , 7 ) inclusive ending ( 2002 , 9 ) inclusive in in tbsp3,
	part q4_02 ending ( 2002 , 12 ) inclusive in tbsp4,
	part current ending (maxvalue,maxvalue) in tbsp5
)@

Т .е. разные продажи за разные даты будут автоматически класться в разные табличные пространства (партиции таблицы). И кроме того эти партицииможно мгновенно отсоединять и переприсоединять.
вобщем ищи на тему
Код: plaintext
partition by range
...
Рейтинг: 0 / 0
Распределение БД по серверам
    #35259174
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mitek gardenmanВсе же тут партицировать по таблице лучше а не по табличному пространству.
И партиции таблицы легче присоединять и отсоединять. И 9.5 поэтому подойдет лучше.
Но все равно ESE нужно.

Ну задача была поставлена "Хочется таблицы разбить на пару серверов", а тут имхо только два варианта, либо federation либо DPF
А range partitionig таки да, весьма пользительная штука для больших таблиц, особенно в купе с MDC и deep compression. Ну а если еще и DPF так вообще.... Есть кстати наглядный вайтпапер на эту тему, как типа уменьшить query response time c часов до секунд :))

gardenmanС DPF лучше не связываться - очень дорого.
угу, 5000$ на x86-кору
Ну да, согласен
...
Рейтинг: 0 / 0
Распределение БД по серверам
    #35259177
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gardenman, нет слов... Спасибо, буду изучать...
...
Рейтинг: 0 / 0
Распределение БД по серверам
    #35259178
mitek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TORTgardenman, mitek мне на эту отдельную ноду надо вынести одну большую таблицу ~100млн. записей + к ней штук 10-15 summary table. Так что Вы там про ESE говорили? Куда хоть копнуть? С чего начать? Какое меню выбрать?:)

Начать, пожалуй, с описАния проблемы.
Предполагаю, что текущий сервер не справляется с запросами по большой таблице ?
У Вас какой 8.2-эдишн, кстати ?

Если без DPF, то
1. Переход на 9.1 ESE c последующим партицированием и компрессией
2. Если 8.2 ESE, то попробовать MDC....но аккуратно.
3. Если 8.2 WSE, то попробовать разбить одну большую таблицу на несколько мелких (по годам например) и на них updatable UNION ALL view. Эдакий "суррогатный" партишионинг.

Если есть лицензия на DPF, то это уже другой разговор :)

Как то так, имхо.
...
Рейтинг: 0 / 0
Распределение БД по серверам
    #35259192
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mitek, да нет... Все справляется, все работает как надо... Просто надо так организовать, если можно, я подробности опущу:) Сейчас пользуем WSE редакцию... Версия 8.1.9....
...
Рейтинг: 0 / 0
Распределение БД по серверам
    #35259302
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gardenman, что-то я похоже рано обрадовался... Обе ссылки на ведут на DB2 UDB log records.... Это тут причем?
...
Рейтинг: 0 / 0
Распределение БД по серверам
    #35259367
Evclid79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На девятой DB2 все красиво уже...
А на восьмой вроде и не сложно...

Create table..... (COL1 ...)
partitioning key (COL1)....

НО вот как определить правило которое по значению COL1 определит в какой раздел строку кинуть что-то я не вижу...
...
Рейтинг: 0 / 0
Распределение БД по серверам
    #35259399
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TORTgardenman, что-то я похоже рано обрадовался... Обе ссылки на ведут на DB2 UDB log records.... Это тут причем?
Извини) типа - опечатка...
В доке по девятке:
http://publib.boulder.ibm.com/infocenter/db2luw/v9r5//index.jsp?
--> Основы баз данных -->Partitioning and Clustering Guide
Многораздельные базы (кластеризация) они в 8 и 9 - одинаковые.
А вот партицирование таблиц - тока в 9 появилось
...
Рейтинг: 0 / 0
Распределение БД по серверам
    #35259437
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сразу еще вопросец... Будет ли работать такая система без одного из серверов? Как минимум смогу я к ней подконнектится и читать данные отлько на доступном сервере?
...
Рейтинг: 0 / 0
Распределение БД по серверам
    #35259521
mitek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Evclid79На девятой DB2 все красиво уже...
А на восьмой вроде и не сложно...

Create table..... (COL1 ...)
partitioning key (COL1)....

НО вот как определить правило которое по значению COL1 определит в какой раздел строку кинуть что-то я не вижу...

Partitioning and Clustering Guide :

Database partitioning is the method by which the placement of each row in the table is determined. The method works as follows:
1. A hashing algorithm is applied to the value of the distribution key, and generates a number between zero (0) and 4095.
2. The distribution map is created when a database partition group is created. Each of the numbers is sequentially repeated in a round-robin fashion to fill the distribution map.
3. The number is used as an index into the distribution map. The number at that location in the distribution map is the number of the database partition where the row is stored.
...
Рейтинг: 0 / 0
Распределение БД по серверам
    #35259525
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TORTСразу еще вопросец... Будет ли работать такая система без одного из серверов? Как минимум смогу я к ней подконнектится и читать данные отлько на доступном сервере?
Не-а...
...
Рейтинг: 0 / 0
Распределение БД по серверам
    #35259566
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gardenman, уточню на всякий случай... Есть сервер1 и сервер2... На них есть БД... На сервер1 положили целиком таблицу1, на сервер2 - соответственно таблицу2.... Вырубился сервер2... Можно сделать select к таблице1?
...
Рейтинг: 0 / 0
Распределение БД по серверам
    #35259696
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TORTgardenman, уточню на всякий случай... Есть сервер1 и сервер2... На них есть БД... На сервер1 положили целиком таблицу1, на сервер2 - соответственно таблицу2.... Вырубился сервер2... Можно сделать select к таблице1?
Не все так просто. Где-то на одной ноде есть системный каталог. Если эта нода вылитит угадай что будет?
...
Рейтинг: 0 / 0
Распределение БД по серверам
    #35259740
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gardenman, я так понимаю можно настроить на какой ноде будет системный каталог... Допустим он на сревере1 (см. данные выше), что будет если отвалится сервер2?
...
Рейтинг: 0 / 0
Распределение БД по серверам
    #35259835
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TORTgardenman, я так понимаю можно настроить на какой ноде будет системный каталог... Допустим он на сревере1 (см. данные выше), что будет если отвалится сервер2?

Код: plaintext
1.
2.
3.
4.
[db2inst1@db2dpf0 ~]$ db2start
 04 / 16 / 2008   20 : 21 : 39       1     0    SQL6048N  A communication error occurred during START or STOP DATABASE MANAGER processing.
 04 / 16 / 2008   20 : 21 : 39       0     0    SQL1026N  The database manager is already active.
SQL6032W  Start command processing was attempted on "2" node(s).  "0" node(s) were successfully started.  "1" node(s) were already started.  "1" node(s) could not be started.

У меня какраз один из серваков забрали.
[db2inst1@db2dpf0 ~]$ db2 connect to ... - просто висит.

На горячем ходу - увы - не могу попробовать.
...
Рейтинг: 0 / 0
Распределение БД по серверам
    #35259836
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL1229N The current transaction has been rolled back because of a system
error. SQLSTATE=40504
...
Рейтинг: 0 / 0
Распределение БД по серверам
    #35259888
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gardenman :( а жаль
...
Рейтинг: 0 / 0
Распределение БД по серверам
    #35259937
mitek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чтобы этого не было DPF-ноды еще объединяют в failover-кластер, но тут уже без внешней СХД никак.
...
Рейтинг: 0 / 0
Распределение БД по серверам
    #35259976
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TORTgardenman :( а жаль
А если так: Партицировать таблицы. Ненужные данные на ленту и в архив.
А чтобы данные вроде как видны были - MQT управляемые юзером. В запросе данные есть а на самом деле их в базе нет. Так можно? никто не делал случайно?
...
Рейтинг: 0 / 0
Распределение БД по серверам
    #35259991
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если вылетела нода с каталогом - всё.
Если нет - то команды, для которых нужны будут данные с умершей ноды, будут отваливаться.
А если вы, грубо говоря, будете делать
Код: plaintext
select * from tabname where dbpartitionnum(colname) in (номера_живых_нод)
то оно работать будет.
...
Рейтинг: 0 / 0
Распределение БД по серверам
    #35260045
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mark Barinstein, gardenman как-то ваши показания не стыкуются:)
...
Рейтинг: 0 / 0
Распределение БД по серверам
    #35260388
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TORTMark Barinstein, gardenman как-то ваши показания не стыкуются:)
у меня нет одной ноды. я не могу законнектиться. Возможно что соединения которые были живы на момент отваливания ноды продолжат в каком-то смысле жить. Я не могу проэкспериментировать сейчас.
...
Рейтинг: 0 / 0
Распределение БД по серверам
    #35261112
Evclid79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно создать таблицу с дополнительной generated always колонкой, которая будет генерить число.
Эту колонку определить как partitioning key.
например я пробовал на 4-х раздельной базе... По partitionmaps значение 0 из этой колонки отправляло строку в раздел 0, 6 во 2-ой раздел, 1 в пятый, а 5 в третий.....
Ну а дальше дело техники....

Согласен... способ не профессиональный, зато он работает и другого на восьмерке я не нашел... ):
...
Рейтинг: 0 / 0
Распределение БД по серверам
    #35263807
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
gardenmanу меня нет одной ноды. я не могу законнектиться. Возможно что соединения которые были живы на момент отваливания ноды продолжат в каком-то смысле жить. Я не могу проэкспериментировать сейчас.То что я вижу на своей тестовой системе:
Если в сессии я делал запросы на данные ноды, которая потом отвалилась, то мое соединение разрывается после падения этой ноды (не содержащей системный каталог, конечно).
Но я могу переконнектится и работать дальше. При этом, если я опять буду пытаться слать запросы на данные упавшей ноды, то эти запросы будут отваливаться, но соединение разрываться не будет.
Если после переконнекта я не буду слать запросы на данные упавшей ноды, то они будут работать.
...
Рейтинг: 0 / 0
Распределение БД по серверам
    #35274907
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сейчас попробовал репликацию настроить на federated таблицу... Работает!!!
...
Рейтинг: 0 / 0
Распределение БД по серверам
    #35275061
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В смысле Не Работает!!!
...
Рейтинг: 0 / 0
Распределение БД по серверам
    #35277494
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А разве должно? Ведь нормально для репликации изменения собираются на той стороне, где находится реплицируемая таблица (читаются Capture из логов или перехватываются триггерами в случае не-DB2-источника) (случае full refresh'а малоинтересны). А уж таблицы с накопленными изменениями делают federated и их читает Apply.
...
Рейтинг: 0 / 0
Распределение БД по серверам
    #35277881
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я пытался в качестве таблицы-цели указать federated-таблицу... У меня сыграло ограничение по транзакциям... В том смысле, что нельзя в одной транзакции изменять обыкновенную таблицу и federated-таблицу....
...
Рейтинг: 0 / 0
Распределение БД по серверам
    #35283439
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TORTgardenman, mitek мне на эту отдельную ноду надо вынести одну большую таблицу ~100млн. записей + к ней штук 10-15 summary table. Так что Вы там про ESE говорили? Куда хоть копнуть? С чего начать? Какое меню выбрать?:)Если еще кому интересно.
В db2 с dpf можно руками управлять, в какую ноду какую запись положить.
Пусть ваша таблица должна быть разбита по нодам так, чтобы активная ('A') часть была на node 0, а архивная ('B') часть была на node 1.
Делается это примерно так:
Код: plaintext
1.
2.
3.
4.
create nodegroup testgroup on all nodes;
create tablespace testspace in testgroup ...;
create table test (your_columns_description_goes_here, part char( 1 ) not null default 'A') 
in testspace distribute by hash(part);
alter table test add constraint test_part check(part in ('A', 'B'));
Далее надо узнать, какое хэш-значение поставится в соответствие обоим значениям поля part.
Для этого делается тестовая вставка 2-х записей и запрос на получение хэша:
Код: plaintext
1.
insert into table test (..., part) values (..., 'A'), (..., 'B');
select part, dbpartitionnum(part) n, hashedvalue(part) h from test;
Если записи легли не так, как надо (т.е. для part='A' n<>0 или для part='B' n<>1), то:
- выгружается на диск distribution map для этой nodegroup (запускать на сервере):
Код: plaintext
db2gpmap -d your_base -m test.map -t TEST
Этот текстовый файл содержит 4096 цифр-номеров узлов с нумерацией от 0 до 4095.
Пусть для активной части select вернул: part='A', n=1, h=1234
Т.е. выяснилось, что все записи с part='A' лягут в нежелаемую ноду.
Тогда в этом текстовом файле заменяем 1234-ую цифру (нумерация начинается с 0) с 1 на 0.
То же, если надо, делаем для part='B'.
И делаем
Код: plaintext
redistribute nodegroup testgroup using targetmap test.map;
После этого select должен вернуть нужные номера нодов для ваших частей и вы можете быть уверенным, что записи разложаться так, как вы хотели.
...
Рейтинг: 0 / 0
46 сообщений из 46, показаны все 2 страниц
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Распределение БД по серверам
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]