ගෝලීය දත්ත සමුදායකට වඩා වෙනස් වන්නේ කෙසේද?


253

ගෝලීය රාජ්‍යය පිළිබඳ එතරම් නපුරු දේ කුමක්දැයි විමසමින් මම මේ පැරණි ප්‍රශ්නය හරහා දිව ගිය අතර, ඉහළින්ම ඡන්දය දුන්, පිළිගත් පිළිතුර, ගෝලීය විචල්‍යයන් සමඟ ක්‍රියා කරන කිසිදු කේතයක් ඔබට විශ්වාස කළ නොහැකි බව ප්‍රකාශ කරයි, මන්ද වෙනත් කේතයක් පැමිණ එහි වෙනස් කළ හැකිය. අගය වෙනස් වන අතර දත්ත වෙනස් බැවින් ඔබේ කේතයේ හැසිරීම කුමක් වේදැයි ඔබ නොදනී! නමුත් මම එය දෙස බලන විට, එය ඇත්තෙන්ම දුර්වල පැහැදිලි කිරීමක් යැයි මට සිතිය නොහැක, මන්ද එය දත්ත සමුදායක ගබඩා කර ඇති දත්ත සමඟ වැඩ කිරීමට වඩා වෙනස් වන්නේ කෙසේද?

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

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


118
ප්‍රවීණ සාමාජිකයන් මෙම
ප්‍රවාදයට

10
යෙදුමක දී, ඔබ සාමාන්‍යයෙන් දත්ත සමුදායට ප්‍රවේශ වීමට මධ්යන්යයක් ලබා දෙයි, මෙම මධ්යන්ය දත්ත සමුදායට ප්රවේශ වීමට අවශ්ය කාර්යයන් වෙත ලබා දෙනු ලැබේ. ගෝලීය විචල්‍යයන් සමඟ ඔබ එය නොකරයි, ඔබ දන්නවා ඔවුන් අත ළඟ බව. ඒක එතනම ප්‍රධාන වෙනසක්.
ඇන්ඩි

45
ගෝලීය රාජ්‍යය යනු අත්තනෝමතික යෙදුම් ගණනාවකට සමගාමීව ප්‍රවේශ විය හැකි අසීමිත තීරු සහිත තනි පේළියක් සහිත තනි වගුවක් සහිත තනි දත්ත ගබඩාවක් තිබීම හා සමානයි.
බෙවින්ක්

42
දත්ත සමුදායන් ද නපුරු ය.
ස්ටිග් හෙමර්

27
ඔබ මෙහි ඉදිරිපත් කරන තර්කය "පෙරළා" දමා අනෙක් දිශාවට යාම විනෝදජනක ය. තවත් ව්‍යුහයකට දර්ශකයක් ඇති ව්‍යුහයක් තාර්කිකව එක් වගුවක එක් පේළියක ඇති විදේශීය යතුරක් වන අතර එය තවත් වගුවක තවත් පේළියකට යතුරු කරයි. ඇවිදීමේ සම්බන්ධිත ලැයිස්තු ඇතුළුව ඕනෑම කේතයක් සමඟ වැඩ කිරීම දත්ත සමුදායක දත්ත හැසිරවීමට වඩා වෙනස් වන්නේ කෙසේද? පිළිතුර: එසේ නොවේ. ප්‍රශ්නය: එසේ නම්, අපි මෙවැනි විවිධ මෙවලම් භාවිතයෙන් මතක දත්ත ව්‍යුහයන් සහ දත්ත සමුදා දත්ත ව්‍යුහයන් හසුරුවන්නේ ඇයි? පිළිතුර: මම ඇත්තටම දන්නේ නැහැ! හොඳ නිර්මාණයකට වඩා ඉතිහාසයේ අහම්බයක් සේ පෙනේ.
එරික් ලිපර්ට්

Answers:


118

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

නමුත් මෙම ගැටළුව තවදුරටත් සොයා බැලීමේදී, සාමාන්‍ය වස්තු-නැඹුරු යෙදුමක ගෝලීය තත්වය සහ දත්ත සමුදායක් තුළ පවතින රාජ්‍යය අතර වෙනස්කම් තිබේ. කෙටියෙන් කිවහොත්, මේවායින් වඩාත්ම වැදගත් වන්නේ:

  • වස්තු-නැඹුරු පද්ධති මඟින් වස්තුවක් මුල් වර්ගයේ උප ප්‍රභේදයක් වන තාක් කල් වෙනත් පන්තියකින් ආදේශ කිරීමට ඉඩ ලබා දේ. මෙය දත්ත පමණක් නොව හැසිරීම වෙනස් කිරීමට ඉඩ දෙයි .

  • යෙදුමක ගෝලීය තත්වය සාමාන්‍යයෙන් දත්ත සමුදායක් කරන බවට සහතික වන සහතිකයක් සපයන්නේ නැත - ඒ සඳහා ස්ථාවර තත්වයක් ඔබ දකින ගනුදෙනු නොමැත, පරමාණුක යාවත්කාලීන කිරීම් ආදිය.

මීට අමතරව, දත්ත සමුදා තත්වය අත්‍යවශ්‍ය නපුරක් ලෙස අපට දැකිය හැකිය; එය අපගේ පද්ධති වලින් තුරන් කළ නොහැක. කෙසේ වෙතත් ගෝලීය රාජ්‍යය අනවශ්‍යය. අපට එය මුළුමනින්ම තුරන් කළ හැකිය. දත්ත සමුදායක් සමඟ ඇති ගැටලු එතරම්ම නරක වුවත්, අපට තවමත් ඇති විය හැකි ගැටළු සමහරක් ඉවත් කළ හැකි අතර අර්ධ විසඳුමක් විසඳුමකට වඩා හොඳය.


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

24
Av ඩේවිඩ් හැමන් මම ඇත්ත වශයෙන්ම ඔන්ලයින් ක්‍රීඩාවක් සඳහා ලෝක රාජ්‍ය අනුකරණයක් සඳහා වැඩ කර ඇති අතර එය පැහැදිලිවම ඔබ කතා කරන යෙදුම් කාණ්ඩයට අයත් වන අතර එහි දී පවා මම ඒ සඳහා ගෝලීය රාජ්‍යය භාවිතා නොකරමි. ගෝලීය රාජ්‍යය භාවිතා කිරීමෙන් යම් කාර්යක්ෂමතාවයක් ලබා ගත හැකි වුවද, ගැටළුව වන්නේ ගෝලීය රාජ්‍යය පරිමාණය කළ නොහැකි වීමයි. එය බවට පත් වෙයි දුෂ්කර ඔබ බහු-පොටවල් ගෘහ නිර්මාණ ශිල්පය වෙත තනි-පිලිතුරු පොටවල් සිට ගමන් වරක් භාවිතා කිරීමට. ඔබ NUMA ගෘහ නිර්මාණ ශිල්පයට ගිය විට එය අකාර්යක්ෂම වේ . ඔබ බෙදා හරින ලද ගෘහ නිර්මාණ ශිල්පයකට ගිය විට එය කළ නොහැකි ය . ඔබ උපුටා දක්වන පත්‍රය ආරම්භ වන්නේ ...
ජූල්ස්

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

