InfluxDB¶

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

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

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

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

Name คือ ชื่อของ Bucket ที่ต้องการสร้าง
Delete Data คือ ช่วงเวลาที่ต้องจะลบข้อมูลจะมีให้เลือก 2 แบบ คือ
Never คือ ไม่ลบข้อมูลเลย ข้อมูลจะอยู่ใน InfluxDB ตลอด
Older Than คือ ลบข้อมูลตามช่วงเวลาที่กำหนด เช่น 1 ชั่วโมง 1 วัน 1 เดือน 1 ปี

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

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

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

ภายใน 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 คือ ชื่อของข้อมูลในการเก็บค่าต่างๆ

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

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

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

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

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

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