💡 ถ้าพูดถึงสาย Database แล้ว จะมีตัวย่ออยู่ชุดนึงที่ฟังครั้งแรกแล้วต้องเอ๊ะว่า นี่วงการคอมพิวเตอร์หรือเคมีแน่นะ ? นั่นก็คือคำว่า ACID นั่นเอง โดย ACID ในที่นี้ไม่ได้แปลว่ากรดแต่อย่างใด เพราะมันคือคุณสมบัติที่ Database transaction ต้องมีต่างหาก !
.
Database Transaction คืออะไร ?
.
ก่อนจะไปที่เรื่อง ACID แอดขออธิบายเพิ่มเติมสำหรับมือใหม่นิสนึง เจ้า Database Transaction คือชุดคำสั่งที่กระทำบางสิ่งกับ Database ไม่ว่าจะสร้าง อ่าน แก้ไข หรือลบข้อมูล เพื่อให้ได้ผลลัพธ์ตามที่ต้องการ
.
ถ้ายังนึกไม่ออก เรามีตัวอย่าง !
“ถ้า A จะโอนเงินให้ B จำนวน 100 บาท” เพื่อน ๆ คิดว่า Transaction สำหรับโอนเงินจะเป็นยังไง ?
.
สมมติว่า คำสั่งที่จะเกิดขึ้นตอนโอนเงินมีดังนี้
1) เข้าไปอ่านข้อมูลว่า ขณะนี้ A และ B มีเงินในบัญชีเท่าไหร่
2) แก้ไขจำนวนเงินของ A โดยลบออก 100 บาท
3) แก้ไขจำนวนเงินของ B โดยเพิ่มขึ้น 100 บาท
4) เพิ่มข้อมูลประวัติการโอนเงินระหว่าง A ไปยัง B
.
แค่นี้ เราก็จะได้ 1 Transaction สำหรับโอนเงินจาก A ไป B จำนวน 100 บาทแล้ว~~
.
พอเข้าใจเรื่อง Database Transaction กันแล้ว เราก็จะมาดูกันต่อว่า คุณสมบัติของ Transaction ที่ดีเป็นยังไงนะ? ถ้าพร้อมแล้วไปต่อกันเลย
.
.
ทำไม Database Transaction ต้อง ACID?
.
ACID ย่อมาจาก Atomicity, Consistency, Isolation และ Durability ซึ่งทั้ง 4 ตัวเป็นคุณสมบัติที่ทำให้ Transaction บน Database นั้นน่าเชื่อถือและมีความถูกต้อง
.
🔸 Atomicity
.
มีสโลแกนว่า แต่ละ Transaction จะต้องเป็นแบบ “All or nothing” หมายถึง Transaction จะสำเร็จก็ต่อเมื่อ ทุกคำสั่งในนั้นทำงานได้สำเร็จจริง แต่ถ้ามีคำสั่งไหนหรือส่วนไหนที่ทำไม่สำเร็จ ทั้ง Transaction นั้นก็จะถือว่าไม่สำเร็จไปเลย จึงเป็นที่มาของวลี “All or nothing” นั่นเอง
.
จากตัวอย่าง Transaction ที่แอดแปะไว้ข้างบน
.
“ถ้า A จะโอนเงินให้ B จำนวน 100 บาท”
1) เข้าไปอ่านข้อมูลว่า ขณะนี้ A และ B มีเงินในบัญชีเท่าไหร่
2) แก้ไขจำนวนเงินของ A โดยลบออก 100 บาท
3) แก้ไขจำนวนเงินของ B โดยเพิ่มขึ้น 100 บาท
4) เพิ่มข้อมูลประวัติการโอนเงินระหว่าง A ไปยัง B
.
ถ้าทำคำสั่งที่ 3 อยู่ แล้ว Server ล่ม เงินของ B จะไม่ถูกเพิ่มอีก 100 บาท แปลว่ามีคำสั่งที่ทำไม่สำเร็จเกิดขึ้น ดังนั้นทั้ง Transaction นี้ก็จะถือว่าไม่สำเร็จนั่นเอง
.
.
🔸 Consistency
.
Consistency แปลว่า ความสอดคล้อง ดังนั้น ไม่ว่าใน Transaction นั้น เราจะทำอะไรกับข้อมูลบ้าง ข้อมูลนั้นก็ต้องสอดคล้องกับกฎเกณฑ์และเงื่อนไขที่เราออกแบบไว้บน Database เช่น ข้อมูลจำนวนเงินต้องเป็นตัวเลขเท่านั้น เป็นตัวอักษรไม่ได้
.
นอกจากนี้ จะต้องไม่กระทบกับข้อมูลที่มีอยู่แล้วด้วย ถ้ามีคำสั่งที่ทำให้ข้อมูลไม่ถูกต้อง Transaction นั้นจะถูก Rollback หรือก็คือยกเลิก Transaction นั้นเพื่อย้อนกลับไปตอนที่ข้อมูลยังถูกต้องอยู่ เช่น ถ้ากำลังเพิ่มประวัติการโอนเงิน มี Transaction การโอนอื่นกำลังจะเพิ่มประวัติอยู่เหมือนกัน รหัสของการโอนทั้ง 2 กรณีนี้จะต้องไม่เหมือนกัน ไม่งั้น Transaction ที่มาทีหลังจะต้อง Rollback
.
.
🔸 Isolation
.
แน่นอนว่าบน Database อาจมีหลาย Transactions เกิดไล่เลี่ยกันและอาจทำบนข้อมูลส่วนเดียวกัน ถ้า Transaction ที่เกิดขึ้นยังไม่เสร็จ คำสั่งใน Transaction นั้นจะต้องไม่มีผลกับ Transaction อื่น ๆ จนกว่าจะทำการ Commit (ยืนยันการเปลี่ยนแปลงข้อมูลจากการกระทำของ Transaction)
.
.
🔸 Durability
.
Durability แปลว่า ความคงทน ดังนั้น ถ้า Transaction ไหน ถูก Commit แล้ว ข้อมูลจาก Transaction นั้น ก็จะต้องครบถ้วนและอยู่คงทนตลอดไปใน Database ไม่ว่าจะไฟดับ Server ล่ม หรือเกิดอะไรขึ้นก็ตาม
.
.
เป็นยังไงกันบ้างเอ่ย ถ้าอยากให้แอดมาแชร์เรื่องอะไรอีกก็คอมเมนต์กันมาได้น้า~ และสำหรับโพสต์นี้ ชอบกดไลก์ ใช่กดแชร์ เป็นกำลังใจให้แอดและทีม BorntoDev ด้วยนะคะ ❤️
.
.
borntoDev - 🦖 สร้างการเรียนรู้ที่ดีสำหรับสายไอทีในทุกวัน
#ACID #database #BorntoDev
ถ้า หมายถึง 在 Drama-addict Facebook 的最佳解答
ทบทวนข้อมูลกันเล็กน้อย เกี่ยวกับ covid-19 และค่า R0 อันใหม่ของมัน
ค่า R0 หมายถึง ตัวเลขที่บ่งบอกการแพร่ระบาดของโรคนั้นๆ ว่าจากผู้ติดเชื้อ 1 คน จะสามารถแพร่เชื้อต่อไปได้ประมาณกี่คน เช่น ถ้า R0 = 2 ก็จะแพร่จาก 1 ไปสอง สอง ไปสี่
ยิ่งค่า R0 เยอะ ยิ่งแพร่ได้ไว
ที่ผ่านมาเรามีโรคที่ค่า R0 เยอะหลายโรค เช่น อีสุกอีใส หัด หัดเยอรมัน พวกนี้แพร่กระจายได้ง่าย แต่อัตราการเสียชีวิตของผู้ติดเชื้อเหล่านี้น้อยมาก
ส่วน covid-19 ในช่วงแรกๆ สายพันธ์ดั้งเดิมเราพบว่า ค่า R0 มันประมาณ 2
(และอาจเพิ่มเป็น 4 5 ได้ในบางสภาพแวดล้อม เช่น ในพื้นที่ปิด ที่อากาศไหลเวียนไม่ดี เช่นในเรือสำราญ)
ปรากฏว่าค่า R0 ของ covid-19 สายพันธ์เดลต้าตอนนี้ จาก CDC ระบุว่า มันอยู่ที่ 5-8 พอๆกับอีสุกอีใส
ดังนั้นความสามารถในการแพร่ของมันจะเป็นจาก 1 ไป8 จาก 8 ไป 64 แล้วก็ทวีคูณไปเรื่อยๆ
ส่วนอัตราการเสียชีวิต ถ้าเอาในกลุ่มเสี่ยงคือผู้สูงอายุและมีโรคประจำตัว จะพบว่าอัตราการป่วยหนัจนเสียชีวิต อยุ่แถวๆ 10 กว่า % เลยทีเดียว
เอาเป็นว่าตั้งแต่เข้าสู่โลกยุคใหม่เป็นต้นมา เรายังไม่เคยเจอโรคอะไรที่มันวินาสสันตะโรในลักษณะนี้มาก่อน อย่างพวกไข้หวัดสเปน ไข้หวัดฮ่องกงสมัยก่อนที่ว่าโหด ก็ยังไม่โหดขนาดนี้
ดังนั้น อย่ามองว่า มันคือหวัดธรรมดา
จงมองว่า มันคือโรคร้ายที่น่าสะพรึงกลัว และต้องป้องกันตัวเองกันต่อไปอย่างเข้มข้น ถูกต้องแล้ว
มิตรสหายแพทย์ชื่อหมอแมวท่านนึงกล่าวว่า
ย้ำอีกครั้ง COVID ไม่ใช่หวัดธรรมดา
อัตราตายแบบแรงๆ อาจจะไม่เท่า SARsหรือ MERs
แต่อัตราป่วยหนักก็มีสูง
ติดต่อง่าย ไม่มียาที่ชะงักและแพร่หลาย
ความที่ติดต่อง่ายและอาการปานกลางถึงหนักได้เยอะจะทำให้ระบบสาธารณสุขเต็มเร็ว คนที่ป่วยระดับกลางถึงหนัก จะตายได้ง่ายขึ้นหากไม่มีที่รักษา
คนที่อาการไม่หนักรอบนี้มีเยอะจริง แบบปราศจากอาการเลยมีกว่าครึ่ง แต่คนที่หนักเจียนตายก็เยอะ
รอบนี้เด็กอาการหนักได้มากขึ้น ไม่เหมือนรอบก่อน
ส่วนการอยู่ร่วมกับโรคนี้ให้ได้ สุดท้ายมันก็จะเป็นเช่นนั้นอยู่แล้ว เพราะมันจะลงเอยด้วยมีภูมิไม่จากการติดก็วัคซีน แล้วหลังจากนั้นภูมิบางส่วนจะทำให้การติดครั้งถัดๆไปเบาลงแบบไข้หวัดใหญ่
แต่มันไม่ใช่โรคหวัดธรรมดา
มันคือโรคที่มีอาการตั้งแต่เบาจนไม่รู้ตัวว่าเป็น ไปจนถึงหนักจนตายได้แม้มีทรัพยากรพร้อม
มันไม่ใช่หวัดธรรมดาครับ
(ง ื▿ ื)ว ใส่อีโมน่ารักๆเพื่อลดความหวาดกลัว
ถ้า หมายถึง 在 Zylnazter Facebook 的最佳貼文
รับสมัคร Marker ประจำช่อง สำหรับ Time stamp คลิปครับ
*** สำหรับคนที่ว่างดูย้อนหลังเป็นประจำและอยากดูแบบได้เงินด้วย ***
ขอเป็นคนที่สะดวกดูสตรีม หรือไม่ก็สะดวกดูย้อนหลัง เพื่อหาไฮไลท์ในแต่ละสตรีม จุดที่ดูแล้วรู้สึก สนุก หรือ ฮา เท่ หรือรู้สึกมันมีอะไรที่ตัดได้
หน้าที่และคุณสมบัติดังนี้ครับ 📢
📌 สามารถแยกเสียงของแต่ละคนในโบ๊ะบ๊ะ และคนที่มาเล่นด้วยบ่อยๆ ได้ แม้ไม่เห็น Overlay Discord เผื่อเล่นกันหลายคนครับ
📌 ตรงต่อเวลา ส่งงานไม่เกิน 1-2 วันหลังจากส่งให้ ถ้า accident จริงๆ สามารถแจ้งได้ และสามารถทำหลายคลิปเพื่อ Stock ไว้ได้ครับ
📌 มีหน้าที่ mark เวลาของตอนที่ฮาๆ หรือชอทเท่ๆ ของแต่ละไลฟ์ พร้อมใส่ข้อความ เหตุการณ์คร่าวๆ และถ้าฉากนั้นไม่แน่ใจว่าใช้ได้หรือเปล่า
ควรใส่แล้ว *หมายเหตุ* เอาไว้พิจารณาอีกที ตัวอย่างเช่น 02:52:33 พี่กายกระโดดปีนเสาไฟเหมือนคนบ้า น่ากลัวมากครับ เป็นต้น
📌 ขอคนแบ่งเวลาเป็น และทำแล้วไม่กระทบชีวิตประจำวันนะครับ ใครยังเรียนอยู่ แบ่งเวลาทำการบ้าน กินข้าว ให้ถูก ถ้ารู้ตัวว่าจะเมเนจเวลาไม่ได้ ทำให้นาฬิกาชีวิตรวน อันนี้ขอผ่านเลยนะครับ ต้องรู้ตัวเองน้า ไม่อยากให้สุขภาพเสียเพราะงานแบบนี้ครับ
📌 เรื่องเงิน จ่ายเงินเป็น job ครับ เสร็จแล้วจ่ายเลย ช่วยๆ กัน สำหรับน้องๆ หรือ ใครก็ตามที่อยู่บ้าน นั่งดูสตรีมผมเป็นประจำอยู่แล้ว และอยากหารายได้เสริม ในช่วงโควิด (จริงๆจ้างยาวแหละ เพราะผมไม่มีเวลานั่งดูไลฟ์ตัวเองย้อนหลังเลย)
สนใจทักเพจมานะครับ ขอคนที่อ่านเงื่อนไขแล้วรู้สึกว่าตัวเองสามารถทำได้นะครับ หมายถึง ไม่กระทบชีวิตตัวเองแน่ๆ อันนี้ห่วงมากๆครับ บางคนต้องเรียนไปด้วยงี้ กลัวรบกวนเวลาชีวิตประจำวัน กลัวไปกระทบเวลาอ่านหนังสือครับ
หวังว่าจะได้ร่วมงานกันครับ มัชเลิฟ ♥