ฉันขอเสนอข้อสังเกตเล็กน้อย:
ใช่ฐานข้อมูลเป็นสถานะโกลบอล
ในความเป็นจริงมันเป็นสถานะที่เหนือระดับโลกในขณะที่คุณชี้ให้เห็น มันเป็นสากล! ขอบเขตของมันสร้างความหมายอะไรหรือใครก็ตามที่เชื่อมต่อกับฐานข้อมูล และฉันสงสัยว่าหลาย ๆ คนที่มีประสบการณ์สามารถบอกเล่าเรื่องราวสยองขวัญเกี่ยวกับวิธีที่ "สิ่งแปลก" ในข้อมูลนำไปสู่ "พฤติกรรมที่ไม่คาดคิด" ในแอปพลิเคชันที่เกี่ยวข้องอย่างน้อยหนึ่งรายการ ...
หนึ่งในผลที่อาจเกิดขึ้นจากการใช้ตัวแปรโกลบอลคือ "โมดูล" สองตัวที่แตกต่างกันจะใช้ตัวแปรนั้นเพื่อวัตถุประสงค์ที่ชัดเจน และในขอบเขตนั้นตารางฐานข้อมูลก็ไม่ต่างกัน มันสามารถตกเป็นเหยื่อของปัญหาเดียวกัน
อืม ... นี่คือสิ่งที่:
หากโมดูลไม่ทำงานภายนอกสิ่งใดก็ไม่ทำอะไรเลย
โมดูลที่มีประโยชน์สามารถได้รับข้อมูลหรือสามารถหาได้ และก็สามารถกลับข้อมูลหรือสามารถปรับเปลี่ยนรัฐ แต่ถ้ามันไม่ได้มีปฏิสัมพันธ์กับโลกภายนอกในทางใดทางหนึ่งมันก็อาจจะไม่ทำอะไรเลย
ตอนนี้การตั้งค่าของเราคือการรับข้อมูลและส่งคืนข้อมูล โมดูลส่วนใหญ่นั้นง่ายต่อการเขียนหากสามารถเขียนได้โดยไม่สนใจสิ่งที่โลกภายนอกกำลังทำอยู่ แต่ในที่สุดสิ่งที่จำเป็นต้องค้นหาข้อมูลและแก้ไขสถานะภายนอกระดับโลกนั้น
นอกจากนี้ในแอปพลิเคชันในโลกแห่งความจริงข้อมูลมีอยู่เพื่อให้สามารถอ่านและอัปเดตโดยการดำเนินการต่างๆ ปัญหาบางอย่างได้รับการป้องกันโดยการล็อคและการทำธุรกรรม แต่การป้องกันไม่ให้การดำเนินการเหล่านี้ขัดแย้งกันในหลักการในตอนท้ายของวันเพียงแค่เกี่ยวข้องกับการคิดอย่างระมัดระวัง (และทำผิดพลาด ... )
แต่โดยทั่วไปเราไม่ได้ทำงานโดยตรงกับรัฐทั่วโลก
ยกเว้นว่าแอปพลิเคชันอยู่ในชั้นข้อมูล (ใน 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.
}
}
เราไม่ใช้ฐานข้อมูลสำหรับสิ่งที่อยู่ระหว่างดำเนินการ / ปฏิบัติเช่นนั้น และมันอาจเป็นลักษณะที่ช้าของฐานข้อมูลและความสะดวกสบายของตัวแปรง่าย ๆ ที่ขัดขวางเรา: การมีปฏิสัมพันธ์ที่เชื่องช้าและเชื่องช้าของเรากับฐานข้อมูลทำให้ผู้สมัครไม่ถูกต้องสำหรับข้อผิดพลาดหลายอย่างที่เราเคยทำกับตัวแปรในอดีต