ใครสามารถให้คำอธิบายที่ตรงไปตรงมา (แต่ไม่ง่ายกว่าที่เป็นไปได้) เกี่ยวกับธุรกรรมที่ใช้กับคอมพิวเตอร์ (แม้ว่าจะคัดลอกมาจาก Wikipedia)
ใครสามารถให้คำอธิบายที่ตรงไปตรงมา (แต่ไม่ง่ายกว่าที่เป็นไปได้) เกี่ยวกับธุรกรรมที่ใช้กับคอมพิวเตอร์ (แม้ว่าจะคัดลอกมาจาก Wikipedia)
คำตอบ:
ธุรกรรมคือหน่วยงานที่คุณต้องการถือว่าเป็น "ทั้งหมด" มันจะต้องเกิดขึ้นเต็มหรือไม่เกิดขึ้นเลย
ตัวอย่างคลาสสิกคือการโอนเงินจากบัญชีธนาคารหนึ่งไปยังอีกบัญชีหนึ่ง ในการทำเช่นนั้นคุณต้องถอนจำนวนเงินออกจากบัญชีต้นทางก่อนจากนั้นจึงฝากเข้าบัญชีปลายทาง การดำเนินการจะต้องประสบความสำเร็จอย่างเต็มที่ ถ้าคุณหยุดกลางคันเงินจะหายไปและนั่นก็แย่มาก
ในธุรกรรมฐานข้อมูลสมัยใหม่ยังทำสิ่งอื่น ๆ เช่นตรวจสอบให้แน่ใจว่าคุณไม่สามารถเข้าถึงข้อมูลที่บุคคลอื่นเขียนไว้ครึ่งหนึ่งได้ แต่แนวคิดพื้นฐานคือเดียวกัน - การทำธุรกรรมจะมีการตรวจสอบให้แน่ใจว่าว่าสิ่งที่เกิดขึ้นไม่มีข้อมูลที่คุณทำงานด้วยจะอยู่ในสภาพที่เหมาะสม พวกเขารับประกันว่าจะไม่มีสถานการณ์ที่เงินถูกถอนออกจากบัญชีหนึ่ง แต่จะไม่นำไปฝากอีกบัญชีหนึ่ง
ธุรกรรมเป็นวิธีการแสดงการเปลี่ยนแปลงสถานะ การทำธุรกรรมมีคุณสมบัติสี่ประการหรือที่เรียกกันทั่วไปว่ากรด:
ดูรายการ Wikipedia ACIDสำหรับรายละเอียดเพิ่มเติม
แม้ว่าโดยทั่วไปจะใช้กับฐานข้อมูล แต่ก็ไม่จำเป็นต้องเป็นเช่นนั้น (โดยเฉพาะอย่างยิ่งโปรดดูที่Software Transactional Memory )
นี่คือคำอธิบายง่ายๆ คุณต้องโอนเงิน 100 เหรียญจากบัญชี A ไปยังบัญชี B คุณสามารถทำได้:
accountA -= 100;
accountB += 100;
หรือ
accountB += 100;
accountA -= 100;
หากมีบางอย่างผิดพลาดระหว่างการดำเนินการครั้งแรกและครั้งที่สองในคู่ที่คุณมีปัญหา - เงิน 100 เหรียญหายไปหรือดูเหมือนว่าไม่มีที่ไหนเลย
ธุรกรรมคือกลไกที่อนุญาตให้คุณทำเครื่องหมายกลุ่มของการดำเนินการและดำเนินการในลักษณะที่พวกเขาทั้งหมดดำเนินการ (กระทำ) มิฉะนั้นสถานะของระบบจะเหมือนกับว่าพวกเขายังไม่ได้เริ่มดำเนินการเลย (ย้อนกลับ)
beginTransaction;
accountB += 100;
accountA -= 100;
commitTransaction;
จะโอนเงิน 100 เหรียญหรือปล่อยให้ทั้งสองบัญชีอยู่ในสถานะเริ่มต้น
"ชุดคำสั่งการจัดการข้อมูลที่ต้องสมบูรณ์หรือล้มเหลวทั้งหมดโดยปล่อยให้ฐานข้อมูลอยู่ในสถานะที่สอดคล้องกัน"
ธุรกรรมคือลำดับของการดำเนินการ SQL อย่างน้อยหนึ่งรายการที่ถือว่าเป็นหน่วย
โดยเฉพาะอย่างยิ่งธุรกรรมแต่ละรายการดูเหมือนจะทำงานแยกกันและยิ่งไปกว่านั้นหากระบบล้มเหลวธุรกรรมแต่ละรายการจะดำเนินการอย่างครบถ้วนหรือไม่ทั้งหมด
แนวคิดของการทำธุรกรรมมีแรงจูงใจจากความกังวลสองประการที่เป็นอิสระอย่างสมบูรณ์ หนึ่งต้องเกี่ยวข้องกับการเข้าถึงฐานข้อมูลพร้อมกันโดยไคลเอนต์หลายรายและอีกอย่างเกี่ยวข้องกับการมีระบบที่ยืดหยุ่นต่อความล้มเหลวของระบบ
ธุรกรรมรองรับสิ่งที่เรียกว่าคุณสมบัติของกรด:
http://en.wikipedia.org/wiki/Database_transaction
http://en.wikipedia.org/wiki/ACID
ACID = A tomicity, C onsistency, I solation, D urability
เมื่อคุณต้องการให้ทรัพยากรการทำธุรกรรมหลายรายการมีส่วนร่วมในธุรกรรมเดียวคุณจะต้องใช้บางอย่างเช่นโซลูชันการคอมมิตสองเฟส XAได้รับการสนับสนุนอย่างกว้างขวาง
ฉันขอแนะนำว่าคำจำกัดความของ 'การประมวลผลธุรกรรม' จะมีประโยชน์มากกว่าเนื่องจากครอบคลุมธุรกรรมเป็นแนวคิดในวิทยาการคอมพิวเตอร์
จากวิกิพีเดีย:
ในวิทยาการคอมพิวเตอร์การประมวลผลธุรกรรมคือการประมวลผลข้อมูลที่แบ่งออกเป็นส่วนบุคคลการดำเนินการที่แบ่งแยกไม่ได้เรียกว่าธุรกรรม การทำธุรกรรมแต่ละครั้งต้องสำเร็จหรือล้มเหลวเป็นหน่วยที่สมบูรณ์ มันไม่สามารถอยู่ในสถานะกลางได้
http://en.wikipedia.org/wiki/Transaction_processing#Implementations
นอกเหนือจากคำตอบข้างต้นแล้วควรสังเกตว่าอย่างน้อยในทางทฤษฎีไม่มีข้อ จำกัด ใด ๆ เกี่ยวกับทรัพยากรประเภทใดที่เกี่ยวข้องกับธุรกรรม
โดยส่วนใหญ่แล้วจะเป็นเพียงฐานข้อมูลหรือฐานข้อมูลที่แตกต่างกันหลายแห่ง แต่ก็เป็นไปได้เช่นกันที่เครื่องพิมพ์จะมีส่วนร่วมในธุรกรรมและอาจทำให้ธุรกรรมนั้นล้มเหลวได้เช่นในกรณีที่กระดาษติด
ธุรกรรมสามารถกำหนดเป็นชุดของงานที่ถือว่าเป็นหน่วยประมวลผลขั้นต่ำ หน่วยประมวลผลขั้นต่ำแต่ละหน่วยไม่สามารถแบ่งออกได้อีก
การดำเนินการหลักของธุรกรรมคือการอ่านและเขียน
ธุรกรรมทั้งหมดต้องมีคุณสมบัติสี่ประการที่เรียกกันทั่วไปว่าคุณสมบัติของกรดเพื่อจุดประสงค์ในการรับรองความถูกต้องความสมบูรณ์และความสมบูรณ์ของข้อมูล
ฉันคิดว่าธุรกรรมคือการกระทำของปรมาณูในแง่ของ DBMS
นั่นหมายความว่าไม่สามารถแยกออกจากกันได้ ใช่ในการส่งข้อมูลอาจมีคำสั่งหลายคำสั่งให้ระบบดำเนินการ แต่จะรวมเข้าด้วยกันเพื่อทำงานพื้นฐานให้เสร็จสิ้น
ตัวอย่างเช่น. คุณต้องเดินผ่านสะพาน (ลองถือว่านี่เป็นการเปลี่ยน) และในการทำเช่นนี้คุณต้องมี 100 ขั้นตอน โดยรวมแล้วจะไม่สามารถแยกขั้นตอนเหล่านี้ได้ เมื่อคุณทำสำเร็จไปแล้วครึ่งหนึ่งมีทางเลือกให้คุณเพียงสองทาง: ทำต่อให้เสร็จและกลับไปที่จุดเริ่มต้น มันเหมือนกับผลลัพธ์ของธุรกรรม: สำเร็จ (มุ่งมั่น) และล้มเหลว (ย้อนกลับ)
ธุรกรรมเป็นหน่วยประมวลผลข้อมูลที่แบ่งแยกไม่ได้ - ธุรกรรมทั้งหมดต้องมีคุณสมบัติของกรด:
เช่น: Atomicity, Consistency, Isolation and Durable Transaction คือทั้งหมดหรือไม่มีอะไรเลย แต่ไม่ใช่การคั่นกลาง (หมายความว่าหากคุณโอนเงินจากบัญชีหนึ่งไปยังอีกบัญชีหนึ่งบัญชีหนึ่งจะต้องสูญเสียไปมากและอีกบัญชีหนึ่งจะต้องได้รับเงินจำนวนนั้น แต่ถ้า คุณโอนเงินจากบัญชีหนึ่งและอีกบัญชียังว่างอยู่ซึ่งจะไม่ใช่ธุรกรรม)