Home ICONICS (SCADA)
คำนวนขนาดข้อมูล TrendWorX PDF Print E-mail
Thursday, 11 April 2013 02:00

บทความนี้จะแสดงการคำนวนขนาดข้อมูลของ TrendWorX และข้อแนะนำในการออกแบบการเก็บข้อมูลด้วย TrendWorX เบื้องต้นเพื่อให้การเก็บและแสดงข้อมูลมีความเหมาะสมและใช้งานได้ดเต็มประสิทธิภาพ

 

การคำนวนขนาดข้อมูลที่เก็บด้วย TrendWorX

 

จำนวน Records ทั้งหมด = (Number of Tags x Logging Interval) / (36 x Data-Collection Rate)
ขนาดข้อมูล = (จำนวน Records ทั้งหมด ) x (1024 Bytes/Record) x (1.25)

 

ยกตัวอย่างเช่น เก็บข้อมูลจำนวน 100tag เก็บทุก 1 วินาที(Data-Collection Rate)  ต้องการรู้ว่าภายใน 24 ชั่วโมงจะมีจำนวนข้อมูลกี่ Record และมีขนาดเท่าใด ให้คำนวนตามสูตรด้านบน จะได้ว่า

 

จำนวน Record ทั้งหมด = (100 tag x 24 ชม. x 60 นาที x 60 วินาที) / (36 x 1 วินาที) = 240,000 Records

ขนาดข้อมูล = 240,000 x 1024 x 1.25 = 307 MB/วัน

ถ้าหากเก็บทั้ง 240,000 แถวใน Table เดียวจะทำให้ SQL Server ที่อยู่ในคอมพิวเตอร์เดียวกันกับ SCADA ทำงานหนักดังนั้นควรแบ่งสัญญาณออกเป็นกลุ่มย่อย หรือเพิ่มจำนวนTableต่อวัน หรือปรับ Calculation Period ให้หยาบขึ้นเช่นจาก 1 วินาทีเป็น 5 วินาทีจำนวน Record ก็จะลดลงเป็น  48,000 แถว เป็นต้น

 

นั่นคือภายใน 1 วันจะมีข้อมูลขนาด 307 MB ถูกเก็บไว้

 

ข้อแนะนำ

1. ควรคำนวนให้ขนาดข้อมูลใน 1 table ไม่เกิน 80Mb

2. ไม่ควรให้สัญญาณใน 1 Logging Group เกิน 500 tag

3. กรณีใช้ MS Access ควรแยก 1 Logging Group ต่อ 1 ไฟล์ MS Access และเก็บได้ไม่เกิน 1 GB / ไฟล์

4. กรณีใช้ MS SQL Express เก็บข้อมูลทั้งหมดได้ไม่เกิน 4 GB

5. กรณีใช้ MS SQL ไม่ว่าเวอร์ชั่นไหนควรกำหนดขนาด Initial size ของ Database ไว้ให้สูงๆไว้เลยเพื่อป้องกันปัญหาการขยายขนาดภายหลัง 

 

 

หากเราต้องการเก็บข้อมูลไว้อย่างน้อย 7 วัน (ก่อนที่ข้อมูลใหม่จะเริ่มมาทยอยทับ Record เก่า ๆ) และต้องการให้ TrendView เอาค่าไปแสดงในช่วงคาบ 1 ชั่วโมงล่าสุดเป็นค่า Default เราก็ควรออกแบบจำนวน table ให้เก็บข้อมูลที่มีข้อมูลในช่วง 1 ชั่วโมงอยู่ด้วย และจากคำแนะนำข้อมูลแต่ละ Table ไม่ควรเกิน 80 Mb เราสามารถคำนวนได้ดังนี้

 

7 วันจะมีข้อมูล = 2,149 Mb  (หากเป็น MS SQL Express ก็ยังไม่ถึง 4 GB ดังนั้นขนาดข้อมูลเก็บได้ถึง 7 วัน)

ควรมีจำนวน table ต่ำสุด = 2149/ 80 = 27 table (ปัดขึ้น)

 

แต่จากการคำนวน 1 ชั่วโมงจะมีข้อมูล = 10,000 Records หรือ 12MB

ซึ่งเมื่อพิจารณาจำนวน Record และขนาดข้อมูล ถ้าเราใช้ MS SQL ที่ไม่ได้แยกเครื่องจาก GENESIS32 การเก็บ Record ไม่เกิน 10,000 Recordต่อหนึ่งtable มีความเหมาะสมดี ข้อมูลไม่อัดแน่นในTableเดียวมากเกินไป ยกเว้นว่า SQL Server นั้นทำงานบน Data Server แยกเป็นเอกเทศเราสามารถเก็บ Record ต่อ table ได้มากเพราะ SQL Server ทำงานได้เต็มประสิทธิภาพ ดังนั้นหากเป็น MS SQL ในเครื่องเดียวกับ GENESIS32 ก็ควรกำหนดให้สร้างตารางในตัวอย่างนี้ทุก 1 ชม. จะเหมาะกว่า จะได้ว่า MAX Table = 168 table

หรือถ้าหากจะเก็บข้อมูล 20,000 Recordต่อTable ก็กำหนดให้สร้างตารางทุก 2 ชม. และ MAX Table  = 84 table

ถ้าหากจะเก็บข้อมูล 40,000 Recordต่อTable ก็กำหนดให้สร้างตารางทุก 4 ชม. และ MAX Table = 42 เป็นต้น

ขึ้นอยู่กับความสามารถของคอมพิวเตอร์และทรัพยากรในระบบ 

 

นอกจากนั้นหากสัญญาณใน 1 กลุ่มLogging Group มีมากเราไม่ควรกำหนดค่าLogging Intervalนานเกินไปก่อนจะมีการเก็บข้อมูลลงใน SQL Server เนื่องจากข้อมูลที่Insertจะมีมากเกินไป(ก้อนใหญ่) ควรกำหนด Logging Interval ให้เหมาะสม (กรณีกำหนด Logging Interval อย่าลืมเลือก Force Interval Logging ในแท็ป Data Collection > Advanced ของกรุ๊ปนั้นด้วย)

Last Updated ( Tuesday, 08 April 2014 11:51 )
 

สิ่งที่น่าสนใจ

M-System publishes updated catalog
"High Speed Remote I/O for FA Equipment Control (Rev.1)" (PDF, 945KB)