Text size
പരീക്ഷിച്ചറിഞ്ഞത്6 മിനിറ്റ് വായന

വിന്യാസങ്ങളെ തകർക്കാത്ത ഡാറ്റാബേസ് മാറ്റങ്ങൾ

കോഡ് എളുപ്പത്തിൽ തിരിച്ചുപിടിക്കാവുന്നതാണ്. ഡാറ്റാബേസുകളില് ഇല്ല. എങ്ങനെ സുരക്ഷിതമായി സ്കീമുകൾ മാറ്റാം.

Database changes that don't break deployments
AI ഉപയോഗിച്ച് സൃഷ്ടിച്ച ചിത്രീകരണം

എനിക്ക് ചിന്തിക്കാൻ കഴിയുന്ന ഏറ്റവും ഭീതിദമായ വിന്യാസങ്ങളിൽ മിക്കതും ഒരു പൊതുവായ കാര്യമുണ്ട്: ഒരു ഡാറ്റാബേസ് മാറ്റം. കോഡ് ഭാഗം ശരിയായിരുന്നു. കോഡ് സെക്കന്റുകൾക്കകം തിരികെ കൊണ്ടുവരാം. പക്ഷെ ഒരു നിര ഒഴിവാക്കുകയോ, ഒരു പട്ടികയുടെ പേര് മാറ്റുകയോ, ഒരു ദശലക്ഷം വരികൾ മൈഗ്രേറ്റ് ചെയ്യുകയോ ചെയ്താൽ പെട്ടെന്ന് മാറ്റം വരുത്താനാവില്ല.

ഡാറ്റാബേസ് മാറ്റങ്ങള് ക്ക് നിങ്ങളുടെ ഡെലിവറി പ്രക്രിയയില് ഒരു പ്രത്യേക സ്ഥാനം വേണം. ഇതാ, അവയെ എങ്ങനെ പതിവായി ഉണ്ടാക്കാം.

കുടിയേറ്റം എന്തിനാണ് കാര്യങ്ങൾ തകർക്കുന്നത്

ചില ക്ലാസിക് രീതികളില് സ്കീമ മാറ്റങ്ങള് വൈദ്യുതി മുടക്കത്തിന് കാരണമാകുന്നു:

  • പുതിയ കോഡ് ഒരു നിര പ്രതീക്ഷിക്കുന്നു, അത് ഇതുവരെ നിലവിലില്ല, കാരണം മൈഗ്രേഷൻ വിന്യസിച്ചതിനു ശേഷം പ്രവർത്തിച്ചു, അല്ലെങ്കിൽ പരാജയപ്പെട്ടു.
  • പഴയ കോഡ് പുതിയ സ്കീമയിൽ തകരുന്നു.കാരണം ഒരു റോളിംഗ് അപ്ഡേറ്റിന് സമയത്ത് രണ്ട് പതിപ്പുകളും ഒരേ സമയം പ്രവർത്തിക്കുന്നു.
  • കോഡിന്റെ റോൾബാക്ക് പുതിയ രൂപത്തിൽ ഡാറ്റാബേസ് വിടുന്നു, പഴയ കോഡിന് അത് മനസ്സിലാകുന്നില്ല.
  • ഒരു നീണ്ട മൈഗ്രേഷൻ ഒരു മേശ പൂട്ടുന്നു, എല്ലാം കാത്തിരിക്കുകയാണ് സമയം.
  • ആരെങ്കിലും ഡാറ്റാബേസ് കൈകൊണ്ട് മാറ്റി, മൈഗ്രേഷൻ പരാജയപ്പെടുന്നു കാരണം യാഥാര് ത്ഥ്യം പ്രതീക്ഷകളുമായി പൊരുത്തപ്പെടുന്നില്ല.

കോഡും ഡാറ്റാബേസും വ്യത്യസ്ത സമയങ്ങളിൽ മാറുന്നു, ഒരു കാലയളവിൽ, കോഡിന്റെ പഴയതും പുതിയതുമായ പതിപ്പുകൾ ഒരേ ഡാറ്റാ ബേസുമായി സംസാരിക്കുന്നു.