19
මම හිතන්නේ දත්ත සමුදා තත්වය “අත්‍යවශ්‍ය නපුරක්” ලෙස හැඳින්වීම ටිකක් දිගු කිරීමක්. මම කිව්වේ, රාජ්‍යය නපුරු වුණේ කවදා සිටද? දත්ත සමුදායක සම්පූර්ණ අරමුණ රාජ්‍යයයි. රාජ්‍යය යනු තොරතුරු ය. රාජ්යයක් නොමැතිව, ඔබ සතුව ඇත්තේ ක්රියාකරුවන් පමණි. ක්‍රියාත්මක වීමට යමක් නොමැතිව ක්‍රියාකරුවන්ට ඇති හොඳ කුමක්ද? ඒ රාජ්‍යයට කොහේ හරි යන්න වෙනවා. දවස අවසානයේදී, ක්‍රියාකාරී ක්‍රමලේඛනය යනු අවසානයක් සඳහා වූ මාධ්‍යයක් පමණක් වන අතර විකෘති වීමට රාජ්‍යයක් නොමැතිව කිසිසේත් කිසිවක් කිරීමේ තේරුමක් නැත. එය කේක් එක අත්‍යවශ්‍ය නපුරක් ලෙස හඳුන්වන බේකරියක වැනි ය - එය නපුරක් නොවේ. එය සමස්ත කාරණයයි.
ජේ ...

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

75

පළමුව, ඔබ සම්බන්ධ කළ ප්‍රශ්නයට පිළිගත් පිළිතුර මත පදනම්ව ගෝලීය විචල්‍යයන් සමඟ ඇති ගැටළු මොනවාද?

ඉතා කෙටියෙන්, එය වැඩසටහන් තත්වය අනපේක්ෂිත කරයි.

දත්ත සමුදායන් යනු බොහෝ විට ACID අනුකූල වේ. දත්ත ගබඩාවක් අනපේක්ෂිත හෝ විශ්වාස කළ නොහැකි බවට පත්කිරීමට යටින් පවතින ගැටළු වලට ACID විශේෂයෙන් ආමන්ත්‍රණය කරයි.

තවද, ඔබගේ කේතය කියවීමේ හැකියාව ගෝලීය තත්වය රිදවයි.

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

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

දත්ත සමුදායන් සාමාන්‍යයෙන් ගෝලීය විචල්‍යයන්ට වඩා වෙනස් දත්ත ආදර්ශනය කරයි, නමුත් එය මොහොතකට පසෙකට දමා, දත්ත සමුදායන් බිම් මට්ටමේ සිට නිර්මාණය කර ඇත්තේ ACID අනුකූල දත්ත ගබඩාවක් ලෙස වන අතර එය ගෝලීය විචල්‍යයන් සමඟ ඇති බොහෝ ගැටළු අවම කරයි.


4
+1 ඔබ කියන්නේ දත්ත සමුදායන්හි ගනුදෙනු ඇති බැවින් ගෝලීය රාජ්‍යයේ විවිධ කොටස් පරමාණුකව කියවීමට හා ලිවීමට හැකි වීමයි . ගෝලීය විචල්යයන් භාවිතා පමණක් මග හැරිය හැකි හොඳ අදහසක්, එක් එක් තොරතුරු සම්පූර්ණයෙන්ම ස්වාධීන කෑල්ලක්.
l0b0

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

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

1
@RM ඔහු කරුණු දෙකක් සඳහන් කළේය. ඔබ ඉවත දැමූ දෙයින් පළමුවැන්න ආමන්ත්‍රණය කළ හැකිය (වැඩසටහන් තත්වය අනාවැකි කිව නොහැකි), නමුත් එය දෙවැන්න අමතන්නේ නැත (ඔබේ කේතයේ කියවීමේ හැකියාව). ඇත්ත වශයෙන්ම, එය ඔබගේ වැඩසටහනේ කියවීමේ හැකියාව තවත් නරක අතට හැරෙනු ඇත: P.
රිවාක්

1
@RM ඔබේ ක්‍රියාකාරිත්වය ස්ථාවරව ක්‍රියාත්මක වේ, ඔව්. නමුත් මේ අතර වෙනත් දෙයක් ගෝලීය විචල්‍යය වෙනස් කර තිබේද යන ප්‍රශ්නය ඔබට ඇති අතර, එම වෙනස් කිරීම ඔබ එයට ලියන දෙයට වඩා වැදගත් වේ. ඇත්ත වශයෙන්ම දත්ත සමුදායන් තුළ ද එකම ගැටලුවක් තිබිය හැකිය.
ග්‍රැහැම්

45

මම නිරීක්ෂණ කිහිපයක් ඉදිරිපත් කරමි:

ඔව්, දත්ත සමුදායක් යනු ගෝලීය තත්වයයි.

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

ගෝලීය විචල්‍යයක් භාවිතා කිරීමෙන් ඇති විය හැකි ප්‍රතිවිපාකවලින් එකක් නම්, වෙනස් “මොඩියුල” දෙකක් එම විචල්‍යය ඔවුන්ගේ සුවිශේෂී අරමුණු සඳහා භාවිතා කරනු ඇත. ඒ තාක් දුරට, දත්ත සමුදා වගුවක් ද වෙනස් නොවේ. එය එකම ගැටලුවකට ගොදුරු විය හැකිය.

හ්ම් ... මෙන්න කාරණය:

මොඩියුලයක් කිසියම් ආකාරයකින් බාහිරව ක්‍රියාත්මක නොවන්නේ නම්, එය කිසිවක් නොකරයි.

ප්‍රයෝජනවත් මොඩියුලයකට දත්ත ලබා දිය හැකිය, නැතහොත් එය සොයාගත හැකිය. තවද, එයට දත්ත ආපසු ලබා දිය හැකිය, නැතහොත් එය තත්වය වෙනස් කළ හැකිය . එහෙත්, එය යම් ආකාරයකින් බාහිර ලෝකය සමඟ අන්තර්ක්‍රියා නොකරන්නේ නම්, එය කිසිවක් නොකරනු ඇත.

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

තව දුරටත්, තථ්‍ය-ලෝක යෙදුම්වල, දත්ත පවතින බැවින් එය විවිධ මෙහෙයුම් මඟින් කියවා යාවත්කාලීන කළ හැකිය . සමහර ගැටළු අගුල් සහ ගනුදෙනු වලක්වනු ලැබේ. එහෙත්, මෙම මෙහෙයුම් ප්‍රතිපත්තිමය වශයෙන් එකිනෙකා සමඟ ගැටීම වැළැක්වීම , දවස අවසානයේදී, හුදෙක් පරෙස්සමින් සිතීම ඇතුළත් වේ . (සහ වැරදි කිරීම ...)

නමුත් අපි සාමාන්‍යයෙන් ගෝලීය රාජ්‍යය සමඟ සෘජුව කටයුතු නොකරමු .

