පේළි බිලියන ගණනක විමසීම් MySQL හට සාධාරණව කළ හැකිද?


285

මම ස්කන්ධ වර්ණාවලීක්ෂයකින් ස්කන්ධය MySQL දත්ත ගබඩාවක ගබඩා කිරීමට සැලසුම් කර ඇති අතර මෙම දත්ත ප්‍රමාණය ගබඩා කිරීම සහ විශ්ලේෂණය කිරීම දුරස්ථව කළ හැකි දැයි දැන ගැනීමට කැමැත්තෙමි. පරිසරය අනුව කාර්ය සාධනය වෙනස් වන බව මම දනිමි, නමුත් මම විශාලත්වයේ දළ අනුපිළිවෙල සොයමි: විමසීම් සඳහා දින 5 ක් හෝ මිලි තත්පර 5 ක් ගත වේද?

ආදාන ආකෘතිය

සෑම ආදාන ගොනුවකම වර්ණාවලීක්ෂයේ තනි ධාවනයක් අඩංගු වේ; සෑම ධාවනයක්ම ස්කෑන් සමූහයකින් සමන්විත වන අතර සෑම ස්කෑන් එකකටම ඇණවුම් කළ දත්ත ස්ථාන තිබේ. පාර-දත්ත ටිකක් ඇත, නමුත් ගොනුවේ බහුතරය අරා 32- හෝ 64-බිට් අඟල් හෝ පාවෙන වලින් සමන්විත වේ.

ධාරක පද්ධතිය

| ---------------- + ------------------------------- |
| මෙහෙයුම් පද්ධතිය | වින්ඩෝස් 2008 64-බිට් |
| MySQL අනුවාදය | 5.5.24 (x86_64) |
| CPU | 2x Xeon E5420 (මුළු හර 8 ක්) |
| RAM | 8GB |
| SSD ගොනු පද්ධතිය | 500 GiB |
| HDD RAID | 12 TiB |
| ---------------- + ------------------------------- |

නොසැලකිලිමත් ප්‍රොසෙසර වේලාවක් භාවිතා කරමින් සේවාදායකයේ ක්‍රියාත්මක වන තවත් සේවාවන් කිහිපයක් තිබේ.

ගොනු සංඛ්‍යාලේඛන

| ------------------ + -------------- |
| ගොනු ගණන | ~ 16,000 |
| මුළු ප්‍රමාණය | 1.3 TiB |
| අවම ප්‍රමාණය | බයිට් 0 |
| උපරිම ප්‍රමාණය | 12 ගිබ් |
| මධ්යන්ය | 800 MiB |
| මධ්‍ය | 500 MiB |
| මුළු දත්ත ස්ථාන | ඩොලර් බිලියන 200 |
| ------------------ + -------------- |

මුළු දත්ත ස්ථාන ගණන ඉතා දළ ඇස්තමේන්තුවකි.

යෝජිත යෝජනා ක්‍රමය

මම "හරි" දේවල් කිරීමට සැලසුම් කරමි (එනම් පිස්සු වැනි දත්ත සාමාන්‍යකරණය කිරීම) ඒ නිසා runsමේසයක්, spectraවිදේශීය යතුරක් runsසහිත datapointsමේසයක් සහ විදේශීය යතුරක් සහිත මේසයක් තිබිය spectraයුතුය.

බිලියන 200 දත්ත දත්ත ප්‍රශ්නය

මම බහු වර්ණාවලියක් හරහා විශ්ලේෂණය කිරීමට බලාපොරොත්තු වන අතර සමහර විට බහුවිධ ලකුණු පවා ලබා ගත හැකි අතර එහි ප්‍රති ing ලයක් ලෙස පේළි මිලියන ගණනක් ස්පර්ශ කළ හැකිය. මම සෑම දෙයක්ම නිසියාකාරව සුචිගත කර ඇතැයි සිතමු (එය වෙනත් ප්‍රශ්නයකට මාතෘකාවක් වේ) සහ ජාලය පුරා සිය ගණනක් MiB මාරු කිරීමට උත්සාහ නොකරමි, මෙය හැසිරවීම දුරස්ථව MySQL හට පිළිගත හැකිද?

අමතර තොරතුරු

ස්කෑන් දත්ත XML මත පදනම් වූ mzML ආකෘතියේ ගොනු වලින් ලැබෙනු ඇත . මෙම ආකෘතියේ මස් <binaryDataArrayList>දත්ත ගබඩා කර ඇති මූලද්රව්යවල ඇත. සෑම පරිලෝකනයකින්ම> = 2 <binaryDataArray>මූලද්‍රව්‍ය නිපදවන අතර ඒවා එකට ගත් විට පෝරමයේ ද්විමාන (හෝ වැඩි) අරාවක් සාදයි [[123.456, 234.567, ...], ...].

මෙම දත්ත ලිවීමට එක් වරක් වන බැවින් යාවත්කාලීන කාර්ය සාධනය සහ ගනුදෙනු ආරක්ෂාව ගැන සැලකිලිමත් නොවේ.

දත්ත සමුදා ක්‍රමයක් සඳහා මගේ අ ාන සැලැස්ම:

runs වගුව

| තීරුවේ නම | වර්ගය |
| ------------- + ------------- |
| id | ප්‍රාථමික කේ |
| ආරම්භක_ වේලාව | TIMESTAMP |
| නම | වර්චාර් |
| ------------- + ------------- |

spectra වගුව

| තීරුවේ නම | වර්ගය |
| ---------------- + ------------- |
| id | ප්‍රාථමික කේ |
| නම | වර්චාර් |
| දර්ශකය | INT |
| වර්ණාවලි_ වර්ගය | INT |
| නියෝජනය | INT |
| run_id | විදේශීය කේ |
| ---------------- + ------------- |

datapoints වගුව

| තීරුවේ නම | වර්ගය |
| ------------- + ------------- |
| id | ප්‍රාථමික කේ |
| වර්ණාවලි_අයි | විදේශීය කේ |
| mz | ඩබල් |
| අංක_ ගණන් | ඩබල් |
| දර්ශකය | INT |
| ------------- + ------------- |

මෙය සාධාරණද?


එබැවින්, ඔබට අනුමාන කිරීමට හැකි වූවාක් මෙන්, මම ක්‍රමලේඛකයා මිස විද්‍යාගාරයේ ජීව විද්‍යා ologist යා නොවෙමි, එබැවින් විද්‍යාව මෙන්ම සැබෑ විද්‍යා .යන් ද මම නොදනිමි.

මෙන්න මම ගනුදෙනු කරන ආකාරයේ දත්තවල තනි වර්ණාවලීක්ෂයේ (ස්කෑන්) කුමන්ත්‍රණයක්:

නරඹන්නාගේ තිර රුව

