Табдилдиҳии ҷараёнҳои пойгоҳи додаҳои Firebird 2.5 ба формати ODS12 (Firebird 3.0)

Ҳар як версияи Firebird дорои версияи шахсии формати сохтори диски базаи маълумот мебошад, O(n)D(isk)S(structure). То версияи 2.5 фарогир, муҳаррики Firebird метавонад бо ODS-и версияҳои қаблӣ кор кунад, яъне пойгоҳи додаҳои версияҳои кӯҳна бо версияи нав кушода шуда, дар реҷаи мутобиқат кор мекард, аммо муҳаррики Firebird 3.0 танҳо бо пойгоҳи додаҳо дар версияи ODS-и худ кор мекунад. 12.0.

Барои гузаштан ба 3.0, пойгоҳи додаҳо аз 2.5 бояд ба формати нав тавассути нусхабардорӣ/барқарорсозӣ табдил дода шаванд. Албатта, мо тахмин мезанем, ки базаи маълумот қаблан барои табдил омода карда шудааст - яъне. метамаълумотҳо ва дархостҳо барои мутобиқат бо Firebird 3.0 санҷида шуданд.

Агар шумо равиши стандартиро риоя кунед, ин маънои онро дорад, ки шумо бояд дар версияи 2.5 нусхабардорӣ кунед, пас 3.0-ро насб кунед ва барқарор кунед. Чунин тартиб агар вақти кофӣ мавҷуд бошад, қобили қабул аст, аммо ҳангоми интиқоли пойгоҳи додаҳои калон ё ҳангоми интиқоли якчанд даҳҳо пойгоҳи додаҳо дар як вақт, вақте ки вақт тамом мешавад, шумо метавонед табдилдиҳии ҷараёнро истифода баред, ки 30-40% тезтар аст. Чӣ тавр маҳз ин корро кардан лозим аст (дар зери Windows ва зери Linux), дар зери набуред.

Идеяи умумӣ ин аст, ки мо қубурро барои суръат бахшидан ба кор истифода хоҳем кард:

gbak -b … база25 stdout | gbak -c … stdin база30

Gbak аз 2.5 нусхаи эҳтиётиро дар формати хатӣ тавлид мекунад ва онро ба stdout мефиристад, ки он фавран gbak-ро аз 3.0 тавассути stdin интихоб мекунад ва базаи нав месозад.

Чунин лӯларо бо усули дастрасии маҳаллӣ (файл) ташкил кардан лозим аст, зеро дастрасии шабака (ҳатто тавассути localhost) равандро ба таври назаррас суст мекунад.

Мо дар зер тафсилоти Windows ва Linuxро дида мебароем.

Windows

Дар мавриди Windows, роҳи осонтарин сохтани як сохтани комилан мустақили Firebird аст. Барои ин мо мегирем embed-archive Firebird 2.5, номи fbemded.dll -ро ба fbclient.dll иваз кунед, аз бойгонии "муқаррарӣ" 2.5 утилитаҳои gbak.exe ва (ихтиёрӣ) isql.exe илова кунед.

Firebird 3.0 истифода мебарад маҷлиси ягона ва ягон тағйиротро талаб намекунад.

Версияи аз ҳама ҳадди ақал (ки насби китобхонаҳои VS2008/VS2010-ро дар системаи мақсаднок талаб намекунад) файлҳои зеринро дар бар мегирад:

25/gbak.exe
25/fbclient.dll
25/firebird.conf
25/firebird.log
25/firebird.msg
25/ib_util.dll
25/icudt30.dll
25/icuin30.dll
25/icuuc30.dll
25/Microsoft.VC80.CRT.manifest
25/msvcp80.dll
25/msvcr80.dll

30/fbclient.dll
30/firebird.conf
30/firebird.msg
30/gbak.exe
30/ib_util.dll
30/icudt52.dll
30/icudt52l.dat
30/icuin52.dll
30/icuuc52.dll
30/msvcp100.dll
30/msvcr100.dll
30/intl/fbintl.conf
30/intl/fbintl.dll
30/plugins/engine12.dll

Мудири ботаҷриба метавонад пай бурд, ки 2.5 файлҳои intl/fbintl.dll ва intl/fbintl.conf-ро дар бар намегирад. Ин дуруст аст, зеро gbak маҷмӯи аломатҳои пайвастро истифода намебарад ва маълумотро байни аломатҳо табдил намедиҳад, аммо дар тарафи "қабул"-и Firebird 3.0, ин файлҳо ҳангоми сохтани индексҳо заруранд.

Дар firebird.conf Firebird 3.0 тавсия дода мешавад, ки илова кунед:

MaxUnflushedWrites = -1
MaxUnflushedWriteTime = -1

Инчунин, матлуб аст, ки арзишҳои гуногуни IpcName барои 2.5 ва 3.0 муқаррар карда шаванд.