വിപുലീകരിക്കുക, പിന്നെ ചുരുക്കുക

സുരക്ഷിത ഡാറ്റാബേസ് മാറ്റങ്ങൾക്കുള്ള ഏറ്റവും ഉപകാരപ്രദമായ മാതൃക വിപുലീകരിക്കുകയും ചുരുക്കുകയും ചെയ്യുക (പാരലൽ മാറ്റം എന്നും വിളിക്കുന്നു). ഒരു മാറ്റത്തിനു പകരം, അനുയോജ്യമായ മാറ്റങ്ങൾ ഉണ്ടാക്കുന്നു.

ഉദാഹരണം: ഒരു നിരയുടെ പേര് മാറ്റുക name വരെ full_name.

  1. വിപുലീകരിക്കുക: പുതിയ നിര ചേർക്കുക full_name. പഴയ കോഡ് അത് അവഗണിക്കുന്നു.
  2. രണ്ടും എഴുതുക.: രണ്ടും എഴുതുന്ന കോഡ് വിന്യസിക്കുക name ഒപ്പം full_name, വായിക്കുന്നു name.
  3. പിന്നിലേയ്ക്ക് പൂരിപ്പിക്കുക: നിലവിലുള്ള ഡാറ്റ പകർത്തുക name വരെ full_name, ബാച്ചുകളായി.
  4. സ്വിച്ച് വായിക്കുന്നു: വായിക്കുന്ന കോഡ് വിന്യസിക്കുക full_name.
  5. പഴയ നിര എഴുതുന്നത് നിർത്തൂ.: മാത്രം ഉപയോഗിക്കുന്ന കോഡ് വിന്യസിക്കുക full_name.
  6. കരാര്: പിന്നീട്, നിങ്ങൾക്ക് ആത്മവിശ്വാസം കിട്ടിയാല് , name നിര.

കൂടുതൽ ചുവടുകൾ, തീർച്ചയായും. പക്ഷെ ഓരോ ഘട്ടത്തിലും നിലവിലുള്ളതും മുൻകാലവുമായ കോഡ് പതിപ്പുകൾ പ്രവർത്തിക്കുന്നു, അതിനാൽ ഓരോ വിന്യാസവും സുരക്ഷിതമായി റദ്ദാക്കാം.

നിങ്ങളുടെ കോഡിന്റെ മുൻ പതിപ്പിന് അതിജീവിക്കാൻ കഴിയാത്ത ഒരു ഡാറ്റാബേസ് മാറ്റം വരുത്തരുത്.

വിരല് നിയമം

  • കൂട്ടിച്ചേർത്ത മാറ്റങ്ങൾ സുരക്ഷിതമാണ്.: പുതിയ പട്ടികകൾ, പുതിയ ശൂന്യമായ നിരകൾ, പുതിയ സൂചികകൾ (നിങ്ങളുടെ ഡാറ്റാബേസ് പിന്തുണയ്ക്കുന്നിടത്ത് ഒരേസമയം സൃഷ്ടിക്കുന്നു).
  • നാശകരമായ മാറ്റങ്ങള് ക്ക് ഒരു കാത്തിരിപ്പ് കാലയളവ് ആവശ്യമാണ്: നിരകളുടെയും പട്ടികകളുടെയും പേരുമാറ്റുകയോ അവയെ ഉപയോഗിക്കാതെ പ്രവർത്തിപ്പിക്കുകയോ ചെയ്യരുത്.
  • നീണ്ട ലോക്കുകൾ ഒഴിവാക്കുക: വലിയ ഡാറ്റാ മൈഗ്രേഷന് ഒരു വലിയ ഇടപാടിന് പകരം ബാച്ചുകളായി. നിങ്ങളുടെ ഡാറ്റാബേസിലെ ഏത് ഓപ്പറേഷനുകളാണ് ലോക്ക് ചെയ്യുന്നതെന്ന് അറിയുക.
  • ഡാറ്റാ മൈഗ്രേഷനുകളിൽ നിന്നും സ്കീമ മാറ്റങ്ങൾ വേർതിരിക്കുക സാധ്യമായിടത്ത്.
  • മൈഗ്രേഷന് ഉല്പാദനത്തില് മുന്നോട്ട് മാത്രമായി. വികസനത്തിന് താഴേക്കുള്ള മൈഗ്രേഷന് ഉപയോഗപ്രദമാണ്, പക്ഷേ ഉല്പാദനത്തിന്, പുതിയ മൈഗ്രേഷൻ ഉപയോഗിച്ച് മുന്നോട്ട് പോകുക.

