เราเริ่มออกแบบหน่วยการสร้างดาต้ามาร์ต / คลังสินค้าและเราต้องสามารถรองรับโซนเวลาทั้งหมด (ลูกค้าของเรามาจากทั่วทุกมุมโลก) จากการอ่านการสนทนาออนไลน์ (และในหนังสือ) ดูเหมือนว่าวิธีแก้ปัญหาทั่วไปจะมีมิติวันที่และเวลาแยกจากกันรวมถึงการประทับเวลาในตารางข้อเท็จจริง
อย่างไรก็ตามคำถามที่ฉันมีเวลาตอบยากคือขนาดและวันที่และเวลาที่ดีสำหรับฉันจริง ๆ แล้วพิจารณาความต้องการโซนเวลาแบบไดนามิกของฉันได้อย่างไร มิติเวลาทำให้รู้สึกมากกว่าเล็กน้อย แต่ฉันมีเวลายากกับมิติวันที่ แนวทางการออกแบบทั่วไปสำหรับส่วนข้อมูลวันที่มักจะมีคุณสมบัติเช่นชื่อวันวันในสัปดาห์ชื่อเดือน ฯลฯ ปัญหาที่ฉันมีอยู่ทั้งหมดคือ 23.00 น. ในวันอังคารที่ 31 ธันวาคม 2013 ใน UTC คือวันพุธ , 1 มกราคม 2014 ในโซนเวลาทั้งหมดที่อยู่หลัง UTC + 2
ดังนั้นถ้าฉันจะต้องทำการแปลงโซนเวลาเหล่านี้ทั้งหมดในทุก ๆ แบบสอบถาม (และรายงาน) แล้วประเด็นของการมีและการจัดเก็บคุณสมบัติเหล่านี้ที่ฉันอาจจะไม่เคยใช้ (ดูเหมือน) คืออะไร? บางคนแนะนำให้มีแถวความจริงสำหรับแต่ละเขตเวลา แต่ดูเหมือนว่าไร้สาระสำหรับฉัน เราต้องสามารถเก็บบันทึกได้หลายล้านรายการในแต่ละเดือน
คนอื่น ๆ แนะนำให้มีตารางบริดจ์โซนเวลาซึ่งแม้ว่าจะมีเหตุผลบางอย่าง แต่ก็ดูเหมือนว่าจะมีความซับซ้อนและการรวมพิเศษเพื่อให้บรรลุสิ่งที่ลูกค้าและแอพของฉันควรจะสามารถหาได้จากวันที่ (การรายงานจะใช้เว็บเป็นหลัก ที่ซึ่งมีไลบรารีจำนวนมากมายเพื่อช่วยในการแปลงแสดงและจัดรูปแบบวันที่)
สิ่งเดียวที่ฉันคิดได้คือความง่ายและประสิทธิภาพของการจัดกลุ่มตามวันที่และเวลา แต่วิธีที่แย่คือการจัดกลุ่มตามวันที่ (เราใช้ MS SQL แต่เราจะสอบถามแถวนับล้าน) หรือเราควรพิจารณา เพียงส่วนข้อมูลวันที่และเวลาที่เรียบง่ายมากที่มีตัวเลขชั่วโมงวันเดือนและปีไม่มากไปกว่านี้เพราะตัวอักษรส่วนใหญ่เช่นวันจันทร์ไม่ได้มีความหมายมากนักเมื่อเขตเวลาเข้ามาเล่น?