สวัสดีครับ รบกวนขอความรู้ด้วยครับ เพื่อความเข้าใจง่าย (ผมอธิบายไม่เก่ง) ขอลำดับขั้นตามนี้นะครับ
เป้าหมายหลักของผมคือ ต้องการนำข้อมูลจากเครื่องสแกนนิ้ว เมื่อมีคนสแกน ให้ upload ไปเข้าใน db ของ payroll แต่ติดปัญหาเรื่องวิธีการที่ไม่กิน performance เครื่องครับ ปัจจุบันผมมีขั้นตอนแบบนี้
เครื่องสแกนนิ้ว > ส่งlog > Navicat(MySQL) > copy to DB1 MSSQL > views table ให้ตรงกับ payroll > insert เข้า db2 payroll
1. ผมมี db จากระบบสแกนนิ้ว เข้ามาเป็น mySQL โปรแกรม Navicat จากนั้นทางผู้ขายได้ใช้ Navicat ทำการ replicate ข้อมูลไปยัง MSSQL ให้ทุกๆ 1 นาที โดยเป็นวิธีการ drop table แล้ว copy เข้าไปใหม่ ทำ batch schedual ไว้
2. ผมมี DB1 ใน MSSQL ที่มาจาก เครื่องสแกนนิ้วผ่านการ copy จาก Navicat
3. ผมต้องการนำ DB1 จากสแกนนิ้วไป insert เข้า DB2 ของโปรแกรม Payroll อีกทีนึง ปัจจุบันใช้วิธีนี้ครับ
4. ทำ view จาก DB1 เพื่อให้ table ตรงกับ field ใน DB2
5. จากนั้นเขียน script SQL เพื่อ insert ข้อมูลจาก DB1 ไปเข้า DB2 โดยเปรียบเทียบเอาเพราะรายการที่ไม่ซ้ำ
6. ทำ batch cmd เพื่อรัน script ทุกๆ 3 ชั่วโมง เพื่อนำข้อมูลจาก DB1 ไป DB2 ในโปรแกรม Payroll
วิธีการดังกล่าวผมใช้งานได้ปกติครับ แต่กังวลปัญหาในอนาคต หากฐานข้อมูลการสแกนนิ้วเยอะขั้น การ copy table อาจทำให้ cpu โหลดนานเกินไป
จึงอยากขอรบกวนพี่ๆ ช่วยผมปรับ flow ของผมทีครับ ว่าควรแก้ไขตรงไหน ให้สามารถ insert ข้อมูลเข้าไปใน db ของ payroll โดยใช้ cpu เท่าที่จำเป็น คือไม่ต้องเปรียบเทียบทุกรายการเพื่อหารายการที่ซ้ำ น่ะครับ หรือถ้าสงสัยตรงไหนสอบถามได้นะครับ ผมอาจอธิบายไม่ครบ
สอบถามเกี่ยวกับการ copy ข้อมูลจาก db นึง ไปอีก db นึง เฉพาะรายการที่เพิ่มใหม่ (log เวลา สแกนนิ้ว)
เป้าหมายหลักของผมคือ ต้องการนำข้อมูลจากเครื่องสแกนนิ้ว เมื่อมีคนสแกน ให้ upload ไปเข้าใน db ของ payroll แต่ติดปัญหาเรื่องวิธีการที่ไม่กิน performance เครื่องครับ ปัจจุบันผมมีขั้นตอนแบบนี้
เครื่องสแกนนิ้ว > ส่งlog > Navicat(MySQL) > copy to DB1 MSSQL > views table ให้ตรงกับ payroll > insert เข้า db2 payroll
1. ผมมี db จากระบบสแกนนิ้ว เข้ามาเป็น mySQL โปรแกรม Navicat จากนั้นทางผู้ขายได้ใช้ Navicat ทำการ replicate ข้อมูลไปยัง MSSQL ให้ทุกๆ 1 นาที โดยเป็นวิธีการ drop table แล้ว copy เข้าไปใหม่ ทำ batch schedual ไว้
2. ผมมี DB1 ใน MSSQL ที่มาจาก เครื่องสแกนนิ้วผ่านการ copy จาก Navicat
3. ผมต้องการนำ DB1 จากสแกนนิ้วไป insert เข้า DB2 ของโปรแกรม Payroll อีกทีนึง ปัจจุบันใช้วิธีนี้ครับ
4. ทำ view จาก DB1 เพื่อให้ table ตรงกับ field ใน DB2
5. จากนั้นเขียน script SQL เพื่อ insert ข้อมูลจาก DB1 ไปเข้า DB2 โดยเปรียบเทียบเอาเพราะรายการที่ไม่ซ้ำ
6. ทำ batch cmd เพื่อรัน script ทุกๆ 3 ชั่วโมง เพื่อนำข้อมูลจาก DB1 ไป DB2 ในโปรแกรม Payroll
วิธีการดังกล่าวผมใช้งานได้ปกติครับ แต่กังวลปัญหาในอนาคต หากฐานข้อมูลการสแกนนิ้วเยอะขั้น การ copy table อาจทำให้ cpu โหลดนานเกินไป
จึงอยากขอรบกวนพี่ๆ ช่วยผมปรับ flow ของผมทีครับ ว่าควรแก้ไขตรงไหน ให้สามารถ insert ข้อมูลเข้าไปใน db ของ payroll โดยใช้ cpu เท่าที่จำเป็น คือไม่ต้องเปรียบเทียบทุกรายการเพื่อหารายการที่ซ้ำ น่ะครับ หรือถ้าสงสัยตรงไหนสอบถามได้นะครับ ผมอาจอธิบายไม่ครบ