Quantcast
Channel: cc :: somkiat
Viewing all articles
Browse latest Browse all 1997

รู้หรือไม่ว่า Git สามารถนำมาสร้าง NoSQL Database แบบ Key-Value ได้นะ

$
0
0

git-nosql

git-nosql ช่วงวันหยุดมีคำถามที่น่าสนใจเกี่ยวกับ Git ขึ้นมาคือ ถ้าต้องการเก็บข้อมูลต่าง ๆ ด้วย Git ล่ะ ให้เหมือนกับ NoSQL database ล่ะ จะทำอย่างไรดี ? ดังนั้นมาลองใช้งานกันหน่อยสิ

เริ่มด้วยวิธีการง่าย ๆ

ทำการบันทึกและอ่านข้อมูล [code] //บันทึกข้อมูล $ echo '{"id": 1, "name": "Somkiat", "age": 30}' > 1.json $ git add 1.json $ git commit -m "Add new data" //อ่านข้อมูล $ git show master:1.json {"id": 1, "name": "Somkiat", "age": 30} Raw [/code] ซึ่งเป็นการจัดการข้อมูลในรูปแบบ Key-value database โดย key คือ path เต็ม ๆ ของไฟล์ที่เราต้องการ ส่วน value คือ ข้อมูลที่อยู่ในไฟล์ แต่วิธีการนี้ก็มีข้อเสียคือ
  • ต้องทำการบันทึกข้อมูลลงไฟล์ก่อน จากนั้นจึงบันทึกข้อมูลเข้า git ซึ่งทำให้เสียเวลา
  • ขั้นตอนการบันทึกข้อมูลเยอะเกินไป
  • ถ้าไฟล์ที่ต้องการอยู่ใน path ลึก ๆ น่าจะแย่นะ

ดังนั้นถ้าต้องการแก้ไขปัญหานี้ล่ะ ทำอย่างไรดี ?

โดยใน Git นั้นสามารถทำการ hashing และจัดเก็บข้อมูลผ่าน standard input ได้เลย ซึ่งผลที่ได้คือ ขั้นตอนการบันทึกข้อมูลง่ายขึ้นมาก รวมทั้งผลที่ได้จากการบันทึกคือ key ที่ unique เพื่อใช้อ้างถึงเอกสารนั้น ๆ ได้เลย สามารถทำได้ดังนี้ [code] //บันทึกข้อมูล $ echo '{"id": 1, "name": "Somkiat", "age": 30}' | git hash-object -w --stdin f8d407f8880d3126c45cc38dee9f025ddcd816ad //อ่านข้อมูล $ git cat-file -p f8d407f8880d3126c45cc38dee9f025ddcd816ad {"id": 1, "name": "Somkiat", "age": 30} [/code]

เพิ่งรู้เลยว่า Git มันก็ทำแบบนี้ได้ด้วย

จากนั้นก็นำไปสร้างระบบแบบง่าย ๆ กันได้เลย อ่านข้อมูลเพิ่มเติมจาก Link ด้านล่างได้เลยครับ มีรายละเอียดเชิงเลิกอีกมากมายให้เราได้เรียนรู้กันต่อไป เช่น การ uddate ข้อมูล การจัดการ version ของข้อมูล Reference Websites https://www.kenneth-truyers.net/2016/10/13/git-nosql-database/

Viewing all articles
Browse latest Browse all 1997

Trending Articles