ความสดใหม่ของข้อมูลประเทศเป็นหัวข้อที่ทีมมักให้ความสนใจตอนเกิดปัญหากับผู้ใช้แล้วเท่านั้น ทั้งที่ข้อมูลประเทศเป็นข้อมูลที่เปลี่ยนตลอดเวลา ไม่ว่าจะเป็นการเปลี่ยนชื่อ การเปลี่ยนสกุลเงิน หรือการปรับโครงสร้างการบริหาร บทความนี้จึงเสนอวิธีทำให้ข้อมูลทุกชิ้นบอกได้ว่ามันเก่าแค่ไหน และควรถูกเชื่อถือในขอบเขตใด
ข้อมูลประเทศมีอายุการใช้งานเพราะอะไร?
สาเหตุที่หนึ่งคือชื่อเรียกของประเทศและดินแดนมีการเปลี่ยนแปลงเป็นระยะ เมื่อชื่อเปลี่ยน ระบบที่เก็บชื่อเป็นค่าหลักจะเริ่มแสดงข้อมูลที่ไม่ตรงกับที่ผู้ใช้เห็นจากที่อื่น
สาเหตุที่สองคือสกุลเงินและหน่วยย่อยของสกุลเงินมีการเปลี่ยนแปลง ซึ่งกระทบทั้งการแสดงผลและการคำนวณ เมื่อการเปลี่ยนนี้ไม่ถูกนำเข้า ระบบจะแสดงค่าที่ผิดโดยไม่มีข้อผิดพลาดใด ๆ
สาเหตุที่สามคือโครงสร้างการบริหารภายในประเทศถูกปรับ ซึ่งกระทบรายการตัวเลือกที่ผู้ใช้ต้องเลือก และอาจทำให้ข้อมูลเดิมอ้างถึงหน่วยที่ไม่มีอยู่แล้ว
สาเหตุที่สี่คือระบบรหัสไปรษณีย์และระบบหมายเลขโทรศัพท์มีการเปิดใช้ ปรับปรุง หรือเลิกใช้ ซึ่งกระทบทั้งการตรวจความถูกต้องและการนำจ่าย
สาเหตุที่ห้าคือมาตรฐานสากลเองก็มีการปรับปรุงและเผยแพร่การเปลี่ยนแปลงเป็นระยะ ซึ่งเป็นเหตุผลว่าทำไมการอ้างอิงมาตรฐานจึงต้องมีวันที่กำกับ
ทำไมวันที่เก็บข้อมูลต้องถูกบันทึกไว้
เพราะเมื่อเกิดความขัดแย้งระหว่างสิ่งที่ระบบมีกับสิ่งที่ผู้ใช้เห็น คำถามแรกที่ต้องตอบคือข้อมูลของฝ่ายใดใหม่กว่า ถ้าไม่มีวันที่เก็บข้อมูล จะไม่มีทางตอบคำถามนี้ได้เลย
วันที่เก็บข้อมูลยังช่วยจำกัดขอบเขตการสงสัย เมื่อทราบว่าข้อมูลถูกเก็บเมื่อใด จะรู้ได้ทันทีว่าการเปลี่ยนแปลงที่เกิดหลังจากนั้นยังไม่ถูกนำเข้า และไม่ต้องไปตรวจทั้งชุดข้อมูล
นอกจากวันที่ ยังต้องมีขอบเขตการใช้งาน ซึ่งบอกว่าข้อมูลนั้นใช้กับกรณีใดได้บ้าง ข้อมูลที่ถูกต้องสำหรับการแสดงผลอาจไม่เพียงพอสำหรับการตรวจความถูกต้อง และการไม่แยกสองกรณีนี้จะทำให้มีการนำข้อมูลไปใช้เกินกว่าที่ควร
สิ่งที่ต้องมีในทางปฏิบัติคือทั้งสามอย่างอยู่ด้วยกันเสมอ คือแหล่งที่มา วันที่เก็บ และขอบเขตการใช้งาน การมีเพียงอย่างใดอย่างหนึ่งไม่พอที่จะตัดสินได้
| ข้อมูลที่ต้องมี | ตอบคำถามอะไร | ถ้าไม่มีจะเป็นอย่างไร |
|---|---|---|
| แหล่งที่มา | ใครเป็นผู้ให้ข้อมูลนี้ | อ้างอิงไม่ได้เมื่อถูกถาม |
| วันที่เก็บ | ข้อมูลใหม่แค่ไหน | เทียบความใหม่ไม่ได้ |
| ขอบเขตการใช้งาน | ใช้กับกรณีใดได้ | นำไปใช้เกินขอบเขต |
ข้อมูลเดิมควรถูกเขียนทับเมื่อมีการอัปเดตหรือไม่?
ไม่ควร สำหรับข้อมูลที่ได้ถูกใช้สร้างเอกสารไปแล้ว เพราะเอกสารที่ออกไปแล้วต้องอ่านได้ตรงกับตอนที่ออก การเขียนทับจะทำให้เอกสารเก่าแสดงข้อมูลของวันนี้ ซึ่งขัดกับสิ่งที่เกิดขึ้นจริง
วิธีที่ใช้ได้คือเก็บภาพของค่าที่ใช้ ณ เวลาที่บันทึกไว้ข้าง ๆ ค่าเอกสาร เมื่อข้อมูลหลักเปลี่ยน ภาพที่เก็บไว้จะไม่เปลี่ยน และเอกสารเก่ายังอ่านได้ถูกต้อง
ทางเลือกนี้มีต้นทุน คือต้องเก็บข้อมูลเพิ่มและต้องตัดสินใจว่าข้อมูลใดควรถูกเก็บเป็นภาพ การเก็บทุกอย่างจะทำให้ข้อมูลบวมโดยไม่จำเป็น ส่วนการเก็บน้อยเกินไปจะทำให้กู้คืนไม่ได้
เกณฑ์ที่ใช้ได้ดีคือเก็บภาพของค่าที่ปรากฏบนเอกสารที่ออกถึงผู้ใช้ภายนอกหรือหน่วยงาน เพราะค่าเหล่านี้เป็นสิ่งที่ต้องอ้างอิงย้อนหลังได้จริง
มีอีกทางเลือกหนึ่งคือเก็บเป็นรุ่นของชุดข้อมูล แล้วให้เอกสารอ้างอิงรุ่นที่ใช้ วิธีนี้เหมาะเมื่อชุดข้อมูลเปลี่ยนพร้อมกันทั้งชุด และทำให้เห็นภาพรวมของการเปลี่ยนได้ชัดกว่า
เมื่อสองแหล่งข้อมูลขัดกันควรทำอย่างไร?
สิ่งที่ห้ามทำคือตัดสินใจใหม่ทุกครั้งที่พบความขัดแย้ง เพราะจะทำให้ผลลัพธ์ไม่คงที่และตรวจสอบย้อนหลังไม่ได้
สิ่งที่ควรทำคือเลือกแหล่งหนึ่งเป็นฐานหลัก แล้วเขียนข้อยกเว้นไว้เป็นรายการที่ตรวจสอบได้ เมื่อมีกรณีที่ใช้แหล่งอื่น จะมีบันทึกว่ากรณีใดและเพราะเหตุใด
การเลือกฐานหลักควรพิจารณาจากความน่าเชื่อถือ ขอบเขตการใช้งาน และความสม่ำเสมอของรูปแบบ ไม่ใช่จากความสะดวกในการนำเข้า
ข้อยกเว้นควรมีวันหมดอายุหรือเงื่อนไขการทบทวน เพราะข้อยกเว้นที่ไม่มีวันสิ้นสุดจะกลายเป็นกฎที่ไม่ถูกบันทึก และจะไม่มีใครกล้าแตะ
ควรใช้แนวทางอัปเดตแบบใด?
แนวทางแรกคือการแทนที่ทั้งชุดเป็นรอบ เหมาะเมื่อข้อมูลเปลี่ยนพร้อมกันทั้งชุดและมีต้นทุนการนำเข้าสูงพอที่จะทำเป็นรอบ ข้อดีคือผลลัพธ์คาดเดาได้ง่าย ข้อเสียคือการเปลี่ยนแปลงระหว่างรอบจะไม่ถูกนำเข้า
แนวทางที่สองคือการเพิ่มเติมเฉพาะส่วนที่เปลี่ยน เหมาะเมื่อข้อมูลส่วนใหญ่คงที่และมีการเปลี่ยนเฉพาะบางรายการ ข้อดีคือเร็วกว่า ข้อเสียคือต้องมีกลไกตรวจว่าสิ่งที่คิดว่าไม่เปลี่ยนนั้นไม่เปลี่ยนจริง
แนวทางที่สามคือการแก้เฉพาะเมื่อพบปัญหา เหมาะกับข้อมูลที่ไม่ได้ใช้ตัดสินใจสำคัญ ข้อดีคือประหยัดแรง ข้อเสียคือความสดใหม่จะขึ้นอยู่กับว่าใครบังเอิญพบปัญหา
ทั้งสามแนวทางมีต้นทุนการทดสอบต่างกัน โดยทั่วไปยิ่งอัปเดตถี่เท่าไร ยิ่งต้องพึ่งการทดสอบอัตโนมัติมากขึ้นเท่านั้น เพราะการตรวจด้วยมือจะตามไม่ทัน
ควรอ้างอิงประกาศการเปลี่ยนแปลงจากที่ใด?
มาตรฐานสากลที่มีการกำหนดรหัสและโครงสร้างข้อมูลของประเทศมักมีช่องทางประกาศการเปลี่ยนแปลงอย่างเป็นทางการ การอ้างอิงประกาศเหล่านี้เป็นวิธีที่เชื่อถือได้มากกว่าการจำหรือการอ้างอิงสำเนาที่ไม่ทราบที่มา
การติดตามประกาศยังช่วยให้ทราบล่วงหน้าถึงการเปลี่ยนแปลงที่จะมีผลในอนาคต ซึ่งมีค่ามากกว่าการแก้ไขหลังผู้ใช้รายงานปัญหา
สิ่งที่ต้องหลีกเลี่ยงคือการอ้างอิงจากหน้าอินเทอร์เน็ตที่ไม่มีวันที่และไม่มีหน่วยงานรับผิดชอบ เพราะเมื่อข้อมูลเปลี่ยนจะตรวจสอบไม่ได้ว่าอะไรถูกและอะไรผิด
การมีแหล่งอ้างอิงที่ชัดเจนยังทำให้การตัดสินใจในที่ประชุมสั้นลง เพราะแทนที่จะเถียงกันว่าจำได้อย่างไร ก็กลับไปดูที่ประกาศได้เลย
สำหรับนักพัฒนา: ทำแหล่งที่มาและวันที่ให้เป็นช่องข้อมูล
ข้อแรกคือเพิ่มช่องแหล่งที่มาและช่องวันที่เก็บให้กับข้อมูลที่มาจากภายนอก ไม่ใช่เก็บไว้ในบันทึกแยก เพราะเมื่อข้อมูลอยู่ในที่เดียวกัน การตรวจสอบจะทำได้ทันที
ข้อที่สองคือให้การนำเข้าข้อมูลปฏิเสธรายการที่ไม่มีวันที่ และแจ้งเตือนเมื่อวันที่เก่ากว่ากำหนดที่ยอมรับได้ เพราะการปล่อยให้ข้อมูลที่ไม่มีวันที่ผ่านเข้ามาจะทำให้ปัญหานี้กลับมาทุกครั้ง
ข้อที่สามคือแยกชั้นข้อมูลดิบออกจากชั้นข้อมูลที่ผ่านการตีความ เพื่อให้เมื่อพบว่าการตีความผิด สามารถนำเข้าซ้ำจากต้นทางได้โดยไม่ต้องขอข้อมูลใหม่
ข้อที่สี่คือทดสอบการอัปเดตด้วยชุดข้อมูลที่จำลองการเปลี่ยนชื่อและการเปลี่ยนกลุ่ม เพราะเป็นกรณีที่ทำให้เห็นว่าข้อมูลเดิมถูกกระทบหรือไม่
แนวทางที่ใช้จัดกลุ่มข้อมูลย้อนหลังเมื่อภูมิภาคถูกนิยามใหม่มีอธิบายไว้ในบทความการจัดกลุ่มภูมิภาคกับระดับตลาด และกรณีที่ข้อมูลของสองพื้นที่ถูกอ้างถึงพร้อมกันในรายการเดียว ซึ่งทำให้ความต่างของเวลาที่เก็บข้อมูลมีผลต่อเอกสารโดยตรง อธิบายไว้ในบทความสถานการณ์ที่อยู่ข้ามพรมแดน
ควรเริ่มทบทวนจากรายการใด
เริ่มจากการสุ่มข้อมูลประเทศในระบบขึ้นมาห้าถึงสิบรายการ แล้วถามว่าข้อมูลแต่ละรายการถูกเก็บเมื่อใดและจากที่ใด ถ้าตอบไม่ได้แม้แต่รายการเดียว นั่นคือรายการแรกที่ต้องแก้
ถ้าต้องการดูตัวอย่างโครงสร้างข้อมูลของประเทศและภูมิภาค หน้าประเทศและภูมิภาคบนเว็บไซต์นี้แสดงรายการพร้อมคอลัมน์ข้อมูลที่เกี่ยวข้อง และวิธีวัดว่าข้อมูลที่มีอยู่ครบแค่ไหนอยู่ในบทความรายการตรวจสอบความครอบคลุมข้อมูลรายประเทศ
ชื่อแหล่งข้อมูล วันที่เก็บ และหมายเลขรุ่นที่ยกมาในบทความนี้เป็นตัวอย่างเชิงวิธีการที่ผู้เขียนตั้งขึ้น ไม่ได้ชี้ไปยังแหล่งข้อมูลหรือชุดข้อมูลใดที่มีอยู่จริง และเมื่อจำนวนประเทศที่ต้องดูแลเพิ่มขึ้น วิธีเก็บและทบทวนข้อมูลแบบนี้จะกลายเป็นข้อกำหนดที่ต้องถูกทำให้ทำซ้ำได้ ซึ่งมีแนวทางอยู่ในบทความขยายข้อมูลทดสอบข้ามหลายประเทศ