Hacker News

MySQL гадаад түлхүүрийн каскадын үйлдлүүд эцэст нь хоёртын бүртгэлд хүрэв

MySQL гадаад түлхүүрийн каскадын үйлдлүүд эцэст нь хоёртын бүртгэлд хүрэв Mysql-ийн энэхүү цогц дүн шинжилгээ нь түүний үндсэн бүрэлдэхүүн хэсгүүд болон илүү өргөн хүрээний үр нөлөөг нарийвчлан судлах боломжийг олгодог. Анхаарах гол чиглэлүүд Хэлэлцүүлэг нь: Үндсэн механизм...

1 min read Via readyset.io

Mewayz Team

Editorial Team

Hacker News

MySQL гадаад түлхүүрийн каскадын үйлдлүүд одоо хоёртын бүртгэлд гарч ирсэн нь мэдээллийн санд суурилсан программуудын хуулбарлах, аудит хийх, өгөгдөл сэргээхэд шууд нөлөөлдөг удаан хүлээгдэж буй өөрчлөлтийг тэмдэглэж байна. MySQL хувилбаруудад аажмаар нэвтрүүлсэн энэхүү зан үйлийн өөрчлөлт нь урьд өмнө хуулбарлагдсан орчинд чимээгүй өгөгдлийн зөрчил үүсгэж байсан чухал цоорхойг арилгадаг.

Гадаад түлхүүрийн каскадын үйлдлүүд гэж юу вэ, тэд яагаад хоёртын бүртгэлээс гадуур үлдсэн бэ?

Гадаад түлхүүрийн хязгаарлалтууд нь хүснэгт хоорондын лавлагааны бүрэн бүтэн байдлыг хангадаг. Та ON DELETE CASCADE эсвэл ON UPDATE CASCADE-г тодорхойлоход MySQL нь эцэг эх хүснэгтээс холбогдох хүүхэд мөрүүдэд өөрчлөлтийг автоматаар дамжуулдаг. Олон жилийн турш эдгээр шаталсан өөрчлөлтүүд нь үл үзэгдэх гаж нөлөө хэлбэрээр ажиллаж байсан — өдөөх мэдэгдлийг бүртгэсэн боловч каскадын нөлөөлөлд өртсөн доод мөрүүдийг хоёртын бүртгэлд бие даасан үйл явдал болгон тэмдэглээгүй.

Энэ нь хяналт шалгалт биш байсан. MySQL-ийн баг ижил схем, гадаад түлхүүрийн тодорхойлолтыг хуваалцсан хуулбарууд нь үндсэн мэдэгдлийг дахин тоглуулах үед автоматаар каскадуудыг хуулбарлах болно гэж анх үндэслэсэн. Логикийг барьж аваагүй болтол нь. Схемийн шилжилт, хэсэгчилсэн хуулбарлах шүүлтүүр, хадгалах хөдөлгүүрийн өөр өөр тохиргоо, цаг хугацааны хувьд сэргээх хувилбарууд бүгд энэ таамаглалын эмзэг байдлыг илчилсэн. Ганц удаа орхигдсон каскад нь үйлдвэрлэлийн чухал асуултууд буруу илэрц гаргах хүртэл эрүүл мэт харагдах ялгаатай хуулбаруудыг үүсгэж болзошгүй.

Шинэ каскадын бүртгэл хэрхэн ажилладаг вэ?

Шинэчлэгдсэн зан үйлийн ачаар MySQL нь каскадын үйлдлүүдийн нөлөөлөлд өртсөн мөрүүдийг хоёртын бүртгэлд тодорхой мөрийн үйл явдлууд болгон бичдэг бөгөөд DML мэдэгдлийн дараа шууд бичдэг. Хэрэв та эцэг эхийн бүртгэлийг устгаж, гурван хүүхдийн бүртгэлийг дараалалд оруулбал дөрвөн мөрийн өөрчлөлт бүгд тусдаа, шалгах боломжтой бүртгэлийн оруулгууд болж харагдана.

Энд бүртгэлийн формат чухал. Мөр дээр суурилсан хоёртын бүртгэл (RBL) нь үүнийг бүрэн үнэнч байдлаар хийх боломжтой формат юм. Мэдэгдэлд суурилсан бүртгэл нь динамик каскадын үр дүнг найдвартай авч чадахгүй, учир нь үр дүн нь SQL текст өөрөө биш харин гүйцэтгэлийн үеийн өгөгдлийн төлөвөөс хамаардаг. Холимог горимын бүртгэл нь эдгээр тохиолдолд мөрийн форматыг сонгон хэрэглэнэ.

