TimescaleDB จุดบรรจบของหลายๆ DB
เริ่มต้นด้วย PostgreSQL
ในโลกนี้ไม่มีสิ่งใดที่จะทำได้ครอบจักรวาล รวมทั้งระบบ Database
ไม่มี Database ใดเหมาะสมกับงานทุกระดับ
ไม่มี Database ใดดีที่สุดสำหรับทุกคน
ไม่มี Database ใดตอบสนองได้ทุก Solution
- ต้นปี 2000 ผมเชื่อมั่น Microsoft ผมมุ่งไปทาง MSSQL Server ปัญหาที่พบคือ ราคาสูง และต้องอัพเกรดเรื่อยๆเพื่อใช้ feature ใหม่ๆ ( เข้าไปสายนี้แล้วมี Cost ) และในส่วน Oracle ก็ยิ่งสูงขึ้นไปอีก
- ช่วงปี 2003 โลก opensource มาแรง หลายๆสายไปทาง MySQL ผมก็เอาด้วย เพราะฟรีและดี ก็ใช้งาน MySQL นับจากนั้นเป็นต้นมา
- แต่ช่วงปี 2008 Oracle เข้าซื้อกิจการ MySQL แล้วมีกฏเกณฑ์เงื่อนไขต่างไปจากเดิม ทำให้ MySQL เริ่มเปลี่ยนไป ผมก็เริ่มไม่ค่อยวางใจว่าจะไปต่อ
- ช่วงปี 2009 นักพัฒนาโดยเฉพาะสาย opensource เริ่มมองหา DBMS ทางเลือกอื่น จึงได้ถือกำเนิด MariaDB ขึ้นมา แต่ผมดูแล้วช่วงนั้นประสิทธิภาพของ MariaDB ยังห่างไกล MySQL มากนัก จึงไม่ได้สนใจ
- ช่วงปี 2010 ได้ผ่านข่าวสารเกี่ยวกับ Opensource ในข่าวพูดถึงการปรับปรุงครั้งใหญ่ของ PostgreSQL ทั้ง feature และ speed หลังจากศึกษาข้อมูลแล้ว ใจผมก็เริ่มหันเหไป PostgreSQL แบบเต็มตัว
หลังจากนั้น PostgreSQL ก็พัฒนาดีขึ้นเรื่อยๆ โดยเฉพาะด้านความเร็ว ( Speed ) ที่เมื่อก่อนค่อนข้างช้ามากเมื่อเทียบกับ MySQL แต่ปัจจุบันไล่ตามทันแล้ว และ PostgreSQL มีดีในด้าน Extension โดยเฉพาะ PostGIS ช่วยให้การ Query พิกัด Lat , Lon ทรงประสิทธิภาพมาก
ที่สำคัญ PostgreSQL เป็น Open Source DBMS ในแบบที่ไม่มีบริษัทเอกชนใดควบคุมได้ ( เหมือนอย่างที่ Oracle , MSSQL Server , MySQL และ Firebase เป็น )
สำหรับผมแล้ว … “Opensource คือ Freedom”
ปี 2011 ผมก็เริ่มใช้ PostgreSQL เป็นหลักทั้ง project ระดับเล็กถึงระดับกลาง นับจากนั้นเป็นต้นมา
แล้ว … ทำไมต้อง TimescaleDB ?
เมื่อก่อนเราจะ code หรือ programming หรือ control สิ่งใด เราก็ต้องใช้ computer , notebook , server ในการเขียน Code และสั่งให้มัน Run
แต่ปัจจุบัน Microcontroller ที่มีตัวเอกอย่าง Arduino , ESP8266 , ESP32 รวมทั้ง Single Board Computer ( SBC ) หรือ Computer ขนาดจิ๋วอย่าง Raspberry Pi , OrangePi , NanoPi และอื่นๆ ก็มีราคาถูกลง และเพิ่มประสิทธิภาพสูงขึ้นเรื่อยๆ
ทำให้โลก IoT เป็นที่สนใจและเป็นถนนสายใหม่สำหรับ Developer
IoT ทำให้ Developer กลายร่างเป็น Maker
เมื่อการพัฒนา IoT มีความนิยมมากขึ้น การสื่อสารรูปแบบใหม่ เช่น Pub/Sub , Event-Driven , Asynchronous , … ก็เริ่มนิยมมากขึ้น จนเกิด MQTT Server ขึ้นมา ซึ่งเป็นการสื่อสารที่ IoT นิยมใช้
นอกจากการสื่อสารแล้ว IoT ยังทำให้เกิดรูปแบบการเก็บข้อมูลใหม่ๆ คือ Time Series Database ซึ่งเป็น Database ที่ออกแบบมาสำหรับงาน IoT โดยเฉพาะ นั่นคือ
- สนใจที่ Timing
- เป็นข้อมูลที่ Append ( คือเพิ่มอย่างเดียว )
- วิเคราะห์ข้อมูลด้วยเงื่อนไขของเวลา
- รองรับการ insert ข้อมูลมหาศาลได้พร้อมๆกัน โดยที่ไม่กิน resource
ซึ่งพระเอกของ Time Series Database ในช่วงแรกๆคือ InfluxDB
ปี 2015 ผมก็ได้มีโอกาสกระโจนเข้าสู่โลก IoT
ปี 2017 ผมเริ่มนำ MQTT มาใช้ใน project ( มันยอดเยี่ยมมาก )
ปี 2018 ผมเริ่มศึกษา InfluxDB ซึ่งมันก็ทำงานได้ดีสำหรับงาน query ข้อมูลของ IoT
แต่ในหลายๆครั้งผมต้องการ Query แบบ SQL แต่ InfluxDB มันไม่รองรับ
ปัญหานี้สร้างความปวดหัวใน project มากพอสมควร ผมพยายามเรียนรู้ InfluxDB ให้ลึกเพื่อจะใช้มันได้ตามต้องการของ project แต่มันก็ยิ่งยุ่งยากมากขึ้นเรื่อยๆ
ปลายปี 2018 ผมล้มเลิกการทดลอง InfluxDB แล้วผมก็เริ่มค้นหาว่ามี Database ตัวไหนบ้างที่สามารถ …
- Query แบบ SQL ได้
- ทำงานเป็น Time Series ได้ด้วย ( คือสามารถ Query เงื่อนไขระดับ Advance ของเวลาได้ลึกๆ โดยไม่ต้องใช้ JOIN )
- insert ได้เร็ว
- scale ได้
- ถ้าจะดีมาก รองรับ GIS ได้ด้วย
- ที่สำคัญ ต้องเป็น Opensource
แล้วต้นปี 2019 ผมก็พบ TimescaleDB
TimescaleDB มีจุดเด่นดังนี้ …
Highly available
Support for streaming data replication and robust backup / recovery.Powered by PostgreSQL
Implemented as a PostgreSQL extension, not a fork.Geospatial queries
Grow your use case with PostGIS.Reliable at its core
Based on PostgreSQL hence inherits PostgreSQL’s operational maturity.Data model freedom
Store schemas or go schema-less with JSON. Use narrow or wide tables. Stop worrying about high cardinality.Data lifecycle management
Support for efficient data retention and archiving.Handle high query traffic
Deploy read replicas for higher query throughput.Enterprise-grade security
Fine-grained access control, LDAP support, encryption, and flexible authentication built-in.
TimescaleDB รวมเอาจุดเด่นของ PostgreSQL (ที่ผมชอบมาก) มาทั้งกะบิ พร้อมกับเพิ่ม extension feature ด้าน Time Series เข้าไป
เราจึงสามารถ Query แบบ SQL หรือจะ Query ในแบบ Time Series ก็ได้ ( ตรงนี้ดีจริงๆสำหรับ developer )
TimescaleDB จึงเป็น “จุดบรรจบของหลายๆ DB” ( สำหรับผม )
และที่สำคัญ TimescaleDB โคตรเร็ว เมื่อมี edge computing ( IoT Device ) พากัน insert ข้อมูลเข้ามาพร้อมๆกัน มันเร็วกว่า InfluxDB มาก
กลางปี 2019 ผมก็เริ่มใช้ TimescaleDB ในการเก็บข้อมูล IoT เป็นต้นมา
มาถึงตรงนี้ … อยากได้ท่านผู้อ่านได้ทดลองศึกษา แล้วลองใช้มันดูครับ
บทความถัดไป … ผมจะเขียนวิธีการ setup TimescaleDB บน Docker พร้อมกับการสร้าง HyperTable ครับ( ถ้ามีเวลา )
หมายเหตุ
*เนื้อหาในบทความนี้เป็นความเห็น(และความชอบ)ส่วนตัว อาจจะไม่ตรงกับบางท่าน
*หากมีเนื้อหาข้อมูลส่วนไหนผิดพลาด ต้องขออภัยด้วยนะครับ