InfluxDB

_images/influxdb1.png

InfluxDB คือ ฐานข้อมูลที่ออกแบบมาเพื่อจัดเก็บและค้นหาข้อมูลที่มีลักษณะเป็นชุดข้อมูล (time-series data) อย่างมีประสิทธิภาพ โดยมักนิยมใช้ในการเก็บข้อมูลที่มีการเปลี่ยนแปลงตามเวลา เช่น ข้อมูลเซ็นเซอร์ หรือข้อมูลที่มีการติดตามการเกิดขึ้นในระบบต่าง ๆ ตลอดเวลา ลักษณะของ InfluxDB ทำให้มันเหมาะสำหรับการจัดเก็บข้อมูลที่มีลักษณะเปลี่ยนแปลงตามเวลาอย่างรวดเร็ว มีลักษณะของการเก็บข้อมูลที่สามารถค้นหาและวิเคราะห์ได้ง่าย ๆ รวมถึงรองรับการจัดทำกราฟและแสดงผลข้อมูลที่มีลักษณะเป็นกราฟได้อย่างสะดวก InfluxDB มีภาษาคำสั่งที่ทำให้การจัดการข้อมูลต่าง ๆ เป็นไปอย่างสะดวก เช่น การเพิ่มข้อมูล (write), การค้นหาข้อมูล (query), การลบข้อมูล, และการจัดการข้อมูลอื่น ๆ ตามความต้องการ InfluxDB มีส่วนประกอบสำคัญอีกหลายตัวเพื่อให้รองรับการใช้งานต่าง ๆ มีตัว server สำหรับการเก็บข้อมูล (InfluxDB Server), มี HTTP API ที่ใช้ในการสื่อสาร, และมีหน้าจอแบบกราฟิคสำหรับการแสดงผลข้อมูล (Chronograf) ในทางปฏิบัติ, InfluxDB มักถูกนำมาใช้ในโครงการที่ต้องการจัดเก็บและวิเคราะห์ข้อมูลที่มีการเปลี่ยนแปลงตามเวลา, เช่น โครงการ Internet of Things (IoT), ระบบการวิเคราะห์และกำหนดค่า (monitoring and analytics), หรือโครงการที่ต้องการเก็บข้อมูลเหตุการณ์ต่าง ๆ ตลอดเวลา

_images/influxdb2.png

Create bucket

เริ่มแรกหลังจากที่เข้ามาหน้า InfluxDB ทำการคลิกเข้าที่แถบด้านข้างซ้ายมือจะมีแถบที่ชื่อว่า "Bucket" ขึ้นมา จากนั้นให้ทำการคลิกเข้าไปที่ "Bucket"

_images/influxdb_createbucket1.png

ต่อมาให้ทำการคลิกที่ปุ่ม "+ Create Bucket"

_images/influxdb_createbucket2.png

จะมีหน้าต่างขึ้นมาให้ทำการใส่ชื่อของ Bucket ที่ต้องการ ในตัวอย่างจะใช้ชื่อว่า flowstack โดยในแถบ Create Bucket ประกอบไปด้วย

_images/influxdb_createbucket3.png
  • Name คือ ชื่อของ Bucket ที่ต้องการสร้าง

  • Delete Data คือ ช่วงเวลาที่ต้องจะลบข้อมูลจะมีให้เลือก 2 แบบ คือ

    • Never คือ ไม่ลบข้อมูลเลย ข้อมูลจะอยู่ใน InfluxDB ตลอด

    • Older Than คือ ลบข้อมูลตามช่วงเวลาที่กำหนด เช่น 1 ชั่วโมง 1 วัน 1 เดือน 1 ปี

_images/influxdb_createbucket4.png

เมื่อทำการสร้างเสร็จแล้วให้ทำการกดปุ่ม "Create" จะได้ bucket ที่ชื่อว่า flowstack ขึ้นมา

_images/influxdb_createbucket5.png

ทำการกดเข้าไปใน bucket ชื่อว่า flowstack ที่สร้างขึ้นมา

_images/influxdb_createbucket6.png

ส่งข้อมูลเข้า InfluxDB

การส่งข้อมูลเข้า InfluxDB สามารถใช้ Flowengine ในการส่งข้อมูลโดยใช้ node InfluxDB ได้

_images/node_influxdb1.png

ภายใน node InfluxDB จะมีส่วนประกอบไปด้วย

  • Name คือ ชื่อของ node ที่ต้องการตั้ง

  • Server คือ เซิร์ฟเวอร์ที่ต้องการเชื่อมต่อ

    • Name คือ ชื่อของเซิร์ฟเวอร์ที่ต้องการ

    • Version คือ Version ของ InfluxDB

    • URL คือ url ของ influxDB ที่ใช้ในการเก็บข้อมูล

    • Token คือ api token ที่ใช้ในการเชื่อมต่อกับ node InfluxDB

  • Organization คือ ชื่อของ Organization ที่ได้ทำการสร้างไว้เพื่อเชื่อมต่อกับ node InfluxDB

  • Bucket คือ ที่เก็บข้อมูลแบบ time series ที่ได้ทำการสร้างไว้

  • Measurement คือ ชื่อของข้อมูลในการเก็บค่าต่างๆ

_images/node_influxdb3.png

ตัวอย่าง

ทำการลาก node inject ขึ้นมาแล้วลากเชื่อมต่อเข้ากับ function โดยภายใน function จะเป็นค่า random และส่งค่าขึ้น mqtt

_images/influxdb_example1.png

โดยภายใน function จะเป็นค่า random 10 ค่า และ publish ขึ้น mqtt

_images/influxdb_example2.png

จากนั้นจะทำการ subscribe ค่าที่ publish มาและทำการแปลงเป็น json เพื่อส่งค่าเข้า InfluxDB

_images/influxdb_example3.png

เมื่อทำการกดที่ปุ่ม inject จะมี debug ขึ้นมาดังรูป

_images/influxdb_example4.png

จากนั้นเข้าไปดูที่หน้า InfluxDB จะเห็นได้ว่ามี measurement ที่ชื่อว่า data ที่ถูกส่งมาจาก node InfluxDB

_images/influxdb_example5.png

สามารถดูค่าย้อนหลังได้โดยเลือกข้อมูลที่ต้องการแล้วทำการกดปุ่ม "submit" จากนั้นจะมีรูปกราฟขึ้นมาดังรูป

_images/influxdb_example6.png