Firebird 2.5 දත්ත සමුදායන් ODS12 ආකෘතියට ප්‍රවාහ පරිවර්තනය කිරීම (Firebird 3.0)

ෆයර්බර්ඩ් හි සෑම අනුවාදයකටම දත්ත සමුදා තැටි ව්‍යුහ ආකෘතියේ තමන්ගේම අනුවාදයක් ඇත, O(n)D(isk)S(tructure). අනුවාදය 2.5 ඇතුළුව, Firebird එන්ජිමට පෙර අනුවාද වල ODS සමඟ ක්‍රියා කළ හැකිය, එනම් පැරණි අනුවාද වල දත්ත සමුදායන් නව අනුවාදය මඟින් විවෘත කර අනුකූලතා ආකාරයෙන් ක්‍රියා කළ නමුත් Firebird 3.0 එන්ජිම ක්‍රියා කරන්නේ එහිම ODS අනුවාදයේ දත්ත සමුදායන් සමඟ පමණි. 12.0

3.0 වෙත සංක්‍රමණය වීමට, 2.5 සිට දත්ත සමුදාය උපස්ථ/ප්‍රතිසාධනය හරහා නව ආකෘතියට පරිවර්තනය කළ යුතුය. ඇත්ත වශයෙන්ම, දත්ත සමුදාය පරිවර්තනය සඳහා පෙර සූදානම් කර ඇති බව අපි උපකල්පනය කරමු - i.e. පාර-දත්ත සහ විමසුම් Firebird 3.0 සමඟ ගැළපීම සඳහා පරීක්ෂා කර ඇත.

ඔබ සම්මත ප්‍රවේශය අනුගමනය කරන්නේ නම්, මෙයින් අදහස් කරන්නේ ඔබ 2.5 අනුවාදයේ උපස්ථයක් සෑදිය යුතු බවයි, පසුව 3.0 ස්ථාපනය කර ප්‍රතිසාධනයක් කරන්න. ප්‍රමාණවත් කාලයක් තිබේ නම් එවැනි ක්‍රියා පටිපාටියක් පිළිගත හැකි නමුත් විශාල දත්ත සමුදායන් සංක්‍රමණය කිරීමේදී හෝ එකවර දත්ත සමුදා දුසිම් කිහිපයක් සංක්‍රමණය කිරීමේදී කාලය අවසන් වන විට ඔබට ප්‍රවාහ පරිවර්තනය භාවිතා කළ හැකිය, එය 30-40% වේගවත් වේ. මෙය හරියටම කරන්නේ කෙසේද (වින්ඩෝස් යටතේ සහ ලිනක්ස් යටතේ), කප්පාදුව යටතේ කියවන්න.

සාමාන්‍ය අදහස නම් අපි දේවල් වේගවත් කිරීම සඳහා නල මාර්ගයක් භාවිතා කරමු:

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

2.5 වෙතින් Gbak රේඛීය ආකෘතියකින් උපස්ථයක් ජනනය කර එය stdout වෙත යවයි, එය වහාම 3.0 වෙතින් stdin හරහා gbak ලබාගෙන නව දත්ත සමුදායක් නිර්මාණය කරයි.

ජාල ප්‍රවේශය (දේශීය සත්කාරක සමාගම හරහා පවා) ක්‍රියාවලිය සැලකිය යුතු ලෙස මන්දගාමී වන බැවින් දේශීය (ගොනු) ප්‍රවේශ ක්‍රමයක් සමඟ එවැනි නල මාර්ගයක් සංවිධානය කිරීම අවශ්‍ය වේ.

අපි පහත වින්ඩෝස් සහ ලිනක්ස් සඳහා විස්තර වෙත යන්නෙමු.

හි Windows සඳහා

වින්ඩෝස් සම්බන්ධයෙන් ගත් කල, පහසුම ක්‍රමය වන්නේ ෆයර්බර්ඩ් සම්පූර්ණයෙන්ම ස්වාධීන ගොඩනැගීමයි. මේ සඳහා අපි ගන්නවා 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

