In-memory database

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

Aerospike SAP-HANA timesten voltdb

 

Author: Suphakit Annoppornchai

Credit: htts://saixiii.com,https://en.wikipedia.org

One Thought to “In-memory database คืออะไร ต่างกับ database ปกติอย่างไร”

  1. […] – เป็น web server ซึ่งจะใช้ Apache และ Tomcat – JBoss Data Grid – in-memory distributed database. – JBoss Developer Studio – an Eclipse-based IDE – JBoss Operations Network – […]

Leave a Reply