เนื่องจาก Data Center ของ Facebook นั้นมีขนาดใหญ่มาก การติดตามการทำงานของอุปกรณ์ทั้งหมดภายในระบบ IT Infrastructure จึงกลายเป็นงานประมวลผลประสิทธิภาพสูงไป และทำให้ Facebook ต้องพัฒนา Time Series Storage Engine ที่ทำงานแบบ In-memory ขึ้นมาเอง และออกมาเปิด Open Source ภายใต้ชื่อโครงการว่า Beringei

เมื่อ HBase บน Hard Disk และ In-memory แบบทั่วๆ ไปช้าเกินไป
เป็นกรณีที่น่าสนใจไม่น้อยในเคสนี้ เพราะ Facebook ที่มี Data Center ขนาดใหญ่นั้นต้องการใช้ Time Series Database (TSDB) ขนาดใหญ่สำหรับจัดเก้บข้อมูลสถิติการทำงานของ Server ต่างๆ ในระดับ Application, การทำงานของ Service ต่างๆ, ค่าสถิติของ CPU, Memory และ Network รวมถึงค่าอื่นๆ ให้ได้แบบ Real-time เพื่อให้การแสดงผลข้อมูลบน Dashboard นั้นมีความรวดเร็ว และทำให้ทีมงานของ Facebook สามารถแก้ไขปัญหาได้อย่างทันท่วงที
ปัญหาเริ่มเกิดขึ้นเมื่อต้นปี 2013 ที่ TSDB บน HBase นั้นเริ่มมีประสิทธิภาพในการทำงานที่ช้าลงหลังจากที่ Data Center เริ่มขยายตัว และส่งผลให้การแสดงผลข้อมูลบน Dashboard ผิดพลาดมากขึ้น นำไปสู่การทำงานที่ผิดพลาดของระบบ Automation ทั้งหมดที่เกิดขึ้นจาก Latency ที่เติบโตขึ้นในกรณีนี้
Beringei: Open Source In-memory Time Series Database ที่ Facebook พัฒนาขึ้นมาเอง
เพื่อแก้ปัญหาดังกล่าว Facebook จึงต้องพัฒนาระบบ TSDB แบบ In-memory เพื่อมาใช้ในระบบ Large-scale Monitoring Systems ของตนเอง โดยออกแบบการใช้งานมาสำหรับการทำ Monitoring System โดยเฉพาะ ด้วยการรองรับปริมาณการ Write ในอัตราส่วนที่สูงมาก และยังคงสามารถ Read ได้ด้วย Latency ที่ต่ำ พร้อมทำการปรับแต่งการจัดเก็บข้อมูลบน RAM ให้มีประสิทธิภาพสูงสุดได้้ในเวลาเดียวกัน โดยได้เปิดเผยออกมาในเอกสารชุด “Gorilla: A Fast, Scalable, In-Memory Time Series Database” ในงาน VLDB 2015 ซึ่งสามารถโหลดได้ที่ http://www.vldb.org/pvldb/vol8/p1816-teller.pdf
Beringei นี้ยังมีเทคโนโลยี Data Compression อยู่ภายในตัวเพื่อช่วยลด Storage Overhead ในการทำงานลง ด้วยการใช้ Lossless Streaming Compression Algorithm เพื่อบีบอัดเฉพาะข้อมูลในช่วงเวลาที่ใกล้เคียงกันเท่านั้นจากการนำ Timestamp Compression แบบ Delta-of-delta Encoding มาประยุกต์ใช้ ทำให้สามารถลดปริมาณของหน่วยความจำที่ต้องใช้ในแต่ละช่วงเวลาลงได้
นอกจากนี้้เนื่องจากการที่ข้อมูลส่วนใหญ่นั้นไม่ได้เปลี่ยนแปลงมากนักจากในช่วงเวลาก่อนหน้า อีกทั้งข้อมูลส่วนใหญ่ยังถูกจัดเก็บในรูปแบบของ Integer ดังนั้นการนำ XOR มาใช้เพื่อติดตามเฉพาะ Bit ที่เปลี่ยนแปลงไป และจัดเก็บข้อมูลเฉพาะการเปลี่ยนแปลงที่เกิดขึ้นจาก Bit ก่อนหน้านี้ก็ทำให้สามารถลดขนาดของ Data Set โดยรวมลงไปได้กว่า 90%
ปัจจุบัน Facebook ใช้ Beringei เพื่อจัดเก็บข้อมูลสูงสุดถึง 10,000 ล้าน Time Series และให้บริการข้อมูลได้สูงสุดถึง 18 ล้าน Query ต่อนาที ในขณะที่มี Delay ระหว่างการเขียนข้อมูลและการนำข้อมูลขึ้นมาวิเคราะห์อยู่ที่ 300 Microsecond เท่านั้น ซึ่งถือว่าเร็วกว่าระบบ Monitoring System ที่ Facebook ใช้ก่อนหน้านี้้เป็นอย่างมาก
ผู้ที่สนใจสามารถศึกษาเพิ่มเติมเกี่ยวกับ Beringei ได้ที่ https://github.com/facebookincubator/beringei เลยนะครับ