එසේම, 2.5 සහ 3.0 සඳහා විවිධ IpcName අගයන් සැකසීම යෝග්‍ය වේ.

firebird.conf හි අනෙකුත් පරාමිතිවල අගයන් තෝරාගැනීමේදී, අපි සරල සලකා බැලීමකින් ඉදිරියට යන්නෙමු: දත්ත පාරවිලයන අවධියේදී, gbak එක් ක්‍රියාවලියක 2.5 ක් ද, අනෙක් ක්‍රියාවලියේ 3.0 ද, පසුව 2.5 පිටවීම් සහ 3.0 ගොඩනැගීම ආරම්භ කරයි. දර්ශක.

3.0 හි දර්ශක ගොඩනැගීමේ අදියර වේගවත් කිරීම සඳහා, TempCacheLimit පරාමිතියෙහි විශාලත්වය ~ 40% RAM දක්වා වැඩි කිරීමට නිර්දේශ කරනු ලැබේ (එය කැප වූ සේවාදායකයක් නම්, ඇත්ත වශයෙන්ම).

උදාහරණයක් ලෙස, සේවාදායකයේ 16 GB RAM තිබේ නම්, ඔබට තැබිය හැකිය

TempCacheLimit=6G

ඇත්ත වශයෙන්ම, මෙම අගය සැකසිය හැක්කේ 64-bit Firebird 3 සඳහා පමණි, මන්ද ඕනෑම 32-bit ක්‍රියාවලියකට ගිගාබයිට් 2 කට වඩා මතකයක් වෙන් කළ නොහැකි බැවිනි.

2.5 හි, මෙම පරාමිතිය වෙනස් කිරීමට අවශ්ය නොවේ - එය කෙසේ හෝ ගිගාබයිට් 2 කට වඩා වැඩි විය නොහැකි අතර, එය උපස්ථ කිරීමේදී වේගයට බලපාන්නේ නැත.

මෙහෙයුම සිදු කිරීමට පෙර, දත්ත සමුදා ශීර්ෂයේ පිටු හැඹිලිය 0 (විධානය) ලෙස සකසා ඇත්දැයි පරීක්ෂා කළ යුතුය. gstat -h databasename, පිටු බෆර පේළිය බලන්න).

හැඹිලිය දත්ත සමුදා ශීර්ෂය තුළ පැහැදිලිව සකසා ඇත්නම්, එය firebird.conf (සහ databases.conf 3.0 හි) අගයන් අභිබවා යයි, ප්‍රමාණවත් නොවන විශාල අගයන්හිදී, එය අධික මතක පරිභෝජනයට සහ හුවමාරුවට හේතු විය හැක.

ඊළඟට, ඉලක්කගත පද්ධතියට ගොනු පිටපත් කරන්න.

"පද්ධතිය" ෆයර්බර්ඩ් 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 Firebird 3 මත රඳා පවතින්නේ tommath පුස්තකාලය මතය. CentOS (RHEL) හි මෙම පුස්තකාලය එපල් ගබඩාවේ, උබුන්ටු (ඩේබියන්) හි පද්ධති ගබඩාවේ පිහිටා ඇත.

CentOS සඳහා, ඔබ පළමුව එපල් නිධිය සම්බන්ධ කළ යුතු අතර පසුව පමණක් කරන්න

yum install libtommath

Ubuntu සඳහා අමතර ගබඩා ඇතුළත් කිරීමට අවශ්‍ය නැත, නමුත් Ubuntu 16 සහ Ubuntu 18 පැකේජවල විවිධ අනුවාද ස්ථාපනය කරයි - පිළිවෙලින් libtommath0 සහ libtommath1.

Firebird 3.0 tommath.so.0 සඳහා සොයන අතර Ubuntu 18 සඳහා tommath.so.0 සිට tommath.so.1 දක්වා සබැඳියක් (symlink) සෑදීමට අවශ්‍ය වේ. මෙය සිදු කිරීම සඳහා, ඔබ මුලින්ම tommath.so.1 සොයා ගත යුතුය.