Гол ойлголт: Мөр дээр суурилсан хоёртын бүртгэлийг идэвхжүүлэх нь зөвхөн хуулбарлах сонголт биш бөгөөд энэ нь гадаад түлхүүрийн хязгаарлалтыг ашигладаг систем дэх өгөгдлийн өөрчлөлт бүрийг бүрэн, баталгаажуулах боломжтой аудитын мөрийг авах урьдчилсан нөхцөл юм. Үүнгүйгээр каскадын эффектүүд таны хэрэглүүрт хэсэгчлэн үл үзэгдэх болно.

Өгөгдлийн сангийн администраторууд өөрсдийн binlog_format тохиргоог баталгаажуулж, тогтвортой байдлын баталгааг хангахын тулд хуулбар талын каскадын гүйцэтгэлд урьд өмнө найддаг байсан бол хуулбарлах топологийн таамаглалуудыг хянан үзэх хэрэгтэй.

Энэ нь хэрэглүүрийн багуудын хувьд бодит ертөнцийн ямар асуудлуудыг засах вэ?

Үр дагавар нь онолын зөв хуулбарлахаас хамаагүй илүү юм. Олон түрээслэгчийн SaaS бүтээгдэхүүн, цахим худалдааны хөдөлгүүр, эрүүл мэндийн бүртгэлийн систем зэрэг харилцааны өгөгдлийн загвар бүхий нарийн төвөгтэй бизнесийн платформ ажиллуулж буй багууд энэ өөрчлөлтийг шийдвэрлэх тодорхой эвдрэлийн горимуудтай тулгарсан:

  • Цагдаа сэргээх нарийвчлал: Өгөгдлийн санг бөөнөөр устгахаас өмнөх мөч хүртэл сэргээх нь зөвхөн идэвхжүүлэх асуулгыг биш, бүх шаталсан устгалуудыг бүртгэж, сэргээгдсэний дараа хий үзэгдэлтэй мөрүүд дахин гарч ирэхээс сэргийлнэ.
  • Өгөгдөл цуглуулах (CDC) дамжуулах шугамыг өөрчлөх: Хоёртын бүртгэлийн үйл явдлыг Кафка эсвэл бусад угаалтуур руу дамжуулдаг Дебезиум, Максвелл зэрэг хэрэгслүүд одоо өгөгдлийн мутац бүрийн бүрэн дүр зургийг хүлээн авч, урсгалын урсгалын үнэн зөв төсөөллийг идэвхжүүлдэг.
  • Аудит ба дагаж мөрдөх бүртгэлийн бүртгэл: Өгөгдлийн бүрэн мэдээлэл авах шаардлагатай зохицуулалттай салбарууд одоо ямар эцэг эхийн үйл ажиллагааны үр дүнд яг аль хүүхдийн бүртгэлийг устгасныг хянах боломжтой бөгөөд энэ нь хэрэглээний түвшний тойрч гарах арга замгүйгээр аудитын шаардлагыг хангасан.
  • Хуулбарын зөрүүг илрүүлэх: Хуулбарлах мөрийн тоо эсвэл хяналтын нийлбэрийг үндсэн мөртэй харьцуулах хяналтын хэрэгслүүд нь аливаа зөрүүг хурдан тодорхойлж, оношлохын тулд үнэн зөв бүртгэлийн өгөгдөлтэй болсон.
  • Олон эх сурвалж ба дугуй хуулбар: Давхар давхцахаас зайлсхийхийн тулд хуулбарууд дээрх гадаад түлхүүрүүдийг идэвхгүй болгох шаардлагатай байсан цогц топологи нь илүү бүтэцтэй, урьдчилан таамаглах боломжтой үйл явдлын урсгалыг бий болгодог.

Өгөгдлийн сангийн архитекторууд хуулбарлах болон сэргээх стратегиа хэрхэн тохируулах ёстой вэ?