ഉപകരണങ്ങള്: അറ്റ്ലസ്, ഫ്ളൈവേ, ലിക്വിബേസ്

നിങ്ങൾക്കൊരു ടൂൾ വേണം, അത് മൈഗ്രേഷനുകൾ ക്രമത്തിൽ പ്രയോഗിക്കുകയും, പ്രയോഗിച്ചവ രേഖപ്പെടുത്തുകയും ചെയ്യും:

  • പറക്കൽ പാത: ലളിതവും, എസ്. ക്യു. എൽ. ഫയൽ അടിസ്ഥാനമാക്കിയുള്ളതും, വിശേഷിച്ച് ജാവ ലോകത്ത് വ്യാപകമായി ഉപയോഗിക്കപ്പെടുന്നതുമാണ്.
  • ലിക്വിബേസ്: സംരംഭകർക്കായി സമ്പന്നമായ സവിശേഷതകളുള്ള എസ്.ക്യു.എൽ, എക്സ്എംഎൽ, യാംഎൽ അല്ലെങ്കിൽ ജെസോൺ എന്നിവയിലെ മാറ്റങ്ങൾ.
  • അറ്റ്ലസ്: ഒരു പുതിയ ഉപകരണവും ഒരു പ്രഖ്യാപന സമീപനവും. നിങ്ങള് ആഗ്രഹിക്കുന്ന സ്കീമയെ വിവരിക്കുക, അറ്റ്ലസ് ഡാറ്റാബേസുകളുടെ ടെറഫോർം പോലെ മൈഗ്രേഷൻ പ്ലാൻ ചെയ്യുന്നു. അപകടകരമായ മാറ്റങ്ങൾക്കായി മൈഗ്രേഷനുകൾ ലിൻറ് ചെയ്യുന്നു, ഒരു നിര ഒഴിവാക്കുകയോ സ്ഥിരസ്ഥിതി ഇല്ലാതെ അസാധുവാക്കാനാവാത്ത നിര ചേർക്കുകയോ ചെയ്യുക.
  • ചട്ടക്കൂട് ഉപകരണങ്ങൾ: ജാംഗോ മൈഗ്രേഷന് , റെയിൽസ് മൈഗ്രേഷൻ , ആലെംബിക് , പ്രിസ്മ , ഇ എഫ് കോർ നിങ്ങളുടെ ആപ്ലിക്കേഷൻ ഫ്രെയിംവർക്ക് അവ ഉണ്ടെങ്കിൽ ഉപയോഗിക്കാൻ നല്ലതാണ്.

എപ്പോഴാണ് മൈഗ്രേഷനുകൾ നടത്തേണ്ടത്