යෙදුම දත්ත ස්ථරයේ (SQL හෝ වෙනත් ඕනෑම දෙයක්) ජීවත් නොවන්නේ නම්, අපගේ මොඩියුල සමඟ වැඩ කරන වස්තූන් ඇත්ත වශයෙන්ම හවුල් ගෝලීය රාජ්‍යයේ පිටපත් වේ. සැබෑ, හවුල් රාජ්‍යයට කිසිදු බලපෑමක් නොමැතිව අපට අවශ්‍ය ඕනෑම දෙයක් අපට කළ හැකිය .

තවද, අපට ලබා දී ඇති දත්ත වෙනස් වී නැතැයි යන උපකල්පනය යටතේ, එම ගෝලීය රාජ්‍යය විකෘති කිරීමට අපට අවශ්‍ය අවස්ථාවන්හිදී, අපට සාමාන්‍යයෙන් අපගේ දේශීය ගෝලීයයන් මත සිදු කළ හැකි එකම ආකාරයේ අගුලු දැමීමක් කළ හැකිය.

අවසාන වශයෙන්, අප සාමාන්යයෙන් දත්ත සමුදායන් සමග විවිධ දේ අපට වඩා කරන්න සමහරවිට නරක globals සමග.

නපුරු, බිඳුණු ගෝලීය පෙනුම මේ වගේ ය:

Int32 counter = 0;

public someMethod() {
  for (counter = 0; counter < whatever; counter++) {
    // do other stuff.
  }
}

public otherMethod() {
  for (counter = 100; counter < whatever; counter--) {
    // do other stuff.
  }
}

අපි ක්‍රියාවලිය තුළ / ක්‍රියාකාරී දේවල් සඳහා දත්ත සමුදායන් භාවිතා නොකරමු. එය දත්ත සමුදායේ මන්දගාමී ස්වභාවය සහ අපව වළක්වන සරල විචල්‍යයක සාපේක්ෂ පහසුව විය හැකිය: දත්ත සමුදායන් සමඟ අපගේ මන්දගාමී, අමුතු අන්තර්ක්‍රියාකාරිත්වය හුදෙක් අප histor තිහාසිකව විචල්‍යයන් සමඟ සිදු කර ඇති බොහෝ වැරදි සඳහා නරක අපේක්ෂකයින් බවට පත් කරයි .


3
දත්ත සමුදායක් තුළ "අපට ලබා දුන් දත්ත වෙනස් වී නැත" යනුවෙන් සහතික කළ හැකි ක්‍රමය (අපට උපකල්පනය කළ නොහැකි බැවින්) ගනුදෙනුවක් වනු ඇත.
l0b0

ඔව් ... එය "එකම ආකාරයේ අගුලු දැමීම" සමඟ ගම්‍ය විය යුතුය.
svidgen

නමුත්, දවස අවසානයේදී හොඳින් සිතා බැලීම අපහසු විය හැකිය.

ඔව්, දත්ත සමුදායන් ඇත්ත වශයෙන්ම ගෝලීය තත්වයකි - git හෝ ipfs වැනි දෙයක් භාවිතා කරමින් දත්ත බෙදා ගැනීමට එතරම් පෙළඹෙන්නේ එබැවිනි.
විලියම් පේන්

21

මෙම මූලික ප්‍රකාශයට මම එකඟ නොවෙමි:

ඔබේ වැඩසටහන දත්ත සමුදායකින් දත්ත සමඟ වැඩ කරන විට, ඔබේ පද්ධතියේ වෙනත් කේතයක් එය වෙනස් කරන්නේද, නැතහොත් සම්පූර්ණයෙන්ම වෙනස් වැඩසටහනක් එය වෙනස් කරන්නේද යන්න ඔබට ප්‍රශ්නයක් නොවේ.

මගේ ආරම්භක සිතුවිල්ල වූයේ "වාව්. යන්තම් වාව්" යන්නයි. මෙය හරියටම වළක්වා ගැනීමට උත්සාහ කිරීම සඳහා බොහෝ කාලයක් හා වෑයමක් වැය වේ - තවද එක් එක් යෙදුම සඳහා කුමන වෙළඳාම් සහ සම්මුතීන් ක්‍රියා කරයිද යන්න සොයා බැලීම. එය නොසලකා හැරීම ව්‍යසනය සඳහා වූ වට්ටෝරුවකි.

නමුත් මම වාස්තු විද්‍යාත්මක මට්ටමින් ඩයස්ග්‍රි කරමි. ගෝලීය විචල්‍යයක් යනු ගෝලීය රාජ්‍යයක් පමණක් නොවේ. ඕනෑම තැනක සිට විනිවිදභාවයෙන් ප්‍රවේශ විය හැකි ගෝලීය රාජ්‍යය එයයි. දත්ත සමුදායක් භාවිතා කිරීමට ප්‍රතිවිරුද්ධව ඔබට එයට හසුරුව තිබිය යුතුය - (ඔබ ගෝලීය විචල්‍යයක හැසිරවීමට වඩා ගබඩා නොකරන්නේ නම් ....)

උදාහරණයක් ලෙස ගෝලීය විචල්‍යයක් භාවිතා කිරීම මේ වගේ විය හැකිය

int looks_ok_but_isnt() {
  return global_int++;
}

int somewhere_else() {
  ...
  int v = looks_ok_but_isnt();
  ...
}

නමුත් දත්ත සමුදායක් සමඟ එකම දේ කිරීම එහි ක්‍රියාකාරිත්වය පිළිබඳව වඩාත් පැහැදිලිව කිව යුතුය

int looks_like_its_using_a_database( MyDB * db ) {
   return db->get_and_increment("v");
}

int somewhere_else( MyBD * db ) { 
   ...
   v = looks_like_its_using_a_database(db);
   ...
}

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

int looks_like_it_uses_explicit_state( MyState * state ) {
   return state->v++;
}


int somewhere_else( MyState * state ) { 
   ...
   v = looks_like_it_uses_explicit_state(state);
   ...
}

එබැවින් මම තර්ක කරන්නේ දත්ත සමුදායක් භාවිතා කිරීම ගෝලීය විචල්‍යයන් භාවිතා කරනවාට වඩා පැහැදිලි රාජ්‍යයක් භාවිතා කිරීම හා සමාන බවයි.


2
ඔව්, මම හිතුවේ OP කියූ විට එය සිත්ගන්නාසුළු බවයි: " දත්ත යනු කුමක්දැයි ඔබට ප්‍රශ්නයක් නැත; එය සමස්ත කාරණයයි " - අප ගණන් ගන්නේ නැත්නම් එය ගබඩා කරන්නේ ඇයි? විචල්ය හා දත්ත භාවිතා එහෙනම් අපි දැන් නැවතුම්: මෙහි චින්තනයේ සියලු දී . එය දේවල් වඩාත් සරල කළ යුතුය. "ලෝකය නවත්වන්න, මට ඉවත් වීමට අවශ්‍යයි!"