මෘදුකාංගයේ පරමාර්ථය වන්නේ කඳු මුදුන් කොහේද සහ කොතරම් වැදගත්ද යන්න සොයා බැලීමයි. මෙය දැන් හඳුනා ගැනීම සඳහා අපි හිමිකාර මෘදුකාංග පැකේජයක් භාවිතා කරමු, නමුත් අපට අපේම විශ්ලේෂණ වැඩසටහනක් (ආර් වලින්) ලිවීමට අවශ්‍යය, එම නිසා තහඩු යටතේ සිදුවන්නේ කුමක්දැයි අපි දනිමු. ඔබට පෙනෙන පරිදි, දත්ත වලින් බහුතරයක් උනන්දුවක් නොදක්වන නමුත් අපගේ ඇල්ගොරිතම මඟ හැරුණු ප්‍රයෝජනවත් දත්ත ඉවත දැමීමට අපට අවශ්‍ය නැත. අප සෑහීමකට පත්විය හැකි උච්ච ලැයිස්තුවක් අප සතුව ඇති විට, අනෙක් නල මාර්ග දත්ත ස්ථානවල අමු ලැයිස්තුවට වඩා එම උපරිම ලැයිස්තුව භාවිතා කරනු ඇත. අමු දත්ත ස්ථාන විශාල පිපිරීමක් ලෙස ගබඩා කිරීම ප්‍රමාණවත් යැයි මම සිතමි, එබැවින් ඒවා අවශ්‍ය නම් නැවත විශ්ලේෂණය කළ හැකි නමුත් උච්චයන් පමණක් විශේෂිත දත්ත සමුදා සටහන් ලෙස තබා ගන්න. එවැනි අවස්ථාවක දී, වර්ණාවලියක් සඳහා කඳු මුදුන් දුසිම් කිහිපයක් පමණක් වනු ඇත, එබැවින් පිස්සු පරිමාණ දේවල් නොකළ යුතුය.



8
මෙය අමු A / D ඡන්ද ස්කන්ධ වර්ණාවලීක්ෂ දත්ත බැවින්, එය දත්ත ගබඩාවේ ගබඩා කිරීම ගොළු බව පෙනේ. මම මගේ අමු දත්ත රැගෙන, එය ඉවතලන්න, සැකසීමට සහ සැකසූ ප්‍රති results ල දත්ත ගබඩාවක ගබඩා කරමි. ප්‍රති results ල වනුයේ (අ) පේළියකට එක් තරංග ආකෘතියක් ගබඩා කර ඇති තරංග ආකෘතීන්, (ආ) ක්‍රමාංකන වක්‍ර වැනි තරංග ආකෘතීන් හා සම්බන්ධ වෙනත් දත්ත සහ (ඇ) දත්ත සමුදායේ පේළි. මෙය ඔබේ සැලසුමෙන් පිපිරුම් පේළි බිලියන ගණනක් කපා දමනු ඇත. ඔබට මූලික විශ්ලේෂණයක් නැවත ක්‍රියාත්මක කිරීමට අවශ්‍ය වූ විට, ඔබ සමහර පරාමිතීන් effectively ලදායී ලෙස සංස්කරණය කිරීම, යෝධ ගණනය කිරීමේ මෙහෙයුමක් ක්‍රියාත්මක කිරීම සහ නව ප්‍රති results ල db තුළ ගබඩා කිරීම සිදු කරයි.
වොරන් පී

Answers:


117

මම ඔබේ අවශ්‍යතා ගැන එතරම් හුරුපුරුදු නැත, නමුත් සමහර විට දත්ත සමුදායේ එක් එක් දත්ත ලක්ෂ්‍යය ගබඩා කිරීම තරමක් අධික ලෙස මරා දැමීමකි. සෑම පුස්තකාලයක්ම වෙනම වාර්තාවක් ලෙස සම්බන්ධතා දත්ත ගබඩාවක ගබඩා කිරීමෙන් රූප පුස්තකාලයක් ගබඩා කිරීමේ ප්‍රවේශය ගැනීම හරියටම වාගේ ය.

සාමාන්‍ය රීතියක් ලෙස, දත්ත සමුදායන්හි ද්විමය දත්ත ගබඩා කිරීම බොහෝ විට වැරදිය. ගැටළුව විසඳීමට වඩා හොඳ ක්‍රමයක් සාමාන්‍යයෙන් තිබේ. ද්විමය දත්ත සම්බන්ධතා දත්ත ගබඩාවේ ගබඩා කිරීම සහජයෙන්ම වැරදි නොවන අතර, බොහෝ විට අවාසි වාසි වලට වඩා වැඩිය. නමේ සඳහන් පරිදි සම්බන්ධතා දත්ත සමුදායන් සම්බන්ධතා දත්ත ගබඩා කිරීම සඳහා වඩාත් සුදුසු වේ. ද්විමය දත්ත සම්බන්ධ නොවේ. එය දත්ත සමුදායන් සඳහා ප්‍රමාණය (බොහෝ විට සැලකිය යුතු ලෙස) එකතු කරයි, ක්‍රියාකාරීත්වයට හානියක් විය හැකි අතර, වාර්තාගත බිලියනයක MySQL අවස්ථා පවත්වා ගැනීම පිළිබඳ ප්‍රශ්න වලට තුඩු දිය හැකිය. ශුභාරංචිය නම් ද්විමය දත්ත ගබඩා කිරීම සඳහා විශේෂයෙන් සුදුසු දත්ත සමුදායන් තිබීමයි. ඒවායින් එකක්, සෑම විටම පහසුවෙන් නොපෙනෙන අතර, ඔබේ ගොනු පද්ධතියයි! ඔබේ ද්විමය ලිපිගොනු සඳහා නාමාවලියක් සහ ගොනු නම් කිරීමේ ව්‍යුහයක් ඉදිරිපත් කරන්න,

තවත් ප්‍රවේශයක් වනුයේ ඔබේ දත්ත ලක්ෂ්‍ය (සහ සමහර විට වර්ණාවලි) දත්ත සඳහා ලේඛන පදනම් කරගත් ගබඩා පද්ධතියක් භාවිතා කිරීම සහ ධාවනය සඳහා MySQL භාවිතා කිරීම (හෝ සමහර විට අනෙක් ඒවා මෙන් එකම ඩීබී තුළට ධාවනය කිරීම) ය.