ഒരു കുബർനെറ്റ്സ് ലോകത്തിലെ പൊതുവായ ഓപ്ഷനുകൾ:

  • വിന്യാസത്തിനു മുമ്പുള്ള ഒരു കുബർനെറ്റസ് ജോലിഉദാഹരണത്തിന് ഹെല്ം പ്രീ-അപ്ഗ്രേഡ് ഹുക്ക് അല്ലെങ്കിൽ ഒരു ആർഗോ സിഡി സിൻക് വേവ് / പ്രീ-സിൻക് ഹുക്ക്. മൈഗ്രേഷൻ വിജയകരമാണെങ്കില് മാത്രമേ വിന്യാസം തുടരുകയുള്ളൂ.
  • ഒരു ഇൻറീം കണ്ടെയ്നർ ആപ്പ് പോഡിൽ. ലളിതം, പക്ഷെ പല റെപ്ലിക്കുകളുണ്ടെങ്കിൽ, പലതും ഒരേസമയം കുടിയേറാൻ ശ്രമിച്ചേക്കാം. ഒരു ലോക്കിംഗ് ഉള്ള ഒരു ഉപകരണം ഉപയോഗിക്കുക.
  • ഒരു പ്രത്യേക പൈപ്പ് ലൈൻ ഘട്ടം പുതിയ പതിപ്പ് വിന്യസിക്കുന്നതിന് മുമ്പ്.

നിങ്ങൾ ഏത് രീതിയിലാണോ തിരഞ്ഞെടുക്കുന്നത്, കുടിയേറ്റം വിജയിക്കണം മുമ്പ് പുതിയ കോഡിന് അത് ആവശ്യമാണ്, പഴയ കോഡ് ഇപ്പോഴും പ്രവർത്തിക്കുന്നുണ്ടെങ്കിലും അത് തകര് ക്കരുത്.

ഐ. സി. യിൽ മൈഗ്രേഷന് പരിശോധന

  • എല്ലാ മൈഗ്രേഷനുകളും ആദ്യം മുതൽ പ്രവർത്തിപ്പിക്കുക സിഐയിലെ പുതിയ ഡാറ്റാബേസിൽ, ചങ്ങല ശരിയായി പ്രവർത്തിക്കുന്നുണ്ടെന്ന് ഉറപ്പുവരുത്താൻ.
  • ഉല്പാദന-പോലുള്ള ഡാറ്റയുടെ ഒരു പകർപ്പിനെതിരെ പുതിയ മൈഗ്രേഷനുകൾ നടത്തുക പ്രകടന പ്രശ്നങ്ങളും ലോക്കുകളും കണ്ടെത്താന് .
  • ലിന്റ് കുടിയേറ്റം അപകടകരമായ പ്രവർത്തനങ്ങള് (അറ്റ്ലസ്, പോസ്റ്റ് ഗ്രെസ്കുവലിന് സ്ക്വാക്കും സമാനമായ ഉപകരണങ്ങളും).
  • കോഡിന്റെ രണ്ടും പതിപ്പുകൾ പരിശോധിക്കുക പുതിയ പദ്ധതിക്ക് എതിരായി, കഴിയുമെങ്കിൽ.

പിന്നെ, ഡാറ്റാബേസ് മാറ്റങ്ങൾ എങ്ങനെ ബോറടിപ്പിക്കും?

ഒരു മൈഗ്രേഷൻ ടൂൾ ഉപയോഗിക്കുക, ഓരോ മാറ്റവും എക്സ്പാൻഡ് ആൻഡ് കൺട്രാക്ട് ഉപയോഗിച്ച് പിന്നോട്ട് അനുയോജ്യമാക്കുക, അവ ആവശ്യമുള്ള കോഡിന് മുമ്പ് സ്വപ്രേരിതമായി മൈഗ്രേഷനുകൾ പ്രവർത്തിപ്പിക്കുക, അവ യാഥാർത്ഥ്യബോധമുള്ള ഡാറ്റ ഉപയോഗിച്ച് CI ൽ പരിശോധിക്കുക. അത് കൂടുതൽ പടികളാണ്, പക്ഷെ ഓരോ പടിയും ചെറുതും സുരക്ഷിതവുമാണ്.

എന്റെ അഭിപ്രായം: ഡേറ്റാബേസുകള് ക്ക് നീണ്ട ഓർമ്മകളുണ്ട്. പതുക്കെ പതുക്കെ, ചെറിയ അനുയോജ്യമായ ഘട്ടങ്ങളിലൂടെ മാറ്റുക, അവര് നിങ്ങള് ക്ക് പൊറുത്തു തരും.

ഡെസ്ലി