1
+1 එකම දත්ත සමුදායෙන් විවිධ නූල් හෝ යෙදුම් ලිවීම සහ කියවීම ප්‍රකට ගැටළු විශාල සංඛ්‍යාවක විභව ප්‍රභවයකි, එබැවින් දත්ත සමුදායේ හෝ යෙදුම් මට්ටමින් හෝ මේ සම්බන්ධයෙන් කටයුතු කිරීම සඳහා සෑම විටම උපාය මාර්ගයක් තිබිය යුතුය. දෙකම. එබැවින් ඔබ (යෙදුම් සංවර්ධකයා) දත්ත සමුදායෙන් කියවන හෝ ලියන වෙනත් අය ගැන තැකීමක් නොකරන බව නියත වශයෙන්ම සත්‍ය නොවේ.
ඇන්ඩ්‍රස් එෆ්

1
+1 පැත්තක සටහනක, මෙම පිළිතුර පරායත්ත එන්නත් කිරීම පිළිබඳව මා වඩාත් පිළිකුල් කරන දේ පැහැදිලි කරයි. එය මේ ආකාරයේ පරායත්තතා සඟවයි.
jpmc26

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

2
MmilLundberg නැත, ගැටලුව වන්නේ ඔබට ධූරාවලියක් ඇති විටය. පරායත්ත එන්නත් කිරීම ඉහළ ස්ථර වල කේතයෙන් පහළ ස්ථර වල පරායත්තතාවයන් සඟවයි, එමඟින් අන්තර්ක්‍රියා කරන්නේ කුමන දේවල්දැයි සොයා බැලීම අපහසු වේ. උදාහරණයක් ලෙස, මගේ පාලක පන්තිය භාවිතා කරන්නේ නම් සහ MakeNewThingරඳා පවතින්නේ නම්, මම දත්ත සමුදාය වෙනස් කරන බව මගේ පාලකයේ ඇති කේතයෙන් පැහැදිලි නැත. ඒ නිසා මම තවත් පන්ති දේ භාවිතා කරන්නේ නම් ඇත්ත වශයෙන්ම නසා ද ඩී.බී. මගේ වර්තමාන ගනුදෙනුව? DI වස්තුවක විෂය පථය පාලනය කිරීම ඉතා අපහසු කරයි. MakeNewThingInDbMakeNewThing
jpmc26

18

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

කෙසේ වෙතත්, දත්ත සමුදායන් වෙනස් කාරණයක් වන අතර, ඒවා නිර්මාණය කර ඇත්තේ කථා කිරීමට “ගෝලීයව” ප්‍රවේශ වීමේ අරමුණින් ය.

උදාහරණයක් වශයෙන්:

  • දත්ත සමුදායන් සාමාන්‍යයෙන් ගොඩනඟා ඇත්තේ ඒවාට ප්‍රවේශ වන භාෂාවට වඩා වැඩි වර්ගය සහ ව්‍යුහය වලංගු කිරීමෙනි
  • ගෝලීය වස්තුවක අවසාන තත්වය කෙබඳු වනු ඇත්දැයි සහතිකයක් නොමැති (නොගැලපෙන රාජ්‍යයන් වළක්වන) පදනම් විරහිත ගනුදෙනු පදනම් කරගත් දත්ත සමුදායන් පාහේ ඒකමතිකව යාවත්කාලීන කරයි (එය තනි තනි පිටුපස සැඟවී ඇත්නම් මිස)
  • දත්ත සමුදා ව්‍යුහය අවම වශයෙන් ව්‍යංගයෙන් ලේඛනගත කර ඇත්තේ පිටත වගුව හෝ වස්තු ව්‍යුහය පදනම් කරගෙන ය.

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


1
හහ්. මම එක හා සමාන පිළිතුරක් ලිවීමට බාගෙට යද්දී ඔබ මට එයට පහර දුන්නා. :)
ජූල්ස්

Answer ජූල්ස් ඔබේ පිළිතුර දේවල් පිළිබඳ යෙදුම් පැත්තෙන් වැඩි විස්තර සපයයි; තියාගන්න.
ජෙෆ්රි ස්වේනි

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

හායි, ඔබ ජාවා වැනි ස්ථිතික ටයිප් කළ භාෂාවක් භාවිතා කරන්නේ නම් ලකුණු 1 සහ 3 තවමත් අදාළ වේද?
ජෙස්වින් ජෝස්

ichaitchnyu අවශ්‍ය නොවේ. ගෝලීය විචල්‍යයන් සාමාන්‍යයෙන් නොපවතින දත්ත විශ්වසනීයව හුවමාරු කර ගැනීම සඳහා දත්ත සමුදායන් ගොඩනගා තිබීම කාරණයකි. දැඩි භාෂාවෙන් ස්වයං ලේඛනගත කිරීමේ අතුරු මුහුණතක් ක්‍රියාත්මක කරන වස්තුවක් ලිහිල් ටයිප් කළ NoSQL දත්ත ගබඩාවට වඩා වෙනස් අරමුණක් ඉටු කරයි.
ජෙෆ්රි ස්වේනි

10

නමුත් මම එය දෙස බලන විට, එය ඇත්තෙන්ම දුර්වල පැහැදිලි කිරීමක් යැයි මට සිතිය නොහැක, මන්ද එය දත්ත සමුදායක ගබඩා කර ඇති දත්ත සමඟ වැඩ කිරීමට වඩා වෙනස් වන්නේ කෙසේද?

නැතහොත් අන්තර්ක්‍රියාකාරී උපාංගයක් සමඟ, ගොනුවක් සමඟ, හවුල් මතකය සමඟ වැඩ කිරීමට වඩා වෙනස් ය. එය ක්‍රියාත්මක වන සෑම අවස්ථාවකම එකම දේ කරන වැඩසටහනක් ඉතා නීරස හා වැඩකට නැති වැඩසටහනකි. ඉතින් ඔව්, එය දුර්වල තර්කයක්.

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

ගෝලීය විචල්‍යයන් සමඟ, අනෙක් අතට, එය කිසිසේත් පැහැදිලි නැත. ඒපීඅයි අමතන්න කියනවා foo(this_argument, that_argument). ඇමතුම් අනුපිළිවෙලෙහි කිසිවක් නැත, ගෝලීය විචල්‍යය g_DangerWillRobinsonයම් අගයකට සැකසිය යුතු නමුත් ඇමතීමට පෙර foo(හෝ ඇමතුමෙන් පසුව පරීක්ෂා කර බලන්න foo).


