ยินดีต้อนรับ!

แนวคิด NoSQL

Miriam Antona

Software engineer

หัวข้อที่ครอบคลุม

  • บทที่ 1: NoSQL vs ฐานข้อมูลเชิงสัมพันธ์ / ฐานข้อมูล key-value
  • บทที่ 2: ฐานข้อมูลเอกสาร
  • บทที่ 3: ฐานข้อมูล column family
  • บทที่ 4: ฐานข้อมูล graph
แนวคิด NoSQL

เกี่ยวกับคอร์สนี้

  • คอร์สเชิงแนวคิด (ไม่ต้องเขียนโค้ด)

โลโก้ Datazy

แนวคิด NoSQL

NoSQL vs ฐานข้อมูลเชิงสัมพันธ์

ฐานข้อมูลเชิงสัมพันธ์

  • ใช้ตาราง/แถว/คอลัมน์
  • ต้องกำหนด schema ล่วงหน้า/เปลี่ยนแปลงยาก
  • คิวรีช้าเมื่อ join หลายตาราง
  • ขยายขนาดในแนวตั้ง
    • เพิ่มประสิทธิภาพด้วยฮาร์ดแวร์ (เช่น CPU, RAM...)
    • ค่าใช้จ่ายสูงกว่า
  • รับประกัน ACID transactions
  • โดยทั่วไปเป็นซอฟต์แวร์ปิด

NoSQL

  • เดิมหมายถึง non-SQL/non-relational
  • ปัจจุบันหมายถึง "Not only SQL"
  • ฐานข้อมูลแบบไม่เชิงสัมพันธ์
  • ไม่ใช้ตาราง/แถว/คอลัมน์
  • ไม่มี schema ตายตัว/เปลี่ยนแปลงง่าย
  • คิวรีเร็ว
  • ขยายขนาดในแนวนอน/ค่าใช้จ่ายต่ำกว่า
  • ส่วนใหญ่ไม่รองรับ ACID transactions
  • โอเพนซอร์ส
แนวคิด NoSQL

NoSQL vs ฐานข้อมูลเชิงสัมพันธ์

  • เสริมซึ่งกันและกัน
  • ใช้งานร่วมกันได้
แนวคิด NoSQL

ประเภทของฐานข้อมูล NoSQL

  • ฐานข้อมูล key-value
  • ฐานข้อมูลเอกสาร
  • ฐานข้อมูล column family
  • ฐานข้อมูล graph
แนวคิด NoSQL

ฐานข้อมูล key-value

  • เป็นฐานข้อมูล NoSQL ที่ง่ายที่สุด
  • ดึง/ตั้งค่าข้อมูลด้วย key ที่เชื่อมโยง

ตัวอย่างภาพแสดง key-value สองคู่ คู่แรก: key คือ K1 ค่าคือ Hello คู่ที่สอง: key คือ K2 ค่าคือ Goodbye

แนวคิด NoSQL

Key

  • ตัวอย่าง:
    • DataCampCourse:123:name
    • Client456
    • 123456789
    • [email protected]
    • C09113276F59B26EF3394D90CD31BAA90AA7B4BE
  • ลำดับไบนารีใดก็ได้
  • ต้องไม่ซ้ำกัน
  • สร้างได้ด้วยอัลกอริทึม
  • ไม่ควรใช้ key ที่ยาวเกินไป
แนวคิด NoSQL

Value

  • เชื่อมโยงกับ key
  • ดึง ตั้งค่า หรือลบค่าด้วย key
  • ตัวเลข สตริง JSON รูปภาพ...
  • มีข้อจำกัดด้านขนาด
แนวคิด NoSQL

Value

  • เชื่อมโยงกับ key
  • ดึง ตั้งค่า หรือลบค่าด้วย key
  • ตัวเลข สตริง JSON รูปภาพ...
  • มีข้อจำกัดด้านขนาด

$$

key value
dataCampCourses:123:name Cleaning data in a SQL Server database
dataCampCourses:123:softLaunchDate 10/01/2020
user:12:address ('123 Sesame Street', 'NY')
user:125:address {"street" : "123 Sesame Street" , "city" : "NY"}
แนวคิด NoSQL

ตัวอย่างจาก Datazy

การตั้งค่าของผู้ใช้

key value
user:457:preferences {"language" : "en_US" , "color" : "green" , "timezone" : "GTM-4"}
user:458:preferences {"language" : "es_US" , "color" : "blue" , "timezone" : "GTM+2"}

 

  • รูปแบบการตั้งชื่อ (:)
    • user:id:preferences
แนวคิด NoSQL

ฐานข้อมูล key-value ยอดนิยม

โลโก้ของฐานข้อมูล key-value ยอดนิยมบางส่วน

แนวคิด NoSQL

มาฝึกกันเถอะ!

แนวคิด NoSQL

Preparing Video For Download...