In-memory database
In-memory database มีด้วยกัน 2 แบบคือ
IMDB - main memory database system MMDB - memory resident database
เป็น ฐานข้อมูลบน memory ซึ่งต่างกับ database ปกติที่อาศัย disk storage เป็นที่เก็บข้อมูลหลัก ซึ่งตามหลักการแล้ว memory database ย่อมต้องมีความเร็วสูงกว่าแบบ disk-optimized databases เพราะ การเข้าถึงข้อมูลบน disk ช้ากว่า memory ด้วย algorithms ภายในที่ค่อนข้างง่าย และ การใช้งานของ CPU ที่ต่ำ ทำให้การเข้าถึงข้อมูลใน memory ใช้เวลาใช้เวลาได้รวมเร็วกว่า disk มาก
Applications ที่ต้องการความรวดเร็วเป็นหลัก ตัวอย่างเช่น อุปกรณ์ด้าน telecommunication และ mobile advertising มักจะใช้เจ้า main-mermory databases เป็นหลัก โดย IMDB จะต้องรองรับ transactions จำนวนมากที่เข้ามา แต่ข้อเสียสำคัญเลยคือ ข้อมูลทั้งหมดถูกเก็บอยู่บน RAM เพราะฉะนั้น ไฟเลี้ยงจึงเป็นสิ่งที่สำคัญมาก ไม่เช่นนั้นข้อมูลอาจจะหายได้ แต่ด้วยการพัฒนาจนได้ non-volatile random access memory (NVRAM) ที่สามารถสำรองข้อมูลเมื่อไฟดับได้จึงทำให้ in-memory databases ปัจจุบันมีประสิทธิ์ภาพสูงขึ้น
รองรับ ACID
สำหรับผู้ที่ยังไม่ทราบเรื่อง ACID สามารถอ่านเพิ่มเติมได้ที่ คุณสมบัติของ ACID คืออะไร คร่าวๆคือประกอบไปด้วย
atomicity - ต้องสมบูรณ์ครบถ้วน consistency - มีความสอดคล้องเหมือนกัน ioslation - แต่ละ concurrent ไม่มีการกวนกัน durability - ทนทานต่อความเสียหาย หรือ สูญเสีย
โดยหลักการแล้ว main memory database จะถูกเก็บไว้ที่ volatile memory ซึ่งข้อมูลใน memory นี้จะหายหมดเมื่อไม่มีไฟเลี้ยง ในกรณีนี้ IMDB จะขาดเรื่อง “durability” ไป แต่ยังคงคุณสมบัติที่เหลืออยู่ คือ atomicity, consistency และ isolation
IMDB จึงได้เพิ่มคุณสมบัติของ “durability” ด้วยกระบวนการดังนี้
– Snapshot files หรือ checkpoint images คือการที่เก็บข้อมูล database บางช่วงเวลาไว้ลง files หรือ ถ้ารอบช่วงเวลาที่ตั้งไว้ กระบวนการนี้จึงเรียกได้ว่าเป็น “patial durability” คืออาจจะมี database บางส่วนที่พึ่ง update หายไปบ้าง
– Transaction logging คือการที่เพิ่มกระบวนการด้วยการบันทึกลง file ทำให้สามารถ กู้ข้อมูลกลับมาที่ in-memory database ได้
– Non-Volatile DIMM (NVDIMM) คือ memory แบบที่มี DRAM ส่วนมากมักรวมกับ NAND flash โดยถูกออกแบบให้มี supercapacitors เพื่อเก็บประจุไฟฟ้า แทนที่จะใช้ battery ด้วยกระบวนการนี้ IMDB จึงสามารถเก็บของมูลได้ถึงแม้จะมีการ reboot
– Non-volatile random access memory (NVRAM) โดยปกติก็คือ RAM ที่มี battery หรือ EEPROM ทำให้ระบบสามารถดึงข้อมูลกลับมาที่ state สุดท้ายก่อนการ reboot ได้
– Database replication เพื่อให้สามารถ failover ไปอีกเครื่องได้ที่เป็น standby database ในกรณีที่ฝั่ง primary database เสียหายไป
ตัวอย่าง product In-memory database
- Oracle TimesTen In-Memory Database - SAP HANA - VoltDB - Aerospike
Author: Suphakit Annoppornchai
Credit: htts://saixiii.com,https://en.wikipedia.org
[…] – เป็น web server ซึ่งจะใช้ Apache และ Tomcat – JBoss Data Grid – in-memory distributed database. – JBoss Developer Studio – an Eclipse-based IDE – JBoss Operations Network – […]