5
ද්විමය දත්ත දත්ත ගබඩාවක ගබඩා කිරීම වැරදි ලෙස සලකන්නේ ඇයි? (අර්ධ වශයෙන්

16
ද්විමය දත්තවලට තනි තනිව වටිනාකමක් නොමැති නම්, එය අද්විතීය පේළියක් ලෙස ගබඩා නොකළ යුතුය. රූපයක් මත පික්සෙල් 500x325 අදාල නොවේ.

2
එය ඉතා හොඳ කරුණකි. අපට පසුව නැවත පිටතට ඇද ගැනීමට අවශ්‍ය වූ විට අපි බොහෝ විට අමු ලිපිගොනු තබා ගත යුතුය, නමුත් රූප ගබඩා කිරීමේ ප්‍රතිසමය විශිෂ්ට එකක් වේ. අපට සෑම දත්ත ලක්ෂ්‍යයක් සඳහාම ප්‍රවේශය අවශ්‍ය නොවනු ඇත (අපි උපරිම නිස්සාරණය නැවත නොකරන්නේ නම්), එබැවින් උපුටා ගත් සංඛ්‍යාන තොරතුරු ගබඩා කිරීම වඩා හොඳ වනු ඇත.
හැක්ස්නි

111

මම වරක් ඉතා විශාල (ටෙරාබයිට් +) MySQL දත්ත සමුදායක් සමඟ වැඩ කළෙමි. අප සතුව තිබූ විශාලතම මේසය වචනාර්ථයෙන් පේළි බිලියනයකට වඩා වැඩිය. මෙය MySQL 5.0 භාවිතා කරමින් සිටි නිසා දේවල් දියුණු වන්නට ඇත.

එය ක්‍රියාත්මක විය. MySQL බොහෝ විට දත්ත නිවැරදිව සැකසීය. එය අතිශයින්ම නොසැලකිලිමත් විය. (ඔබට ටෙරාබයිට් දත්තයක් සහිත සිග්මා මට්ටමේ හයක් ලබා ගැනීමට අවශ්‍ය නම්, MySQL භාවිතා නොකරන්න. අපි ඩීබීඒ සහ සීමිත අරමුදල් නොමැති ආරම්භයක් විය.)

දත්ත උපස්ථ කිරීම සහ ගබඩා කිරීම අභියෝගයක් විය. අපට අවශ්‍ය නම් මේසය යථා තත්වයට පත් කිරීමට දින කිහිපයක් ගතවනු ඇත.

පේළි මිලියන 10-100 අතර පරාසයක අපට වගු ගණනාවක් තිබුණි. මේසයට සම්බන්ධ වීමට සැලකිය යුතු කාලයක් ගතවන අතර එය සදහටම ගත වේ. එබැවින් අපි වගු 'ඇවිදීමට' ගබඩා කර ඇති ක්‍රියා පටිපාටි ලියා ඇති අතර ක්‍රියාවලිය 'හැඳුනුම්පත්' පරාසයට එරෙහිව සම්බන්ධ වේ. මේ ආකාරයට අපි වරකට පේළි 10-100,000 දත්ත සැකසෙමු (හැඳුනුම්පතේ 1-100,000 හා 100,001-200,000 යනාදිය සමඟ සම්බන්ධ වන්න). මෙය මුළු වගුවට සම්බන්ධ වීමට වඩා සැලකිය යුතු වේගයකින් සිදු විය.

ප්‍රාථමික යතුර මත පදනම් නොවන ඉතා විශාල වගු වල දර්ශක භාවිතා කිරීම ද වඩා දුෂ්කර ය. Mysql 5.0 දර්ශක කොටස් දෙකකින් ගබඩා කරයි - එය දර්ශක (ප්‍රාථමික දර්ශකය හැර) ප්‍රාථමික යතුරු අගයන්ට දර්ශක ලෙස ගබඩා කරයි. එබැවින් සුචිගත කළ විමසුම් කොටස් දෙකකින් සිදු කරයි: පළමුව MySQL දර්ශකයකට ගොස් එය සොයා ගැනීමට අවශ්‍ය මූලික යතුරු අගයන් එයින් ඇද ගනී, ඉන්පසු එම අගයන් කොතැනදැයි සොයා ගැනීමට ප්‍රාථමික යතුරු දර්ශකයේ දෙවන සොයා බැලීම සිදු කරයි.

මෙහි දැල වන්නේ ඉතා විශාල වගු සඳහා (මිලියන 1-200 ක් සහ පේළි) වගු වලට එරෙහිව සුචිගත කිරීම වඩා සීමා කිරීමයි. ඔබට අඩු, සරල දර්ශක අවශ්‍ය වේ. සෘජුවම දර්ශකයක නොමැති සරල තෝරාගත් ප්‍රකාශ පවා කිරීම කිසි විටෙකත් ආපසු නොඑනු ඇත. වගන්ති දර්ශක වලට පහර දිය යුතු හෝ ඒ ගැන අමතක කළ යුතු තැන.

නමුත් ඒ සියල්ල කියමින්, දේවල් ඇත්ත වශයෙන්ම ක්‍රියාත්මක විය. මෙම විශාල වගු සමඟ MySQL භාවිතා කිරීමට සහ ගණනය කිරීම් කිරීමට සහ නිවැරදි පිළිතුරු ලබා ගැනීමට අපට හැකි විය.

පේළි බිලියන 200 ක දත්ත විශ්ලේෂණයක් කිරීමට උත්සාහ කිරීම සඳහා ඉතා ඉහළ මට්ටමේ දෘඩාංග අවශ්‍ය වන අතර බොහෝ අත් තබා ගැනීම සහ ඉවසීම අවශ්‍ය වේ. ඔබට යථා තත්වයට පත් කළ හැකි ආකෘතියකින් දත්ත උපස්ථ කිරීම වැදගත් කාර්යයක් වනු ඇත.

මා එකඟ වන srini.venigalla පිළිතුර බව පිස්සු වගේ දත්ත සාමාන්ය අගයකට මෙතන හොඳ අදහසක් විය හැක. එතරම් දත්ත සහිත බහුවිධ වගු හරහා සම්බන්ධ වීමෙන් ගොනු වර්ග වල අවදානම ඔබට විවෘත වනු ඇති අතර එයින් අදහස් කරන්නේ ඔබේ සමහර විමසුම් නැවත කිසි දිනෙක නොපැමිණෙන බවයි. සරල, පූර්ණ සංඛ්‍යා යතුරු සමඟ අවලංගු කිරීම ඔබට සාර්ථකත්වයට වඩා හොඳ අවස්ථාවක් ලබා දෙනු ඇත.

අප සතුව තිබුණේ සියල්ල InnoDB ය. MyISAM එදිරිව InnoDB සම්බන්ධයෙන්: ප්‍රධාන දෙය නම් මේ දෙක මිශ්‍ර නොකිරීමයි. MySQL යතුරු සහ වෙනත් දත්ත හැඹිලිගත කරන ආකාරය නිසා ඔබට සැබවින්ම සේවාදායකයක් ප්‍රශස්තිකරණය කළ නොහැක. ඔබට හැකි නම් සේවාදායකයේ ඇති සියලුම වගු සඳහා එකක් හෝ වෙනත් එකක් තෝරන්න. MyISAM සමහර වේගවත් ගැටළු වලට උදව් විය හැකි නමුත් එය කළ යුතු සමස්ත DBA වැඩ සඳහා එය උදව් නොකරනු ඇත - එය ler ාතකයෙකු විය හැකිය.


1
5.0 සිට MySQL දර්ශක (...) දෙපාර්තමේන්තුවේ බොහෝ දියුණු විය. එය දැන් හැසිරෙන ආකාරය දැකීම සිත්ගන්නාසුළු වනු ඇත.
මුද්ද Ø

70

පිස්සු වගේ දත්ත සාමාන්‍යකරණය කිරීම

පිස්සු වැනි දත්ත සාමාන්‍යකරණය කිරීම මෙම අවස්ථාවේ දී නිවැරදි උපාය නොවිය හැකිය. දත්ත සාමාන්‍යකරණය කළ ස්වරූපයෙන් සහ ඔබේ යෙදුමට බෙහෙවින් ගැලපෙන ද්‍රව්‍යමය දර්ශන ස්වරූපයෙන් ගබඩා කිරීමෙන් ඔබේ විකල්ප විවෘතව තබන්න. මෙම වර්ගයේ යෙදුම්වල යතුර වන්නේ තාවකාලික විමසුම් ලිවීම නොවේ. දත්ත ආකෘතිකරණයට වඩා විමසුම් ආකෘති නිර්මාණය වැදගත් ය. ඔබගේ ඉලක්ක විමසුම් සමඟ ආරම්භ කර ප්‍රශස්ථ දත්ත ආකෘතිය වෙත වැඩ කරන්න.

Is this reasonable?

සියලු දත්ත සහිත අතිරේක පැතලි වගුවක් ද මම නිර්මාණය කරමි.

run_id | spectrum_id | data_id | <data table columns..> |

සියලුම විමසුම් වල මූලික ප්‍රභවය ලෙස මම මෙම වගුව භාවිතා කරමි. හේතුව, සම්බන්ධ වීමක් නොකිරීමයි. සුචිගත කිරීමකින් තොරව සම්බන්ධ වීම ඔබේ පද්ධතිය ඉතා භාවිතයට ගත නොහැකි වන අතර එවැනි විශාල ලිපිගොනු වල සුචිය තිබීමද ඒ හා සමානව භයානක වනු ඇත.

උපායමාර්ගය නම්, ඉහත වගුවේ පළමුවෙන් විමසීම, ප්‍රති results ල තාවකාලික වගුවකට දමන්න සහ ධාවනය සහ වර්ණාවලියේ වගු සමඟ තාවකාලික වගුවට සම්බන්ධ වී ඔබට අවශ්‍ය දත්ත ලබා ගැනීමයි.


ඔබේ ලිවීමේ අවශ්‍යතා එදිරිව කියවීමේ අවශ්‍යතා විශ්ලේෂණය කර තිබේද? SQL ඉවත් කර සම්මත නොවන දත්ත ගබඩා කිරීමේ යාන්ත්‍රණයන් වෙත යාම ඉතා පෙළඹවීමක් වනු ඇත. මගේ මතය අනුව, එය අවසාන උත්සාහය විය යුතුය.

ලිවීමේ වේගය වේගවත් කිරීම සඳහා, ඔබට හැන්ඩ්ලර් සොකට් ක්‍රමය උත්සාහ කිරීමට අවශ්‍ය විය හැකිය. පර්කෝනා, මට මතක නම්, හෑන්ඩ්ලර් සොකට් ඔවුන්ගේ ස්ථාපන පැකේජයේ ඇසුරුම් කරයි. (පර්කෝනා සමඟ කිසිදු සම්බන්ධයක් නැත!)

http://yoshinorimatsunobu.blogspot.com/2010/10/using-mysql-as-nosql-story-for.html


33

කෙටි පිළිතුර සුදුසුකම් ලත් ඔව් - පේළි ගණන නිවැරදි ක්‍රමෝපාය වර්ධනය වන විට, ඔබ තෝරා ගන්නා දත්ත වර්ග සහ මෙහෙයුම් වැදගත් වේ.

ඔබගේ දත්ත ඔබ කොතරම් සාමාන්‍යකරණය කරන්නේද යන්න ඔබ ගබඩා කර ඇති දත්ත මත සිදු කිරීමට අදහස් කරන මෙහෙයුම් මත රඳා පවතී. ඔබේ 'දත්ත ලක්ෂ්‍ය' වගුව විශේෂයෙන් ගැටළු සහගත බව පෙනේ - ඔබ කිසියම් වර්ණාවලියක සිට නවවන ලක්ෂ්‍යය වෙනත් ඕනෑම ස්ථානයක සංසන්දනය කිරීමට සැලසුම් කරමින් සිටිනවාද? එසේ නොවේ නම්, ඒවා වෙන වෙනම ගබඩා කිරීම වැරැද්දක් විය හැකිය. ඔබේ දත්ත ලක්ෂ්‍යයන් තනිවම නොසිටින නමුත් ඒවා ආශ්‍රිත වර්ණාවලීක්ෂයේ සන්දර්භය තුළ පමණක් අර්ථවත් කරන්නේ නම් ඔබට ප්‍රාථමික යතුරක් අවශ්‍ය නොවේ - වර්ණාවලියට විදේශීය යතුරක් සහ 'nth' තීරුවක් (ඔබේ 'දර්ශක තීරුව?) ප්‍රමාණවත් වේ. .

ඔබ විසින් සිදු කළ යුතු අන්තර් හා අභ්‍යන්තර වර්ණාවලි මෙහෙයුම් නිර්වචනය කර ඒවා ඉටු කර ගැනීම සඳහා ලාභම ක්‍රමය හඳුනා ගන්න. සමානාත්මතාවය අවශ්‍ය වන්නේ නම් ඒවා අවලංගු කළ හැකිය - සමහර විට ඔබේ මෙහෙයුම් සඳහා සහාය වන පූර්ව ගණනය කළ සංඛ්‍යාන පාර-දත්ත සමඟ. ඔබට තනි දත්ත ස්ථාන වෙත SQL ප්‍රවේශය අවශ්‍ය නම්, එක් එක් පේළියේ ප්‍රමාණය අවම ක්ෂේත්‍ර ගණනට අඩු කළ හැකි බවටත්, හැකි කුඩාම දත්ත සමුදාය අඩු කිරීමටත් වග බලා ගන්න.

මා පෞද්ගලිකව කළමනාකරණය කළ විශාලතම MySQL පේළි ඩොලර් මිලියන 100 කි. මෙම ප්‍රමාණයෙන් ඔබට ඔබේ පේළි තබා ගැනීමට අවශ්‍ය වන අතර එමඟින් ඔබේ ක්ෂේත්‍ර ස්ථාවර ප්‍රමාණයේ - මෙය සෑම පේළියකම ස්ථාවර ප්‍රමාණය මෙන් ගුණ කිරීමෙන් වගුවේ ඕනෑම පේළියක පිහිටීම කාර්යක්ෂමව ගණනය කිරීමට MySQL හට ඉඩ දෙයි (පොයින්ටර් අංක ගණිතය සිතන්න) - නිශ්චිත තොරතුරු රඳා පවතින්නේ ඔබ භාවිතා කිරීමට අදහස් කරන ගබඩා එන්ජිම මත ය. ඔබට එයින් ගැලවිය හැකි නම් MyISAM භාවිතා කරන්න, එහි විශ්වසනීයත්වය නොමැති දේ වේගයෙන් සෑදී ඇති අතර ඔබේ තත්වය තුළ එය ප්‍රමාණවත් වේ. VARCHAR වැනි විචල්‍ය ප්‍රමාණයේ ක්ෂේත්‍ර CHAR (n) සමඟ ප්‍රතිස්ථාපනය කර ඔබේ කියවීම් විමසුම් වල RTRIM () භාවිතා කරන්න.

ඔබේ වගු පේළි ස්ථාවර පළලකින් පසු ඔබට MySQL හි පූර්ණ දත්ත සමුදායන් ප්‍රවේශමෙන් තක්සේරු කිරීමෙන් බයිට් ගණන අඩු කළ හැකිය (සමහර ඒවා සම්මත නොවන). සෑම බයිට් 1 ක ඉතිරියක්ම බයිට් 4 ක INT එකක් බයිට් 3 ක මාධ්‍යයක් බවට පරිවර්තනය කිරීමෙන් ඔබට පේළි මිලියනයකට ඩොලර් 1MB ඉතිරි වේ - එනම් අඩු තැටි I / O සහ වඩාත් c ලදායී හැඹිලිය. ඔබට ගැලවිය හැකි කුඩාම දත්ත සමුදායන් භාවිතා කරන්න . පාවෙන ලක්ෂ්‍ය වර්ග ප්‍රවේශමෙන් තක්සේරු කර ඔබට බයිට් 8 ඩබල් වෙනුවට බයිට් 4 ෆ්ලෝට් හෝ <8 බයිට් ස්ථාවර ලක්ෂ්‍ය NUMERICs ආදේශ කළ හැකිදැයි බලන්න . ඔබ තෝරා ගන්නා ඕනෑම දෙයක් පසුව ඔබට හිරිහැර නොකරන බවට පරීක්ෂණ ක්‍රියාත්මක කරන්න.

ඔබගේ දත්ත කට්ටලයේ අපේක්ෂිත ගුණාංග සහ අවශ්‍ය මෙහෙයුම් මත පදනම්ව, ඔබේ අගයන්හි වඩාත් අසාමාන්‍ය කේතීකරණවල තවදුරටත් ඉතිරිකිරීම් තිබිය හැකිය (අපේක්ෂිත රටා / පුනරාවර්තන දර්ශකයක් ලෙස අගයන් සමූහයකට කේතනය කළ හැකි අමු දත්ත, අර්ථවත් ලෙස පමණක් දායක විය හැකි අමු දත්ත පාර-දත්ත සහ ඉවතලන්න, ආදිය) - විදේශීය, නොදැනුවත්ව, විනාශකාරී ප්‍රශස්තිකරණය වටී වුවද අනෙක් සෑම විකල්පයක්ම උත්සාහ කළ විට පමණි.

වැදගත්ම දෙය නම්, ඔබ කුමක් කළත් කමක් නැත, ඔබ පරිපූර්ණ ක්‍රමෝපායක් තෝරාගෙන ඇතැයි නොසිතන්න, පසුව වාර්තා මිලියන 10 ක් අන්ධ ලෙස බැහැර කිරීමට පටන් ගන්න. හොඳ නිර්මාණ පරිණාමය වීමට කාලය ගතවේ. විශාල නමුත් කළමනාකරණය කළ හැකි (1-5%) පරීක්ෂණ දත්ත කට්ටලයක් සාදන්න සහ ඔබේ යෝජනා ක්‍රමයේ නිරවද්‍යතාවය සහ ක්‍රියාකාරිත්වය සත්‍යාපනය කරන්න. විවිධ මෙහෙයුම් සිදුකරන ආකාරය බලන්න (http://dev.mysql.com/doc/refman/5.0/en/using-explain.html) සහ නිරන්තර මෙහෙයුම් සඳහා අනුග්‍රහය දැක්වීම සඳහා ඔබ ක්‍රමෝපාය සමතුලිත කරන බවට සහතික වන්න.

මම කෙටියෙන් කිව්වද? අපොයි. කෙසේ වෙතත්, වාසනාව!


23

දත්ත ලක්ෂ්‍ය දත්ත එක්ස්එම්එල් වෙතින් ඉවතට (ධාවන කාලය හා වර්ගය වැනි පාර-දත්ත වලට වඩා වෙනස්ව) සහ දත්ත සමුදා ආකෘතියකට ඉරා දැමීමට ඇති එකම හේතුව ඔබ අරා හරහා වර්ණාවලිය විශ්ලේෂණය කරන විට බව පෙනේ - එනම් සමහර විට සියල්ල සොයා ගැනීම එක්තරා අත්සනක් සහිතව ධාවනය වේ. ඔබගේ ගැටළු වසම ඔබ දන්නේ දැන් පමණි, නමුත් මෙය 96kHz දී සාම්පල 1 ක් සමඟ සාම්පල සංගීතය ගබඩා කිරීම හා සමාන විය හැකිය. දත්ත භාවිතා කරන ආකාරය වඩා විශාලත්වය ගැටලුව බව මට විශ්වාස නැත. දත්ත හරහා විමසීම, බීට්ල්ස් විසින් රචිත සියලුම ගීත හරහා ගීතයට මිනිත්තු 2 ක සාපේක්ෂ විස්තාරයක් ඇසීමට සමාන වේ. සිදු කළ හැකි ආකාරයේ විශ්ලේෂණ ඔබ දන්නේ නම්, මේවා සං als ා මත සිදු කිරීම සහ ධාවනය පිළිබඳ පාර-දත්තවල ගබඩා කිරීම වඩාත් අර්ථවත් වනු ඇත.

ඔබේ ප්‍රභව දත්ත විරල දැයි මට විශ්වාස නැත. දත්ත ගබඩාවේ වර්ණාවලියක් තුළ ශුන්‍ය නොවන ඇතුළත් කිරීම් පමණක් ඇතුළත් විය හැකි අතර මුල් XML හි ශුන්‍ය ඇතුළත් කිරීම් ඇතුළත් වන අතර එමඟින් ඔබේ මුළු පේළි ගණන ප්‍රභව දත්ත වලට වඩා බෙහෙවින් අඩු විය හැකිය.

එබැවින්, බොහෝ ප්‍රශ්න මෙන්, MySQL ඔබේ ආකෘතිය හැසිරවීම ගැන විමසීමට පෙර, පසුපසට ගොස් ආකෘතිය දෙස බැලීම සහ එය භාවිතා කරන්නේ කෙසේද යන්න තවමත් කාර්ය සාධනය ගැන කරදර වීමට වඩා යෝග්‍ය වේ.


ඔබගේ ප්‍රශ්න යාවත්කාලීනයන් සමාලෝචනය කිරීමෙන් පසුව, ද්විමය දත්ත BLOB ලෙස හෝ ගොනුවට යොමුකරන්නෙකු ලෙස ගබඩා කර ඇති ආකෘතියක් ප්‍රමාණවත් යැයි මම සිතමි. දත්ත පළමුවරට හඳුනාගත් සැලකිය යුතු උච්චයන් පිළිබඳ දත්ත ගබඩා කිරීම සඳහා ඔබේ ආකෘතිය වෙනස් කිරීමට කටයුතු කරන්න. කියවන්න.


18

මම දත්ත විශ්ලේෂණ සේවාවක් 50 ක් පමණ පවත්වාගෙන යන අතර, සෑම එකක්ම පේළි මිලියන 100 ට වඩා වගු රාශියක් අඩංගු වන අතර පේළි බිලියනයකට වඩා වැඩි නැඹුරුවක් ඇති ඒවා සමහර විට බිලියන දෙකක් දක්වා (එක් එක් සේවාදායකයේ).

මෙහි කාර්ය සාධනය හොඳයි. එය ඉතා සාමාන්‍ය දත්තයකි. කෙසේ වෙතත් - මෙය කියවීමේදී මා දක්වන ප්‍රධානතම කරුණ නම්, ඔබ මෙම වගු සඳහා පේළි බිලියන 4.2 ක සීමාව ඉක්මවා යනු ඇත (සමහර විට "ධාවනය" නොව අනෙක් දෙක විය හැකිය), එයින් අදහස් වන්නේ ඔබ INT වෙනුවට BIGINT භාවිතා කළ යුතු බවයි. ප්‍රාථමික / විදේශීය යතුරු.

INT හා සසඳන විට සුචිගත කළ තීරුවක BIGINT ක්ෂේත්‍ර සමඟ MySQL ක්‍රියාකාරිත්වය හාස්‍යජනක ලෙස භයානක ය . මෙම ප්‍රමාණයට වඩා වර්ධනය විය හැකි යැයි මා සිතූ මේසයක් සමඟ වරක් මෙය කිරීමේ වැරැද්ද මම කළ අතර, එය පේළි මිලියන සිය ගණනකට පහර දුන් පසු කාර්ය සාධනය ඉතා පහත් මට්ටමක පැවතුනි. මට අමු අංක නැත, නමුත් මම නරක යැයි පැවසූ විට, මම අදහස් කළේ වින්ඩෝස් එම් නරකයි.

මෙම තීරුව මූලික යතුර විය. අපි එය නැවත INT සහ presto magico බවට පරිවර්තනය කළෙමු, කාර්ය සාධනය නැවතත් හොඳයි.

එකල අපගේ සියලුම සේවාදායකයන් ඩේබියන් 5 සහ MySQL 5.0 සමඟ විය. අපි එතැන් සිට ඩේබියන් 6 සහ පර්කෝනා MySQL 5.5 වෙත යාවත්කාලීන කර ඇති අතර එතැන් සිට තත්වය දියුණු වන්නට ඇත. නමුත් මෙහි මගේ අත්දැකීම් මත පදනම්ව, නැත, එය ඉතා හොඳින් ක්‍රියාත්මක වනු ඇතැයි මම නොසිතමි.


18

එය ක්‍රියාත්මක වුවත් නැතත්, ඔබ සෑම විටම එකම මොනොලිතික් ගබඩා මාධ්‍යයක් සමඟ එකම ගැටලුවකට මුහුණ දෙනු ඇත: තැටි මන්දගාමී වේ. 100 MB / s (භ්‍රමණය වන මාධ්‍ය සඳහා ඉතා හොඳයි) 1TB වගුවක් කියවීමට පැය 3 ක් ගතවේ ; එය කිසිදු විශ්ලේෂණයක් හෝ සෙවීමක් හෝ වෙනත් ප්‍රමාදයන් උපකල්පනය නොකරයි.

සෑම "විශාල දත්ත" ස්ථාපනයක්ම පාහේ බෙදා හරින ලද දත්ත ගබඩාවක් භාවිතා කරන්නේ මේ නිසාය. ඔබේ ඩීබී ධාවනය කිරීම සඳහා එක් සුපිරි පුදුමාකාර පරිගණකයක් තැනීම සඳහා ඔබට 8 ගුණයක් මුදල් වියදම් කළ හැකිය, නමුත් ඔබට සමාන්තරව පරිලෝකනය කළ හැකි දත්ත විශාල ප්‍රමාණයක් තිබේ නම්, ඔබ සෑම විටම පාහේ ලාභදායී පරිගණක 8 හරහා බර බෙදා හැරීමට වඩා හොඳය.

හැඩූප් වැනි ව්‍යාපෘති විශේෂයෙන් මෙවැනි අරමුණු සඳහා ගොඩනගා ඇත. ඔබ මිල අඩු පරිගණක සමූහයක පොකුරක් ගොඩනඟා, ඒ සියල්ල හරහා දත්ත බෙදා හරිමින් සමාන්තරව විමසන්න. මෙම අදහස වටා ගොඩනගා ඇති දුසිම් භාගයක විසඳුම් වලින් එකක් පමණි, නමුත් එය ඉතා ජනප්‍රිය එකකි.


13

හ්ම් ... ඔබ මේ ආකාරයේ දත්ත ව්‍යුහයක් තෝරා ගැනීමට හේතු දෙකක් මට පෙනේ:

  • ඔබට ඇත්ත වශයෙන්ම අවශ්‍ය වන්නේ ඕනෑම දත්ත ලක්ෂ්‍ය විමසීම් හා එදිරිව
  • ඔබේ සියලු තර්කනයන් SQL හි සිදු කිරීමට ඔබ අදහස් කරයි

දැන්, මම යෝජනා කරන්නේ ඔබේ අවශ්‍යතා පිළිබඳව දීර් hard ලෙස සොයා බලා ඉහත උපකල්පනවලින් එකක්වත් සත්‍ය බව තහවුරු කර ගන්න. මේ දෙකම සත්‍ය නොවේ නම්, ඔබ කරන්නේ දේවල් මන්දගාමී කිරීමයි. මේ ආකාරයේ දත්ත කට්ටලයක් සඳහා, මම මුලින්ම යෝජනා කරන්නේ දත්ත ප්‍රවේශ වීමට අපේක්ෂා කරන්නේ කෙසේද, ඔබට කුමන ආකාරයේ නිරවද්‍යතාවයක් අවශ්‍යද යන්න සොයා ගැනීමටයි - ඉන්පසු ඒවා වටා ඔබේ දත්ත සමුදාය සැලසුම් කරන්න.

PS: ඔබට දත්ත ලක්ෂ්‍යයකට අවම වශයෙන් බයිට් 36 + 5 ක් අවශ්‍ය බව මතක තබා ගන්න, එබැවින් 200B දත්ත ලක්ෂ්‍ය සමඟ ඔබට අවම වශයෙන් TB 8.2 ක ඉඩ ප්‍රමාණයක් ලබා දිය යුතුය.

පීපීඑස්: ඔබට වගුවේ ඇති idතීරුව අවශ්‍ය නොවේ datapoints, PRIMARY KEY (spectrum_id, index)බොහෝ විට එය ප්‍රමාණවත් වේ ( indexවෙන් කර ඇති වචනයක් විය හැකි පරෙස්සම් වන්න )


12

සංස්කරණය කරන්න:

තනි තැටියක ගබඩා කර ඇති දත්ත සමඟ මෙය MySQL හි නොකරන්න. එක් මාධ්‍යයකින් එම දත්ත ප්‍රමාණය කියවීමට පැය ගණනක් ගත වේ. ඔබට පරිමාණය කළ යුතුය, ඉහළට නොවේ.

ඔබට effective ලදායී දත්ත විශ්ලේෂණයක් කිරීමට අවශ්‍ය නම් ඔබේ දත්ත අවලංගු කළ යුතුය. ඔබ මෙහි මාර්ගගත පද්ධතියක් නිර්මාණය නොකරයි. ඔබට සංඛ්‍යා පොඩි කිරීමට අවශ්‍යයි, ඒ අනුව සැලසුම් කරන්න.

පේළියට පහළින් මුල් පිළිතුර.


ඔබගේ විමසීම් අනුව පිළිතුර වෙනස් වේ, MySQL මෙම කාර්යය සඳහා හොඳම මෙවලම නොවිය හැකිය. ඔබට "ඉහළට" නොව "පිටතට" පරිමාණය කළ හැකි විසඳුම දෙස බැලීමට ඔබට අවශ්‍ය විය හැකිය. ඔබ යම් උත්සාහයක් දැරීමට කැමති නම් සමහර විට ඔබ හැඩූප් වැනි සිතියම් අඩු කිරීමේ විසඳුමක් සොයා බැලිය යුතුය.

ඔබට තවත් තාවකාලික විමසුම් කිරීමට අවශ්‍ය නම් ගූගල් හි BigQuery විසඳුම ඔබට හොඳ සුදුසුකමක් වනු ඇත. ගූගල් අයි / ඕ 2012 වෙතින් අදාළ ඉදිරිපත් කිරීම: බිග්වෙයාර් සමඟ විශාල දත්ත පොඩි කිරීම

ඉතින්, විසඳුම රඳා පවතින්නේ මෙය එක් වෙඩි පහරක් නම් සහ ඔබට තාවකාලික විමසුම් සඳහා සාධාරණ ලෙස සහාය දැක්වීමට අවශ්‍ය නම්.


9

කිසිවෙකු මගේ යෝජනාව සඳහන් කර නැත. විශාල වශයෙන් තියුණු වූ MySQL විසඳුම් දෙස බලන්න . උදාහරණයක් ලෙස, මෙම ඉහළ පිළිගැනීමක් ඇති tumblr ඉදිරිපත් කිරීම බලන්න .

සංකල්පය:

  • එක් අමතර විශාල දත්ත සමුදායක් වෙනුවට
  • මුල් දත්තවල කොටස් රඳවාගෙන සිටින බොහෝ කුඩා ඒවා භාවිතා කරන්න

මේ අනුව ඔබට සිරස් කාර්ය සාධනය වැඩි දියුණු කිරීමට උත්සාහ කරනවා වෙනුවට තිරස් අතට පරිමාණය කළ හැකිය. ගූගල් BigTable හා GFS ද දත්ත ගබඩා කිරීමට, සහ විමසුම් petabytes කිරීමට තිරස් අතට පරිමාණය කළ හැකි ගැටිති ලාභ භාවිතා කරයි.

කෙසේ වෙතත්, ඔබට විවිධ කැබලි හරහා විමසුම් ක්‍රියාත්මක කිරීමට අවශ්‍ය නම් කරදර ඇති වේ.


කවුරුහරි කැමති නම්, මම මීට ටික කලකට පෙර හෙලෝ-වර්ල්ඩ් ෂාර්ඩිං යෙදුමක් ඉදිරිපත් කළෙමි. එය බ්ලොග් සටහනක මෙහි සාකච්ඡා කෙරේ . මම RavenDB සහ C # භාවිතා කළ නමුත් විස්තර අදාල නොවන අතර අදහස සමාන වේ.


7

දත්ත ගබඩා කිරීමට යන්නේ කුමන ආකාරයේ යන්ත්‍රයක් මතද? එය හවුල් ගබඩා උපාංගයක්ද?

ඔබගේ විමසුම් කාලය නියම කරන අවසාන සාධකය වනුයේ ඔබේ දෘ hard තැටි ය. දත්ත සමුදායන් සහ ඒවායේ විමසුම් ප්‍රශස්තකරණයන් නිර්මාණය කර ඇත්තේ තැටි I / Os ගණන හැකිතාක් අඩු කිරීමට ය. ඔබට ඇත්තේ වගු 3 ක් පමණක් බැවින් මෙය විශ්වාසදායක ලෙස සිදු කෙරේ.

දෘ d තැටියේ කියවීමේ / ලිවීමේ වේගය මතක වේගයට වඩා 200-300 ගුණයකින් අඩු වේ. ඉතා වේගවත් ප්‍රමාදයකින් හා වේගයෙන් කියවීමේ හා ලිවීමේ වේගය සහිත දෘ d තැටි සොයා බලන්න. මෙම සියලු දත්ත එක් 2-ටීබී ඩ්‍රයිව් එකක තිබේ නම්, විමසීම් අවසන් වන තෙක් ඔබ බොහෝ කාලයක් බලා සිටිනු ඇත. හාඩ් ඩ්‍රයිව් ප්‍රමාදය මිලි තත්පර 10-15 ක් වන අතර මතක ප්‍රමාදය නැනෝ තත්පර 10 ට වඩා අඩුය. හාඩ් ඩ්‍රයිව් ප්‍රමාද වීම මතක ප්‍රමාදයට වඩා 1000-2000x මන්දගාමී විය හැකිය. දෘ drive තැටියේ යාන්ත්‍රික හස්තය චලනය කිරීම මෙම සමස්ත පද්ධතියේම ඉතාමත්ම සුළු දෙයකි.

ඔබට කොපමණ RAM ප්‍රමාණයක් තිබේද? 16 GB? එය වාර්තා 32 ක් තබා ගැනීමට ඔබට ඉඩ සලසයි. ඔබට ලිපිගොනු 16000 ක් ඇත. ඔබ සියලු දත්ත ස්ථාන රේඛීයව පරිලෝකනය කිරීමට යන්නේ නම්, ඔබට සෙවීමේ වේලාවෙන් තත්පර 5-10 ක් පහසුවෙන් අවසන් විය හැකිය. 50mb / s හුවමාරු අනුපාතයට සාධකය? පැය 7 ක් පමණ. මීට අමතරව, තාවකාලිකව සුරකින ලද ඕනෑම දත්තයක් නව දත්ත කියවීමට ඉඩ සලසා දීම සඳහා දෘ d තැටියේ ගබඩා කළ යුතුය.

ඔබ වෙනත් පරිශීලකයින් සක්‍රියව භාවිතා කරන හවුල් ගබඩා උපාංගයක් භාවිතා කරන්නේ නම් ... ඔබගේ හොඳම ඔට්ටුව රාත්‍රියේදී සියල්ල ක්‍රියාත්මක කිරීමට යන්නේ ය.

කැදැලි විමසුම් ගණන අඩු කිරීම ද හොඳින් උපකාරී වේ. කැදැලි විමසීම් මඟින් තාවකාලික වගු ඇති වන අතර එමඟින් ඔබේ දෘ d තැටිය තව තවත් විනාශ වේ. ඔබේ දෘ hard තැටියේ ඔබට විශාල ඉඩ ප්‍රමාණයක් ඇතැයි මම විශ්වාස කරමි.

විමසුම් ප්‍රශස්තිකරණයට වරකට විමසුම් 1 ක් පමණක් බැලිය හැකිය. එබැවින් කැදැලි තෝරාගත් ප්‍රකාශ ප්‍රශස්තිකරණය කළ නොහැක. කෙසේ වෙතත්, නිශ්චිත කැදැලි විමසුමක ප්‍රති data ලයක් ලෙස කුඩා දත්ත කට්ටලයක් ආපසු ලැබෙනු ඇතැයි ඔබ දන්නේ නම්, එය තබා ගන්න. විමසුම් ප්‍රශස්තිකරණය හිස්ටෝග්‍රැම් සහ දළ උපකල්පන භාවිතා කරයි, ඔබ දත්ත සහ විමසුම ගැන යමක් දන්නේ නම් ඉදිරියට ගොස් එය කරන්න.

ඔබේ දත්ත තැටියේ ගබඩා කර ඇති ආකාරය ගැන ඔබ වැඩි වැඩියෙන් දැන ගන්නා තරමට ඔබේ විමසුම් ලිවීමට ඔබට හැකි වේ. සෑම දෙයක්ම ප්‍රාථමික යතුර මත අනුපිළිවෙලින් ගබඩා කර ඇත්නම්, කැදැලි විමසුමකින් ආපසු ලබා දුන් ප්‍රාථමික යතුරු වර්ග කිරීම ප්‍රයෝජනවත් විය හැකිය. එසේම, ඔබට කලින් විශ්ලේෂණය කිරීමට අවශ්‍ය දත්ත කට්ටල සමූහය අඩු කළ හැකි නම්, එය කරන්න. ඔබේ පද්ධතිය මත පදනම්ව, ඔබ එක් ගොනුවකට දත්ත හුවමාරුවෙන් තත්පර 1 ක් පමණ බලයි.

ඔබ නාම අගයන් (වර්චර්ස්) වෙනස් කිරීමට යන්නේ නම්, මම එය උපරිම ප්‍රමාණයෙන් දත්ත සමුදායකට වෙනස් කරමි, එය ඛණ්ඩනය වීම වලක්වනු ඇති අතර වෙළඳාම නතර කිරීම තවත් බයිට් කිහිපයක් පමණි. උපරිම 100 ක් සහිත NVARCHAR එකක් විය හැකිය.

වගුව අවලංගු කිරීම පිළිබඳ අදහස් දැක්වීම් තරම්. දත්ත ලක්ෂ්‍ය විශාල කණ්ඩායම්වල (සමහර විට වර්ණාවලීක්ෂයක් ලෙස) ගබඩා කර පයිතන් හෝ දත්ත සමුදාය සමඟ අන්තර්ක්‍රියා කරන භාෂාවකින් දත්ත විශ්ලේෂණය කිරීම වඩාත් සුදුසු යැයි මම සිතමි. ඔබගේ SQL-Wizard හැර.


3
දෘ hard තැටියට එදිරිව මතක ප්‍රමාදයෙහි විශාල වෙනස ඔබ අවධාරණය කරන නමුත් ඔබේ සංඛ්‍යා 1000 ක සාධකයකින් අක්‍රිය වේ. දෘ hard තැටිවල ප්‍රමාදය මීටර් 10 ක් පමණ වන අතර මතක 10ns නම්, ප්‍රමාදයන් 1,000 ක සාධකයකින් වෙනස් නොවන නමුත් සාධකයකි 1,000,000!
spectre256

6

මට එය මෙහි විස්තර කර ඇති පරිදි "සම්බන්ධතා තීරු ගබඩාවක්" වැනි දෙයක් අවශ්‍ය වන භාවිත අවස්ථාවක් ලෙස පෙනේ.

මම සැලසුම වරදවා වටහාගෙන ඇති නමුත් ඔබ මූලික වශයෙන් විශාල අරා එකතුවක් සමඟ කටයුතු කරන්නේ නම්, ඒවා සාමාන්‍ය පේළි-නැඹුරු වගු වල ගබඩා කිරීම යන්නෙන් අදහස් වන්නේ එක් එක් මූලද්‍රව්‍යය පෙත්තකට සමාන බවයි. පෙති සාමාන්‍ය ආකාරයකින් බැලීමට ඔබ උනන්දු වන්නේ නම්, එය අර්ථවත් කරයි, නමුත් ඔබ වරකට සම්පූර්ණ තීරු දෙස බලන්නේ නම් එය කාර්යක්ෂමතාව අඩු වනු ඇත.

අරා ලබා ගැනීමේදී, ඔබේ සාමාන්‍යකරණය වීමේ ප්‍රති ing ලයක් ලෙස වෙනත් වගුවක් සමඟ එයට සම්බන්ධ වීමට ඔබට අවශ්‍ය නොවනු ඇත පමණක් නොව, ඔබට ශ්‍රේණිය හැෂ් එකකට වඩා අරාව ලෙස ලබා ගත හැකිය.

මම ඇත්ත වශයෙන්ම ගැටලුව වරදවා වටහාගෙන ඇති අතර, මම නිශ්චිත විසඳුමක් යෝජනා නොකරමි.

මෙන්න වර්තමාන හෝ යෙදවිය හැකි විසඳුමක් නොවුනත් අදාළ විය හැකි තවත් කතාවක් .


6

ඔබේ වගුව උත්සාහ කර කොටස් කිරීමට මම නිර්දේශ කරමි. අපට තනි වගුවක මිලි ලීටර් 80 කට වඩා තිබේ (කොටස් වෙළඳපල දත්ත) සහ එය ඉක්මණින් ප්‍රවේශ වීමට කිසිදු ගැටළුවක් නොමැත.

ඔබේ දත්ත සෙවීමට ඔබ අදහස් කරන ආකාරය මත පදනම්ව, ඔබ ඔබේ කොටස් සැලසුම් කළ යුතුය. අප නිශ්චිත දිනයන් විමසන නිසා දිනය අනුව අපගේ නඩුවේදී හොඳින් ක්‍රියා කරයි.

http://dev.mysql.com/doc/refman/5.1/en/partitioning-limitations.html

http://www.slideshare.net/datacharmer/mysql-partitions-tutorial


5

ඔව් නමුත්...

පේළි බිලියන 2 ක් ඇති වගු සමඟ මම වැඩ කර ඇත්තෙමි. කෙසේ වෙතත් PK භාවිතා කරන විමසුම් පමණක් වේගවත් වනු ඇතැයි අපේක්ෂා කරන ලදී.

වැදගත්ම දෙය නම්, දෘඩාංගවල මුළු වගු මතකයට ගැලපෙන තරම් RAM ප්‍රමාණයක් තිබීමයි. එය ගැටළුවක් බවට පත් වූ විට (එකල 96GB උපරිම විය), සිරස් කොටස් කිරීම සඳහා ගොස්, සෑම යන්ත්‍රයකම මේස කට්ටල ප්‍රමාණය මතකයට සරිලන තරම් කුඩා ලෙස තබා ගත්තේය. එසේම, යන්ත්‍ර 10Gb ෆයිබර් හරහා සම්බන්ධ කර ඇති බැවින් ජාල ප්‍රතිදානය එතරම් ගැටළුවක් නොවීය.

BTW. ඔබේ ක්‍රමෝපාය NoSQL විසඳුමට ගැලපෙන දෙයක් මෙන් පෙනේ, run_idවර්ණාවලීක්ෂය සඳහා හැෂිං යතුරක් ලෙස සහ spectrum_idදත්ත ලක්ෂ්‍ය සඳහා හැෂිං යතුර ලෙස භාවිතා කරයි .


4

මම මෙම මාතෘකාව ගැන මගේ බ්ලොග් අඩවියේ ලියා ඇත: http://www.tocker.ca/2013/10/24/improving-the-performance-of-large-tables-in-MySQL.html

සමහර ප්‍රධාන කරුණු නැවත කිරීමට:

  • B- ගස් විශාල වන විට ඒවා පිරිහී යන අතර මතකයට නොගැලපේ (MySQL මෙහි තනිවම නොවේ).
  • InnoDB හි සමහර කාර්ය සාධනය පවත්වා ගැනීමට උපකාරී වන විශේෂාංග කිහිපයක් ඇත (බෆරින් වෙනස් කිරීම; කලින් හැඳින්වූයේ 'ඇතුළු කිරීමේ බෆරය' ලෙසිනි).
  • කොටස් කිරීම ද උපකාරී වේ.

මගේ ලිපියේ අදහස් දැක්වීමේදී ටිම් කැලගන් මේ හා සම්බන්ධ විය: http://www.tokutek.com/resources/benchmark-results/benchmarks-vs-innodb-hdds/#iiBench

එයින් පෙන්වන්නේ අයිබෙන්ච් මිණුම් ලකුණ භාවිතා කරමින් පේළි බිලියනයක් ඇතුළත් කිරීමයි.

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.