සී ගූගල්-const නොවන සමුද්දේශ තර්ක පාවිච්චි කිරීම තහනම් ++ එය කේත වල පාඨකයා පැහැදිලිව හඳුනාගත නොහැකි මූලික වශයෙන් නිසා foo(x)වෙනස් වනු ඇත xබව නිසා fooතර්කයක් ලෙස-නිරන්තර නොවන සමුද්දේශ ගනී. (C # සමඟ සසඳා බලන්න ඇමතුම අඩවිය සමග යොමු පරාමිතිය සුදුසුකම් යුතු ආඥාවන් ශ්රිතය අර්ථ දැක්වීම දෙකම හා refමූල පදය.) මම මේ ගූගල් සම්මත සමග එකඟ නොවන අතර, මම නම් තමන්ගේ තේරුම් නැහැ.

කේතය එක් වරක් ලියා කිහිප වතාවක් වෙනස් කර ඇත, නමුත් එය කිසිසේත් හොඳ නම්, එය බොහෝ වාර ගණනක් කියවනු ලැබේ. සැඟවුණු සන්නිවේදන මාර්ග ඉතා නරක කර්මයයි. C ++ හි නොනවතින යොමුව සුළු සැඟවුණු සන්නිවේදන මාර්ගයක් නියෝජනය කරයි. හොඳ API එකක් හෝ හොඳ IDE එකක් මට පෙන්වනු ඇත්තේ "ඔහ්! මෙය යොමු කිරීමෙනි." ගෝලීය විචල්‍යයන් යනු විශාල සැඟවුණු සන්නිවේදන මාර්ගයකි.


ඔබේ පිළිතුර වඩාත් අර්ථවත් කරයි.
බිලාල් බෙගුරාජ්

8

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


8

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

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

(එම අන්තිම එක සඳහා, ගුවන් යානා ප්‍රති-මිනුම් පද්ධතියක වැඩ කරන කොන්ත්‍රාත්තුවේ පළමු දිනයේම, ඉතා ඉහළ ආරක්ෂාවක් සහිතව, මෘදුකාංග කණ්ඩායම සතියක් හෝ ඊට වැඩි කාලයක් තිස්සේ ඔවුන් සොයා ගැනීමට උත්සාහ කළ දෝෂ වාර්තාවක් දෙස බලා සිටියේය. මට dev මෙවලම් සහ කේතයේ පිටපතක් බාගත කිරීමට ප්‍රමාණවත් කාලයක් තිබුනි.මම ඇසුවෙමි "එම විචල්‍යය කියවීම් අතර යාවත්කාලීන කර එයට හේතු විය හැකිද?" නමුත් ඇත්ත වශයෙන්ම පිළිතුරක් නොලැබුණි. ඒයි, කුමක් ද? අළුත් මිනිහා දන්නවාද? ඒ නිසා ඔවුන් තවමත් ඒ ගැන සාකච්ඡා කරමින් සිටියදී, මම විචල්ය පරමාණුකව කියවීම සඳහා ආරක්ෂිත කේතයක් එකතු කළෙමි, දේශීයව ගොඩනඟා, මූලික වශයෙන් "ඒයි යාලුවනේ, මෙය උත්සාහ කරන්න" යැයි පැවසුවා. . :)

එබැවින් ගෝලීය විචල්‍යයන් නිසැකවම නරක දෙයක් නොවේ, නමුත් ඔබ ඒවා ගැන ප්‍රවේශමෙන් නොසිතන්නේ නම් ඒවා ඔබට පුළුල් පරාසයක ගැටළු වලට විවෘත වේ.


7

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

නිර්ණායක ශ්‍රිතයක් සඳහා ක්‍රියාකාරී ක්‍රමලේඛනයේ අර්ථ දැක්වීම සලකා බලමු, එය තනිකරම රඳා පවතින්නේ එය ආදාන ලෙස ගන්නා පරාමිතීන් මත වන අතර එය නිර්ණායක ප්‍රතිදානයක් නිපදවයි. එනම්, එකම තර්ක මාලාවක් දෙවරක් ලබා දී ඇති විට, එය එකම ප්‍රති .ලය ලබා දිය යුතුය.

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

කෙසේ වෙතත්, ගෝලීය විචල්‍යය ශ්‍රිතයේ අතුරුමුහුණතේ අනෙක් තර්ක මෙන් කොටසක් ලෙස සලකන්නේ නම් ශ්‍රිතය තවමත් නිර්ණායකයක් ලෙස දැකිය හැකිය, එබැවින් එය ගැටළුව නොවේ. ගැටළුව වන්නේ මෙය පැහැදිලිව පෙනෙන ක්‍රියාකාරකම් වලින් අනපේක්ෂිත ලෙස හැසිරීමෙන් අප පුදුමයට පත්වන මොහොත දක්වාම සැඟවී තිබීම පමණි , ඉන්පසු සැඟවුණු පරායත්තතා සොයා ගැනීමට ඒවායේ ක්‍රියාත්මක කිරීම් කියවන්න .

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

දත්ත සමුදාය මත යැපීම අප සැඟවූ විටත් එයම වේ. දත්ත සමුදා විමසීම් සහ විධාන වලට සෘජුවම ඇමතුම් ලබා දෙන කාර්යයන් හෝ වස්තූන් අපට තිබිය හැකිය, මෙම පරායත්තතාවයන් සඟවා ගෝලීය විචල්‍යයන් විසින් ඇති කරන එකම කරදර අපට ඇති කරයි; හෝ අපට ඒවා පැහැදිලිව දැක්විය හැකිය, එය පෙනෙන පරිදි, නිධිය රටාව, දත්ත ගබඩාව, ගේට්වේ යනාදිය වැනි බොහෝ නම් වලින් භාවිතා වන හොඳම භාවිතයක් ලෙස සැලකේ.

PS: මෙම සංසන්දනයට වැදගත් වන තවත් අංශ තිබේ, එනම් සමගාමී මුදල් සම්බන්ධද යන්න, නමුත් එම කරුණ මෙහි වෙනත් පිළිතුරු වලින් ආවරණය වේ.


මම කැමතියි ඔබ මෙය පරායත්තතා කෝණයෙන් ගත් බව.
cbojar

6

හරි, අපි point තිහාසික කරුණෙන් පටන් ගනිමු.

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

ගෝලීය විචල්‍ය වෛරය අතීතයට අයත් දෙයක් බව මින් අදහස් වේද? තරමක් නොවේ.

පළමුවෙන්ම, මා මේ මොහොතේ වැඩ කරමින් සිටින ව්‍යාපෘතියේ තර්ක ඉදිරිපත් කිරීම සඳහා එකම ප්‍රවේශය මා දැක ඇති බව සඳහන් කළ යුතුය. අවුරුදු 10 ක් පමණ පැරණි ව්‍යාපෘතියක C # හි විමර්ශන වර්ග දෙකක් පසු කිරීම සඳහා. මේ ආකාරයට එය කිරීමට වචනාර්ථයෙන් හොඳ හේතුවක් නැත, බොහෝ දුරට උපත ලැබුවේ භාණ්ඩ-සංස්කෘතියෙන් හෝ C # ක්‍රියා කරන ආකාරය පිළිබඳ සම්පූර්ණ වරදවා වටහා ගැනීමෙනි.

විශාලතම කරුණ නම් ගෝලීය විචල්‍යයන් එක් කිරීමෙන් ඔබ එම ගෝලීය විචල්‍යයට ප්‍රවේශය ඇති සෑම කේත කැබැල්ලකම විෂය පථය පුළුල් කිරීමයි. "ඔබේ ක්‍රම කෙටියෙන් තබා ගන්න" වැනි සියලු නිර්දේශ මතකද? ඔබට ගෝලීය විචල්‍යයන් 600 ක් තිබේ නම් (නැවතත්, තාත්වික ලෝක උදාහරණය: /), ඔබේ සියලු ක්‍රම පරාසයන් එම ගෝලීය විචල්‍යයන් 600 මගින් ව්‍යංගයෙන් පුළුල් කර ඇති අතර, කාට ප්‍රවේශ විය හැකිද යන්න සොයා බැලීමට සරල ක්‍රමයක් නොමැත.

වැරැද්දක් කර ඇත්නම් (සුපුරුදු ක්‍රමය :)), ගෝලීය විචල්‍යයන් එකිනෙකා අතර සම්බන්ධයක් තිබිය හැකිය. නමුත් ඒවා සම්බන්ධ වන්නේ කෙසේදැයි ඔබට අදහසක් නොමැති අතර ගෝලීය රාජ්‍යය සැමවිටම ස්ථාවර බව සහතික කිරීමට යාන්ත්‍රණයක් නොමැත. දේවල් ස්ථාවරව තබා ගැනීමට ඔබ විවේචනාත්මක කොටස් හඳුන්වා දුන්නද, එය නිසි ACID දත්ත ගබඩාවක් සමඟ සංසන්දනය නොකරන බව ඔබට පෙනී යනු ඇත:

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

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

