雖然這篇Std::string include鄉民發文沒有被收入到精華區:在Std::string include這個話題中,我們另外找到其它相關的精選爆讚文章
在 std::string產品中有1篇Facebook貼文,粉絲數超過10萬的網紅BorntoDev,也在其Facebook貼文中提到, เพื่อน ๆ รู้หรือไม่ 💡 ว่าการเก็บข้อมูลที่แสนจะมากมายมหาศาลของ Facebook นั้นเขามีวิธีการเก็บอย่างไร และใช้ฐานข้อมูลแบบไหน ?? วันนี้เรามาหาคำตอบกันเลยจ้...
std::string 在 BorntoDev Facebook 的最佳貼文
เพื่อน ๆ รู้หรือไม่ 💡 ว่าการเก็บข้อมูลที่แสนจะมากมายมหาศาลของ Facebook นั้นเขามีวิธีการเก็บอย่างไร และใช้ฐานข้อมูลแบบไหน ?? วันนี้เรามาหาคำตอบกันเลยจ้า !! ❤️
.
🔹 Facebook นั้นมีผู้ใช้ประมาณ 1.2 พันล้านคน ซึ่งถือว่าเยอะมากกกก -0- และทุกคนนั้นจะเห็นหน้าเพจเป็นแบบไดนามิก ซึ่งทาง Facebook ต้องใช้ Tools ต่าง ๆ ในการจัดเก็บข้อมูลเพื่อให้รองรับกิจกรรมต่าง ๆ เช่น การกดไลก์ แสดงความคิดเห็น และการแชร์ เป็นต้น
.
👉 ซึ่งในปัจจุบันทาง Facebook มีการใช้ฐานข้อมูลแบบ SQL ไม่ว่าจะเป็น MySQL และ InnoDB ด้วยประสิทธิภาพและความน่าเชื่อถือของทั้งสอง รองรับข้อมูลที่มหาศาลได้ แต่ก็จะมีข้อจำกัดบางอย่าง จึงได้พัฒนาฐานข้อมูลที่ชื่อว่า RocksDB เพื่อมาใช้ร่วมกันนั่นเอง
.
ซึ่งเจ้า RocksDB เป็นฐานข้อมูลแบบ Embeddable Key-value จัดเก็บข้อมูลได้อย่างรวดเร็ว แถมยังเป็น Open-Source สร้างและใช้งานบน Facebook เขียนด้วยภาษา C++
.
✨ คุณสมบัติ
🔸 1) สามารถปรับขนาดให้ทำงานบนเซิร์ฟเวอร์ที่มี Core CPU จำนวนมาก
RocksDB มีข้อดีที่ช่วยให้สามารถจัดการกับเซิร์ฟเวอร์แบบ Muti Core ได้อย่างมีประสิทธิภาพ แถมยังสามารถแบ่งพาร์ติชันให้เป็นฐานข้อมูลแบบ Read-only และ Read-write
.
🔸 2) ใช้พื้นที่เก็บข้อมูลได้อย่างมีประสิทธิภาพ
สามารถบีบอัดข้อมูลซึ่งสามารถลดพื้นที่เก็บข้อมูลลงได้ และทำงานได้อย่างรวดเร็ว ลดปัญหาคอขวดของข้อมูล
.
🔸 3) มีความยืดหยุ่น
RocksDB สามารถจัดการและขยายได้ง่าย มีหน่วยเก็บข้อมูลที่มีประสิทธิภาพในการอ่านและเขียนนั่นเอง รองรับข้อมูลได้หลากหลาย
.
🌈 RocksDB ใช้สถาปัตยกรรมแบบ Pluggable คือสามารถปรับเปลี่ยนได้ง่ายโดยไม่ส่งผลต่อสถาปัตยกรรมของระบบ ซึ่งสามารถปรับใช้กับ Workloads และ Hardware ที่แตกต่างกันได้นั่นเอง
.
⚙️ วิธีใช้งานเบื้องต้น
RocksDB จะใช้ Methods Put, Delete, และ Get เพื่อแก้ไข ลบ และ Query ข้อมูลนั่นเอง
.
👨💻 โค้ดตัวอย่าง
เป็นการย้ายค่าไปเก็บไว้ภายใต้ Key1 และ Key2
.
std::string value;
rocksdb::Status s = db->Get(rocksdb::ReadOptions(), key1, &value);
if (s.ok()) s = db->Put(rocksdb::WriteOptions(), key2, value);
if (s.ok()) s = db->Delete(rocksdb::WriteOptions(), key1);
.
⚡ RocksDB เหมาะกับงานแบบใด ?
- ใช้จัดเก็บประวัติการเข้าชม และสถานะของผู้ใช้
- ตรวจจับสแปม
- ใช้กับ Graph-search ที่ต้องสแกนข้อมูลแบบเรียลไทม์
- ใช้กับ Hadoop
- ใช้ในงานที่รองรับ Message Queue
.
ซึ่งเขาเปิดให้เหล่า Dev ได้ลองเล่นกันสักพักล่ะใน GitHub หากใครสนใจสามารถคลิกลิงค์ไปลองใช้งานกันได้เลย
💥 GitHub : https://github.com/facebook/rocksdb
.
📑 และสามารถอ่านข้อมูลเพิ่มเติมเกี่ยวกับ RocksDB ได้ที่ >> https://rocksdb.org/ , https://engineering.fb.com/2013/11/21/core-data/under-the-hood-building-and-open-sourcing-rocksdb/
.
borntoDev - 🦖 สร้างการเรียนรู้ที่ดีสำหรับสายไอทีในทุกวัน