Какадтай хоёртын бүртгэлийг нэвтрүүлэх нь идэвхгүй шинэчлэл биш бөгөөд энэ нь одоо байгаа дэд бүтцийг зориудаар хянаж үзэх шаардлагатай. Каскадын үүсгэсэн нэмэлт бүртгэлийн үйл явдлууд нь хоёртын бүртгэлийн эзлэхүүнийг нэмэгдүүлдэг бөгөөд энэ нь таны схем шаталсан хязгаарлалтыг хэр түрэмгий ашиглаж байгаагаас шалтгаална. Архитекторууд нэмэгдсэн дискний оролт/гаралт, сүлжээний хуулбарын зурвасын өргөн, бүртгэлийн эргэлтийн давтамж зэргийг тооцох ёстой.

💡 DID YOU KNOW?

Mewayz replaces 8+ business tools in one platform

CRM · Invoicing · HR · Projects · Booking · eCommerce · POS · Analytics. Free forever plan available.

Start Free →

Хуулбарууд дээр багууд гадаад түлхүүрийн хязгаарлалтыг идэвхжүүлсэн эсвэл идэвхгүй болгосон эсэхийг шалгах ёстой. Түүхэн нийтлэг практик нь хуулбарууд дээрх гадаад түлхүүрүүдийг идэвхгүй болгох явдал байв (foreign_key_checks=OFF) анхан шатны хэрэгжилтийг зохицуулах боломжийг олгодог. Каскадууд одоо тодорхой нэвтэрч байгаа тул өөрийн гадаад түлхүүрийн хязгаарлалтыг боловсруулдаг хуулбар дээр тэдгээр бүртгэсэн каскадын үйл явдлуудыг ашиглах нь давхардсан устгах эсвэл зөрчилд хүргэж болзошгүй юм. Хуулбарлах гинжин хэлхээний тохиргоог тохируулах нь одоо урьд өмнөхөөсөө илүү чухал болсон.

mysqldump гэх мэт логик нөөцлөх хэрэгслүүд эсвэл Percona XtraBackup гэх мэт физик нөөцлөлтийн шийдлүүдийг ашигладаг багуудын хувьд сэргээх процедурыг шинэ бүртгэлийн бүтэцтэй харьцуулснаар сэргээх runbook-ууд үнэн зөв хэвээр үлдэнэ. Үйлдвэрлэлийг төлөөлөх өгөгдлийн эзлэхүүнтэй харьцуулах орчинд сэргээх хувилбаруудыг турших нь улирал тутмын стандарт дасгал байх ёстой.

Энэ нь PostgreSQL болон бусад мэдээллийн сан нь каскадын бүртгэлийг хэрхэн зохицуулдагтай харьцуулах вэ?

PostgreSQL нь гадаад түлхүүрийн каскадын эффектүүдийг нэгдүгээр зэрэглэлийн WAL (Write-Ahead Log) бичлэг болгон удаан хугацаагаар бүртгэж ирсэн. Каскадын триггерт хүрсэн мөр бүрийг WAL-д тусад нь бичдэг бөгөөд энэ нь PostgreSQL-ийн хуулбар болон логик тайлалтыг угаасаа каскадтай болгодог. Энэхүү дизайны философи нь зөвхөн шалтгаан биш бүх үр нөлөөг бүртгэх явдал юм.

Microsoft SQL Server нь ижил төстэй байдлаар эгнээний түвшинд гүйлгээний бүртгэлээр дамжуулан шаталсан өөрчлөлтүүдийг бүртгэдэг бөгөөд энэ нь SQL Server дээрх CDC шийдлүүдийг нарийн төвөгтэй харилцааны схемд хүртэл хялбар болгодог. MySQL-ийн шинэчлэлт нь үүнийг эдгээр системтэй архитектурын хувьд илүү ойртуулж, мэдээллийн сангийн инженерүүдийн MySQL-ийг өндөр бүрэн бүтэн харилцааны ажлын ачааллыг үнэлэх үед гаргасан гол эсэргүүцлийг багасгасан.

Олон өгөгдлийн сангийн орчин ажиллуулдаг эсвэл шилжих замыг үнэлдэг байгууллагуудын хувьд энэ нэгдэл чухал юм. Энэ нь үйл ажиллагааны багуудын ойлгож, хэрэглүүр болон журамд тооцох ёстой платформуудын хоорондох зан үйлийн гадаргуугийн талбайг багасгадаг.

Байнга асуудаг асуултууд

Энэ өөрчлөлт MySQL 5.7 эсвэл зөвхөн MySQL 8.x-д нөлөөлөх үү?