කුඩා විෂය පථය කේතය ගැන තර්ක කිරීම පහසු කරයි. ගෝලීය විචල්‍යයන් මඟින් සරලම කේත කැබලිවලට පවා විශාල විෂය පථයක් ඇතුළත් වේ.

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


භෞතික ලෝකය මෙන් බොහෝ දේ පෙනේ: දේවල් පෙරළීමට ඉතා අපහසුය.

මෙය හොඳ පිළිතුරකි, නමුත් එය ආරම්භයේදීම නිබන්ධන ප්‍රකාශයක් (TL; DR කොටස) ඉදිරිපත් කළ හැකිය.
jpmc26

6

ගෝලීය විචල්‍යය යනු මෙවලමකි, එය යහපත හා නපුර සඳහා භාවිතා කළ හැකිය.

දත්ත සමුදායක් යනු මෙවලමක් වන අතර, එය යහපත හා නපුර සඳහා භාවිතා කළ හැකිය.

මුල් පෝස්ටරයේ සටහන් වන පරිදි, වෙනස එතරම් විශාල නොවේ.

අද්දැකීම් අඩු සිසුන් බොහෝ විට සිතන්නේ දෝෂ යනු වෙනත් පුද්ගලයින්ට සිදුවන දෙයක් බවයි. නරක සැලසුමට ද penal ුවම් කිරීම සඳහා සරල හේතුවක් ලෙස ගුරුවරුන් "ගෝලීය විචල්‍යයන් නපුරු" ලෙස භාවිතා කරයි. පේළි 100 ක වැඩසටහන දෝෂ රහිත බැවින් සිසුන් 10000 පේළි වැඩසටහන් සඳහා එකම ක්‍රම භාවිතා කළ හැකි බව සාමාන්‍යයෙන් සිසුන්ට වැටහෙන්නේ නැත.

ඔබ දත්ත සමුදායන් සමඟ වැඩ කරන විට, ඔබට ගෝලීය රාජ්‍යය තහනම් කළ නොහැක. ඒ වෙනුවට ඔබට ACID සහ සාමාන්‍ය පෝරම වැනි වැඩි විස්තර මාර්ගෝපදේශ ලබා ගත හැකිය.

මිනිසුන් ගෝලීය විචල්‍යයන් සඳහා ACID ප්‍රවේශය භාවිතා කළේ නම්, ඔවුන් එතරම් නරක නොවනු ඇත.

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


3
ස්ටැක් ඕවර් ප්‍රවාහය පිළිබඳ සාමාන්‍ය ශිෂ්‍ය හිමිකම්: මට උදව් කරන්න! මගේ කේතය පරිපූර්ණයි, නමුත් එය නිවැරදිව ක්‍රියා නොකරයි!
ඩේවිඩ් හැමන්

"ගෝලීය විචල්‍යයන් සඳහා ACID ප්‍රවේශය" - Clojure හි refs බලන්න.
චාල්ස් ඩෆි

Av ඩේවිඩ් හැමන් සහ ඔබ සිතන්නේ වෘත්තිකයින්ට සිසුන්ට වඩා මොළයක් ඇති බවයි?
බිලාල් බෙගුරාජ්

IlBillalBEGUERADJ - වෘත්තිකයන් සහ සිසුන් අතර වෙනස එයයි. වසර ගණනාවක අත්දැකීම් තිබියදීත්, කේත සමාලෝචන, පරීක්ෂණ ආදියෙහි උපරිම උත්සාහයන් තිබියදීත් අපගේ කේතය පරිපූර්ණ නොවන බව අපි දනිමු.
ඩේවිඩ් හැමන්


5

මට නම්, මූලික නපුර වන්නේ ග්ලෝබල් සමාගමට සමගාමී ගැටළු වලින් ආරක්ෂා වීමක් නැත. ග්ලෝබල්ස් සමඟ එවැනි ගැටළු හැසිරවීමට ඔබට යාන්ත්‍රණ එකතු කළ හැකිය, නමුත් ඔබ විසඳන සමගාමී ගැටළු වැඩි වන තරමට ඔබේ ග්ලෝබල්ස් දත්ත සමුදායක් අනුකරණය කිරීමට පටන් ගනී. ද්විතියික නපුර භාවිතය පිළිබඳ ගිවිසුමක් නොවේ.


3
උදාහරණයක් ලෙස, errnoසී
ඩේවිඩ් හැමන්