Ҳангоми интихоби арзишҳои параметрҳои дигари firebird.conf, мо аз баррасии оддӣ бармегардем: дар марҳилаи интиқоли маълумот, gbak дар як раванд 2.5 ва дар дигар раванд 3.0 кор мекунад, сипас 2.5 мебарояд ва 3.0 ба сохтани он шурӯъ мекунад. индексҳо.

Барои суръат бахшидан ба марҳилаи сохтани индекс дар 3.0, тавсия дода мешавад, ки андозаи параметри TempCacheLimit то ~ 40% RAM зиёд карда шавад (агар он сервери махсус бошад, албатта).

Масалан, агар сервер 16 ГБ хотираи оперативӣ дошта бошад, шумо метавонед онро гузоред

TempCacheLimit=6G

Албатта, ин арзишро танҳо барои 64-бит Firebird 3 муқаррар кардан мумкин аст, зеро ҳама гуна раванди 32-бит наметавонад зиёда аз 2 гигабайт хотираро ҷудо кунад.

Дар 2.5, ин параметрро тағир додан лозим нест - он ба ҳар ҳол аз 2 гигабайт зиёд буда наметавонад ва он ба суръат ҳангоми нусхабардорӣ таъсир намерасонад.

Пеш аз иҷрои амалиёт, шумо бояд тафтиш кунед, ки кэши саҳифа дар сарлавҳаи пойгоҳи додаҳо ба 0 (фармон) гузошта шудааст. gstat -h databasename, ба хати буферҳои саҳифа нигаред).

Агар кэш ба таври возеҳ дар сарлавҳаи пойгоҳи додаҳо муқаррар карда шуда бошад, он гоҳ он арзишҳоро аз firebird.conf (ва databases.conf дар 3.0) бекор мекунад ва дар сурати арзишҳои нокифоя калон, он метавонад ба истеъмоли аз ҳад зиёди хотира ва ивазкунӣ оварда расонад.

Баъдан, файлҳоро ба системаи мақсаднок нусхабардорӣ кунед.

Табдил пас аз қатъ кардани хидмати "системаи" Firebird 2.5 дар сатри фармон бо ҳуқуқҳои баланд ба мудири маҳаллӣ анҷом дода мешавад (мисол):

set ISC_USER=владелец
"25/gbak" -z -b -g -v -st t -y 25.log база25 stdout|^
"30/gbak" -z -c -v -st t -y 30.log stdin база30

Ин мисол дар нохунакҳо "хатти пеш"-ро истифода мебарад (муътабари "уникс-сабки") ва "шапка" (аломати "^") аз аломати сатри нав гурезад, ки ҳангоми навиштани фармонҳои дароз муфид аст. Опсияи -st(atus) дар Firebird 2.5.8 пайдо шуд ва ба шумо имкон медиҳад, ки маълумотро дар бораи вақти иҷро шудани раванди gbak сабт кунед (барои тафсилот ба ҳуҷҷатҳо нигаред).

Linux

Дар Linux Firebird 3 аз китобхонаи томмат вобаста аст. Дар CentOS (RHEL) ин китобхона дар анбори epel, дар Ubuntu (Debian) дар анбори система ҷойгир аст.

Барои CentOS, шумо бояд аввал анбори epel-ро пайваст кунед ва танҳо пас аз он кор кунед

yum install libtommath

Ба Ubuntu лозим нест, ки анборҳои иловагӣ дошта бошад, аммо Ubuntu 16 ва Ubuntu 18 версияҳои гуногуни бастаҳоро насб мекунанд - мутаносибан libtommath0 ва libtommath1.

Firebird 3.0 tommath.so.0-ро меҷӯяд ва барои Ubuntu 18 ба таври иловагӣ аз tommath.so.0 ба tommath.so.1 истинод (симпаймо) эҷод кардан лозим аст. Барои ин, шумо аввал бояд tommath.so.1-ро пайдо кунед.

Роҳи ҷустуҷӯшуда дар Ubuntu - /usr/lib/x86_64-linux-gnu/, аммо дигар тақсимоти асоси Debian метавонанд гуногун бошанд.

Мушкилоти дуюм ба он вобаста аст, ки то Firebird 3.0.1 ва аз он ҷумла, роҳи осони насб кардани ду версияи гуногуни сервер вуҷуд надошт. Мо варианти "аз манбаъ бо префикси зарурӣ тартиб додан" -ро аз сабаби мураккабии нисбӣ баррасӣ намекунем.

Барои Firebird 3.0.2 ва болотар амалӣ карда мешавад бо --enable-binreloc созед ва варианти алоҳидаи насбкунанда (-роҳ).