Какадын бүртгэлийн зан үйлийн сайжруулалт нь үндсэндээ MySQL 8.0 болон түүнээс хойшхи хувилбаруудтай холбоотой бөгөөд 8.0.x цувралын бие даасан цэгийн хувилбаруудтай холбоотой тусгай сайжруулалтууд юм. MySQL 5.7 нь 2023 оны 10-р сард ашиглалтын хугацаа дууссан бөгөөд одоог хүртэл ажиллаж байгаа багууд хуулбарлах тууштай байдлын үүднээс каскадын бүртгэл хөтлөх үйлдлийг найдваргүй гэж үзэх ёстой. MySQL 8.0 эсвэл MySQL 8.4 LTS хувилбар руу шинэчлэх нь одоогийн хоёртын бүртгэлийн горимд хандахыг зөвлөж байна.

Бүтэн каскадын бүртгэлийг идэвхжүүлснээр бичих гүйцэтгэл мэдэгдэхүйц доройтох уу?

Нэмэлт зардал нь бодитой боловч сайн индексжүүлсэн гадаад түлхүүрийн хамаарал бүхий схемүүдийн хувьд ихэвчлэн бага байдаг. Нэмэлт лог бичвэрүүд нь каскад бүрийн нөлөөлөлд өртсөн хүүхдийн эгнээний тоотой шууд хамааралтай. Гүн үүрлэсэн каскадын гинж эсвэл маш том хүүхдийн хүснэгт бүхий схемүүд нь хэмжигдэхүйц дамжуулалтын нөлөөллийг харж болно. Үйлдвэрлэлд нэвтрүүлэхээс өмнө өгөгдлийн бодит хэмжээгээр профайл хийх нь таны ажлын ачааллын зардлыг тооцоолох зөв арга юм.

Би бодит цагийн аналитик дамжуулах шугамыг дамжуулахын тулд хоёртын бүртгэлийн каскадын өгөгдлийг ашиглаж болох уу?

Тийм ээ, энэ бол хамгийн анхаарал татахуйц хэрэглээний тохиолдлуудын нэг юм. Хоёртын бүртгэлд бүрэн шаталсан үйл явдлуудыг хийснээр CDC хэрэгслүүд нь каскадын эффектүүдийг гараар нийтлэхийн тулд хэрэглээний түвшний дэгээ шаардалгүйгээр үнэн зөв материалжуулсан харагдац, хайлтын индекс болон үйл явдлын урсгалыг бий болгож чадна. Бодит цагийн хяналтын самбар, залилан илрүүлэх систем эсвэл үйл ажиллагааны аналитик давхаргыг бий болгож буй багууд бүртгэлийн урсгалын бүрэн байдлыг олж, дамжуулах хоолойн нарийн төвөгтэй байдлыг эрс багасгадаг.


Өсөн нэмэгдэж буй бизнесийн платформыг удирдана гэдэг нь таны үндсэн дэд бүтцийн шийдвэрүүд цаг хугацааны явцад улам бүр нэмэгдэнэ гэсэн үг бөгөөд өнөөдөр таны мэдээллийн санг хуулбарлах стратеги дахь цоорхой маргааш томоохон хэмжээний осол болно. Mewayz нь найдвартай байдал, чадвараа алдахаас татгалздаг багуудад зориулан бүтээгдсэн 207 модуль бүхий бизнесийн үйлдлийн систем бөгөөд CRM, цахим худалдаанаас эхлээд агуулгын удирдлага, аналитик зэрэг бүхий л зүйлийг ажиллуулдаг 138,000 гаруй хэрэглэгчдийн итгэлийг хүлээсэн бөгөөд бүгд нэг платформ дээр сард ердөө 19 доллараас эхэлдэг.

Өнөөдөр app.mewayz.com хаягаар Mewayz ажлын талбараа эхлүүлж, өөрийн мэддэг зүйлээ хангасан дэд бүтцээр бизнесээ байгуулаарай.

Try Mewayz Free

All-in-one platform for CRM, invoicing, projects, HR & more. No credit card required.

Start managing your business smarter today

Join 30,000+ businesses. Free forever plan · No credit card required.

Ready to put this into practice?

Join 30,000+ businesses using Mewayz. Free forever plan — no credit card required.

Start Free Trial →

Ready to take action?

Start your free Mewayz trial today

All-in-one business platform. No credit card required.

Start Free →

14-day free trial · No credit card · Cancel anytime