උබුන්ටු හි සෙවූ මාර්ගය - /usr/lib/x86_64-linux-gnu/, නමුත් අනෙකුත් Debian මත පදනම් වූ බෙදාහැරීම් වෙනස් විය හැක.

දෙවන ගැටළුව වන්නේ Firebird 3.0.1 දක්වා සහ ඇතුළුව, විවිධ සේවාදායක අනුවාද දෙකක් ස්ථාපනය කිරීමට පහසු ක්‍රමයක් නොතිබීමයි. එහි සාපේක්ෂ සංකීර්ණත්වය නිසා "අවශ්‍ය උපසර්ගය සමඟ මූලාශ්‍රයෙන් සම්පාදනය කරන්න" යන විකල්පය අපි සලකන්නේ නැත.

Firebird 3.0.2 සහ ඉහළ සඳහා ක්‍රියාත්මක කර ඇත --enable-binreloc සමඟ ගොඩනඟන්න සහ වෙනම ස්ථාපක විකල්පයක් (-path path).

tommath පුස්තකාලය සහ, අවශ්‍ය නම්, tommath.so.0 සඳහා වන symlink එකක් පද්ධතියට එක් කර ඇතැයි උපකල්පනය කරමින්, ඔබට ධාරාව (මෙම ලියන අවස්ථාව වන විට) Firebird 3.0.4 බෙදාහැරීම ස්ථාපනය කළ හැකිය, උදාහරණයක් ලෙස, /opt /fb3:

./install.sh -path /opt/fb3

ඊට පසු, ඔබට ෆයර්බර්ඩ් පද්ධති සේවාව නතර කර ප්‍රවාහ පරිවර්තනය ආරම්භ කළ හැකිය.

Firebird නැවැත්වීමේදී, Classic මාදිලියේ Firebid 2.5 ක්‍රියාවලි සාමාන්‍යයෙන් xinetd විසින් ආරම්භ කරන බව මතක තබා ගන්න - එබැවින් ඔබ xinetd සඳහා firebird සේවාව අක්‍රිය කිරීමට හෝ xinetd සම්පූර්ණයෙන්ම නතර කිරීමට අවශ්‍ය වේ.

Linux හි 3.0 සඳහා firebird.conf හි, ඔබට MaxUnflushed පරාමිති සැකසීමට අවශ්‍ය නොවේ (ඒවා Windows මත පමණක් ක්‍රියා කරයි) සහ Firebird 2.5 සැකසුම් වෙනස් කරන්න.

ලිනක්ස් හි, Firebird 2.5 දේශීය (ගොනුව) ප්‍රවේශය වින්ඩෝස් යටතේ ඇති කාවැද්දූ අනුවාදයට සමාන නොවේ - 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% ඉතිරි කර ගැනීමට ඉඩ සලසයි.

ප්රශ්නය?

කරුණාකර අදහස් දැක්වීම්වල සියලුම ප්‍රශ්න ලියන්න, නැතහොත් ක්‍රමවේදයේ කතුවරයා සහ මෙම ලිපියේ සම කර්තෘ වෙත යවන්න - Vasily Sidorov, iBase Leading System Engineer, bs at ibase ru.

සමීක්ෂණයට සහභාගී විය හැක්කේ ලියාපදිංචි පරිශීලකයින්ට පමණි. පුරන්නකරුණාකර.

ඔබ භාවිතා කරන්නේ Firebird හි කුමන අනුවාදයද?

  • ෆයර්බර්ඩ් 3.x

  • ෆයර්බර්ඩ් 2.5

  • ෆයර්බර්ඩ් 2.1

  • Firebird 2.0, 1.5 හෝ 1.0

පරිශීලකයින් 16 දෙනෙක් ඡන්දය දුන්හ. 1 පරිශීලකයෙක් වැළකී සිටියේය.

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න