Фарз мекунем, ки китобхонаи tommath ва агар лозим бошад, рамзи tommath.so.0 ба система илова карда шудааст, шумо метавонед тақсимоти ҷории Firebird 3.0.4-ро (дар вақти навиштани ин навиштан) насб кунед, масалан, /opt /fb3:

./install.sh -path /opt/fb3

Пас аз ин, шумо метавонед хидмати системаи Firebird-ро қатъ кунед ва табдили ҷараёнро оғоз кунед.

Ҳангоми қатъ кардани Firebird, дар хотир доред, ки равандҳои Firebid 2.5 дар реҷаи Classic одатан аз ҷониби xinetd оғоз карда мешаванд - бинобар ин шумо бояд хидмати Firebird-ро барои xinetd хомӯш кунед ё xinetd-ро комилан қатъ кунед.

Дар firebird.conf барои 3.0 дар Linux ба шумо лозим нест, ки параметрҳои MaxUnflushed (онҳо танҳо дар Windows кор мекунанд) ва танзимоти Firebird 2.5-ро тағир диҳед.

Дар Linux дастрасии маҳаллӣ (файл) ба Firebird 2.5 ба версияи дарунсохташуда дар Windows баробар нест - сервери 2.5 дар раванди gbak (бе қисми шабака) кор мекунад, аммо ҳуқуқи дастрасӣ нисбат ба пойгоҳи корбар тафтиш карда мешавад, ки ин маънои онро дорад, ки на танҳо логин, балки парол низ талаб карда мешавад:

export ISC_USER=username ISC_PASSWORD=password
/opt/firebird/bin/gbak -b … база25 stdout
|/opt/fb3/bin/gbak -c … stdin база30

Пас аз табдилдиҳии бомуваффақият, шумо бояд аввал "иловагӣ" Firebird 3.0, баъд "асосӣ" Firebird 2.5 -ро нест кунед ва пас аз он насби тозаи Firebird 2.5 -ро иҷро кунед - ва ин беҳтарин аз насбкунандаи муқаррарии tar.gz аст, на тавассути анборҳо, зеро. версияи дар анборҳо ҷойгиршуда метавонад ақиб монад.

Инчунин, пас аз барқарор кардани пойгоҳи додаҳо дар Linux ва аз нав насб кардан, шумо бояд тафтиш кунед, ки махзани нав ба корбари Firebird тааллуқ дорад.

Агар ин тавр набошад, пас онро ислоҳ кардан лозим меояд.

chown firebird.firebird database

Натиҷа

Илова ба сарфаи вақт ва фазои диск, табдили ҷараён боз як бартарии муҳим дорад - табдили пойгоҳи додаҳо бидуни нест кардани Firebird 2.5 мавҷуд аст, ки бозгаштро дар сурати табдили номуваффақ хеле осон мекунад (аксар вақт аз сабаби набудани ҷой ё бозоғозкунии ғайричашмдошт ҳангоми муҳоҷират. раванд).

Сарфаи вақт ба он вобаста аст, ки табдили "классикӣ" "вақти эҳтиётӣ" ва "вақти барқарорсозӣ" мебошад. Барқароркунӣ аз ду қисм иборат аст: хондани маълумот аз файли эҳтиётӣ ва сохтани индекс.

Ҳангоми табдили ҷараён, вақти умумӣ ҳамчун "вақти эҳтиётӣ плюс аз панҷ то даҳ фоиз" ва "вақти сохтани индекс" ба даст оварда мешавад.

Натиҷаҳои мушаххас аз сохтори пойгоҳи додаҳо вобастаанд, аммо ба ҳисоби миёна вақти барқарорсозӣ тақрибан ду маротиба аз вақти эҳтиётӣ аст. Аз ин рӯ, агар мо вақти эҳтиётиро ҳамчун як воҳид гирем, пас "табдилдиҳии классикӣ" се воҳиди вақт аст, ҷараён ду воҳиди вақт аст. Баланд бардоштани TempCacheLimit ба коҳиши минбаъдаи вақт мусоидат мекунад.

Умуман, табдили ҷараён дар амал ба шумо имкон медиҳад, ки 30-40% вақти нусхабардории алтернативӣ ва барқароркуниро сарфа кунед.

Саволҳо?

Лутфан ҳама саволҳоро дар шарҳҳо нависед ё онҳоро ба муаллифи методология ва ҳаммуаллифи ин мақола - Василий Сидоров, муҳандиси пешбари системаи iBase, дар bs at ibase ru фиристед.

Танҳо корбарони сабтиномшуда метавонанд дар пурсиш иштирок кунанд. даромад, Лутфан.

Шумо кадом версияи Firebird-ро истифода мебаред?

  • Firebird 3.x

  • Firebird 2.5

  • Firebird 2.1

  • Firebird 2.0, 1.5 ё 1.0

16 корбар овоз доданд. 1 корбар худдорӣ кард.

Манбаъ: will.com

Илова Эзоҳ