1
ගෝලීය සහ දත්ත සමුදායන් සමාන නොවන්නේ මන්දැයි මෙය හරියටම පැහැදිලි කරයි. වෙනත් වෙනස්කම් තිබිය හැකි නමුත් ඔබේ විශේෂිත තනතුර සංකල්පය මුළුමනින්ම විනාශ කරයි. ඔබ ඉක්මන් කේත නිදසුනක් ලබා දුන්නේ නම්, එවිට ඔබට ඉහළ නැංවීමක් ලැබෙනු ඇතැයි මට විශ්වාසයි. උදා: MyFunc () {x = globalVar * 5; // .... වෙනත් සැකසුම්; y = globalVar * 34; // අපොයි, වෙනත් සමහර සැකසුම් වලදී ග්ලෝබල්වර් වෙනස් කළ හැකි අතර x සහ y ඔවුන්ගේ ගණනය කිරීම් වලදී ග්ලෝබල්වර් සඳහා විවිධ අගයන් භාවිතා කරයි.
ඩන්ක්

5

තවත් සමහර පිළිතුරු දත්ත සමුදායක් භාවිතා කිරීම හොඳ වීමට හේතුව පැහැදිලි කිරීමට උත්සාහ කරයි. ඔවුන් වැරදියි! දත්ත සමුදායක් යනු ගෝලීය රාජ්‍යයක් වන අතර එය සිංගල්ටන් හෝ ගෝලීය විචල්‍යයක් තරම්ම නපුරු ය. ඔබට පහසුවෙන් දේශීය සිතියමක් හෝ අරාවක් භාවිතා කළ හැකි විට දත්ත සමුදායක් භාවිතා කිරීම සියලු ආකාරයේ වැරදි ය!

ගෝලීය විචල්‍යයන් අපයෝජනයේ අවදානමක් ඇති ගෝලීය ප්‍රවේශයට ඉඩ දෙයි. ගෝලීය විචල්‍යයන්ට ද උඩු යටිකුරු ඇත. ගෝලීය විචල්‍යයන් සාමාන්‍යයෙන් කියනුයේ ඔබ මග හැරිය යුතු දෙයක් මිස ඔබ කිසි විටෙකත් භාවිතා නොකළ යුතු දෙයක් ලෙස ය. ඔබට පහසුවෙන් ඒවා වළක්වා ගත හැකි නම් ඔබ ඒවායින් වැළකී සිටිය යුතුය. නමුත් ප්‍රතිලාභ අඩුපාඩු ඉක්මවා ගියහොත්, ඔබ ඒවා භාවිතා කළ යුතුය! *

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

සැබෑ ජීවිතයේ දී, බොහෝ යෙදුම් සඳහා ගෝලීය රාජ්‍යය සැලසුම් කිරීම අවශ්‍ය වේ, සමහර විට නොනැසී පවත්නා ගෝලීය තත්වය පවා - අපට ලිපිගොනු, දත්ත සමුදායන් යනාදිය ඇත්තේ එබැවිනි.


* මෙහි ව්‍යතිරේකය සිසුන් ය. ගෝලීය විචල්‍යයන් භාවිතා කිරීම ශිෂ්‍යයින්ට තහනම් කිරීම අර්ථවත් වන අතර එමඟින් විකල්ප මොනවාදැයි ඉගෙන ගත යුතුය.

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


2

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

ඔවුන් මෙහි ප්‍රධාන වෙනස උපකල්පනය කළ වගකීමකි.

ඔබ වස්තුවක් ලියන විට, සාමාජික ක්‍රමවේදයන් පවත්වාගෙන යන ඕනෑම අයෙකු පෞද්ගලික ක්ෂේත්‍ර හොඳින් හැසිරෙන බවට සහතික වනු ඇතැයි උපකල්පනය කෙරේ. නමුත් ඔබ දැනටමත් පොදු ක්ෂේත්‍රවල තත්වය පිළිබඳ උපකල්පන අත්හැර දමා ඒවාට අමතර සැලකිල්ලක් දක්වන්න.

එකම උපකල්පනය ගෝලීය v / s දත්ත ගබඩාවට පුළුල් මට්ටමකට අදාළ වේ. එසේම, ක්‍රමලේඛන භාෂාව / පරිසර පද්ධතිය පුද්ගලික v / s මහජනතාවට ප්‍රවේශවීමේ සීමාවන් සහතික කරයි.

බහු තෙරපීම ක්‍රියාත්මක වන විට, පුද්ගලික v / s පොදු v / s ගෝලීය v / s දත්ත සමුදාය පිළිබඳ සංකල්පය වර්ණාවලියක් ඔස්සේ හුදෙක් වෙනසකි.

static int global; // within process memory space
static int dbvar; // mirrors/caches data outside process memory space

class Cls {
    public: static int class_public; // essentially the same as global
    private: static int class_private; // but public to all methods in class

    private: static void method() {
        static int method_private; // but public to all scopes in method
        // ...
        {
            static int scope1_private; // mutex guarded
            int the_only_truly_private_data;
        }
        // ...
        {
            static int scope2_private; // mutex guarded
        }
    }
}

1

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

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


0

වෙනස්කම් කිහිපයක් තිබේ:

  • පියාසර කිරීමේදී දත්ත සමුදා අගයක් වෙනස් කළ හැකිය. අනෙක් අතට කේතයෙන් සකසා ඇති ගෝලීය වටිනාකම, ඔබ ඔබේ යෙදුම නැවත යෙදවීම සහ ඔබේ කේතය වෙනස් කිරීම හැර වෙනස් කළ නොහැක . ඇත්ත වශයෙන්ම, මෙය හිතාමතා ය. දත්ත ජාලයක්ද කාලයත් වෙනස් වෙන්න පුළුවන් අගයන් සඳහා, නමුත් ගෝලීය විචල්ය යුතු එකම කවදාවත් වෙනස් වෙන්නේ නැහැ කියලා දේවල් විය හා ඔවුන් සැබෑ දත්ත අඩංගු නොවන විට.

  • දත්ත සමුදායේ වටිනාකමක් (පේළිය, තීරුව) දත්ත සමුදායේ සන්දර්භයක් සහ සම්බන්ධතා සිතියමක් ඇත. ජයිලර් වැනි මෙවලම් භාවිතයෙන් මෙම සම්බන්ධතාවය පහසුවෙන් උපුටා ගත හැකි අතර විශ්ලේෂණය කළ හැකිය (නිදසුනක් ලෙස). අනෙක් අතට ගෝලීය විචල්‍යයක් තරමක් වෙනස් ය. ඔබට සියලු භාවිතයන් සොයාගත හැකිය, නමුත් විචල්‍යය ඔබගේ සෙසු ලෝකය සමඟ අන්තර්ක්‍රියා කරන සියලු ආකාර මට පැවසීමට ඔබට නොහැකි වනු ඇත .

  • ගෝලීය විචල්යයන් වේගවත් ය . දත්ත සමුදායකින් යමක් ලබා ගැනීම සඳහා දත්ත සමුදා සම්බන්ධතාවයක් සෑදිය යුතුය, මට තෝරා ගැනීමක් ක්‍රියාත්මක කර දත්ත සමුදා සම්බන්ධතාවය වසා දැමිය යුතුය. ඔබට අවශ්‍ය ඕනෑම ආකාරයක පරිවර්තනයක් ඊට ඉහළින් පැමිණේ. එය ඔබගේ කේතයට ප්‍රවේශ වන ගෝලීය සමඟ සසඳන්න.

මට දැන් සිතිය හැකි එකම දේ මේවාය, නමුත් මට විශ්වාසයි තවත් බොහෝ දේ ඇත. සරලව කිවහොත්, ඒවා වෙනස් කරුණු දෙකක් වන අතර ඒවා විවිධ අරමුණු සඳහා භාවිතා කළ යුතුය .


0

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

උදාහරණයක් ලෙස, සේවාදායකයේ නම ගබඩා කරන HTTP සේවාදායකයක් සලකා බලන්න.

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

ඊට වෙනස්ව, සේවාදායකයේ නම දත්ත ගබඩාවක තිබේ නම් කිසිදු ගැටළුවක් නොමැත. HTTP සේවාදායකයේ සෑම අවස්ථාවක් සඳහාම ඔබට එම දත්ත ගබඩාවේ එක් අවස්ථාවක් නිර්මාණය කළ හැකිය. සේවාදායකයේ සෑම අවස්ථාවකටම එහි දත්ත සමුදායේ නිදසුනක් ඇති බැවින් එයට එයට තමන්ගේම සේවාදායක නාමයක් තිබිය හැකිය.

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


0

මම හිතන්නේ මෙය සිත්ගන්නාසුලු ප්‍රශ්නයක් නමුත් එයට පිළිතුරු දීමට ටිකක් අපහසු වන්නේ 'ගෝලීය රාජ්‍යය' යන යෙදුම යටතේ ගැටෙන ප්‍රධාන කරුණු දෙකක් ඇති බැවිනි. පළමුවැන්න ‘ගෝලීය කප්ලිං’ සංකල්පයයි. එයට සාක්ෂිය නම් ගෝලීය රාජ්‍යය සඳහා ලබා දී ඇති විකල්පය පරායත්ත එන්නත් කිරීමයි. කාරණය නම් DI අනිවාර්යයෙන්ම ගෝලීය රාජ්‍යය තුරන් කිරීම නොවේ. එනම්, ගෝලීය රාජ්‍යය මත යැපීම් එන්නත් කිරීම නියත වශයෙන්ම හැකි හා පොදු ය. DI කරන්නේ ගෝලීය විචල්‍යයන් හා බහුලව භාවිතා වන සිංගල්ටන් රටාව සමඟ සම්බන්ධ කිරීම ඉවත් කිරීමයි. එය තරමක් අඩු පැහැදිලිව පෙනෙන සැලසුමක් හැරුණු විට, මේ ආකාරයේ සම්බන්ධතාවයන් තුරන් කිරීම සඳහා ඉතා අවාසි ඇති අතර, එම ගෝලීයයන් මත යැපීම් ගණන සමඟ සම්බන්ධ කිරීම ඉවත් කිරීමේ වාසි on ාතීය ලෙස වැඩිවේ.

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

එබැවින් දත්ත සමුදායන් ගෝලීය වලින් වෙනස් වන්නේ කෙසේද යන ප්‍රශ්නය මෙම අංශ දෙක හරහා බෙදී යයි. ඔවුන් කප්ලිං හඳුන්වා දෙනවාද? ඔව්, ඔවුන්ට එය කළ හැකි නමුත් එය යෙදුම නිර්මාණය කර ඇති ආකාරය සහ දත්ත සමුදාය නිර්මාණය කර ඇති ආකාරය මත රඳා පවතී. සැලසුම පිළිබඳ විස්තර නොමැතිව දත්ත සමුදායන් ගෝලීය සම්බන්ධතාවය හඳුන්වා දෙයිද යන්නට එක පිළිතුරක් ලබා ගැනීමට බොහෝ සාධක තිබේ. ඔවුන් රාජ්‍ය බෙදාගැනීම හඳුන්වා දෙන්නේද යන්න සම්බන්ධයෙන්, එය දත්ත සමුදායක ප්‍රධාන කරුණකි. ප්‍රශ්නය වන්නේ ඔවුන් එය හොඳින් කරනවාද යන්නයි. නැවතත්, විකල්ප සහ වෙනත් වෙළඳාම් වැනි වෙනත් තොරතුරු රාශියක් නොමැතිව පිළිතුරු දීමට මෙය ඉතා සංකීර්ණ යැයි මම සිතමි.


0

මම ඒ ගැන තරමක් වෙනස් ලෙස සිතමි: හැසිරීම වැනි “ගෝලීය විචල්‍යය” යනු දත්ත සමුදා පරිපාලකයින් (ඩීබීඒ) විසින් ගෙවනු ලබන මිලකි. මන්ද එය ඔවුන්ගේ කාර්යය කිරීමට අත්‍යවශ්‍ය නපුරකි.

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

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

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

ඔවුන් ඒ සඳහා මිලක් ගෙවනවා, ආදරණීය මිලක්. ඩීබීඒ වලට සවිස්තරාත්මකව අවධානය යොමු කරමින් ව්යාධිජනක වීමට බල කෙරෙයි, මන්ද ඔවුන්ගේ මෙවලම් ඒවා ආරක්ෂා නොකරයි. ආරක්ෂාව සඳහා ඔවුන් සතුව ඇති හොඳම දේ ACID හෝ සමහර විට විදේශීය යතුරු ය. ව්යාධිජනක නොවන අය සම්පූර්ණයෙන්ම භාවිතා කළ නොහැකි හෝ දූෂිත වූ වගු අවුල් ජාලයක් සමඟ සොයා ගනී .

100k රේඛීය මෘදුකාංග පැකේජ තිබීම සාමාන්‍ය දෙයක් නොවේ. න්‍යායට අනුව, මෘදුකාංගයේ ඕනෑම රේඛාවක් ඕනෑම වේලාවක ඕනෑම ගෝලීය මට්ටමකට බලපායි. DBAs හි, දත්ත සමුදාය වෙනස් කළ හැකි 100k වෙනස් විමසුම් ඔබ කිසි විටෙක සොයා නොගනී. ඔබෙන් ඔබව ආරක්ෂා කර ගැනීමට අවශ්‍ය විස්තර කෙරෙහි අවධානය යොමු කිරීම අසාධාරණ වනු ඇත. ඩී.බී.ඒ හි එවැනි විශාල දෙයක් තිබේ නම්, ඔවුන් හිතාමතාම ඔවුන්ගේ දත්ත සමුදාය ප්‍රවේශයන් භාවිතා කරමින්, “ගෝලීය වැනි” ගැටළු මඟ හරවා, එම “ආරක්ෂිත” යාන්ත්‍රණය හරහා ඔවුන්ට හැකි තරම් වැඩ කරයි. මේ අනුව, තල්ලුවීමට තල්ලුවූ විට, දත්ත සමුදායන් පවා ගෝලීයව මග හැරේ. හුදෙක් ඔවුන් අනතුර ගොඩක් එක්ක එන්න, හා බව විකල්ප තියෙනවා පමණක් ශක්තිමත් ලෙස, නමුත් භයානක ලෙස.

අනෙක් සියල්ල සමාන නම්, කැඩුණු වීදුරුවක හෝ හොඳින් අතුගා දැමූ පදික වේදිකාවල ඔබ ඇවිදිනවාද? ඔව්, ඔබට කැඩුණු වීදුරු මත ඇවිද යා හැකිය. ඔව්, සමහර අය එය කරමින් ජීවත් වෙති. නමුත් තවමත්, ඔවුන්ට පදික වේදිකාව අතුගා දමා ඉදිරියට යන්න දෙන්න!


0

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

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


-2

ග්ලෝබල් නපුරු නොවේ; ඒවා හුදෙක් මෙවලමක්. වෙනත් ඕනෑම ක්‍රමලේඛන අංගයක් අනිසි ලෙස භාවිතා කිරීම මෙන්ම ගෝලීය වැරදි භාවිතය ගැටළු සහගතය.

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


සමහර පහත් පෙළේ අය ඔබගේ පහත් විස්තර පැහැදිලි කරයිද? පැහැදිලි කිරීමකින් තොරව පහත් කොට සැලකීම රළු බවක් පෙනේ.
බයිරන් ජෝන්ස්

-2

කියවීමට-පමණක් රටාව, සහ ඔබේ දත්ත මුද්‍රණය කරන විට එය යාවත්කාලීන නොවන බව උපකල්පනය කරන්න. පෝලිම් ගැටුම් වෙනත් ආකාරයකින් ලියයි. නිරය යක්ෂයා සාදරයෙන් පිළිගනිමු, ඔබ භාවිතා කරන්නේ ගෝලීය ඩී.බී.

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.