๐Ÿ”ฅ Firebase Cloud Firestore

Yeonnยท2024๋…„ 11์›” 8์ผ
0

Backend ๐Ÿ‘€

๋ชฉ๋ก ๋ณด๊ธฐ
9/10
post-thumbnail

๐ŸŒฑ dataBase
๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ์‹œ์Šคํ…œ
๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ณ  ๊ฒ€์ƒ‰ ๊ฐ€๋Šฅ

โœ”๏ธย dataBase

๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋น„๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
๋ฐ์ดํ„ฐ ๊ตฌ์กฐํ…Œ์ด๋ธ” ๊ธฐ๋ฐ˜, ๊ณ ์ •๋œ ์Šคํ‚ค๋งˆ๋ฌธ์„œ ํ‚ค-๊ฐ’ ๋“ฑ, ์œ ์—ฐํ•œ ์Šคํ‚ค๋งˆ
๋Œ€ํ‘œ์ ์ธ ์–ธ์–ดSQLJSON, BSON, ๊ธฐํƒ€
์ง€์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œMySQL, PostgreSQL, Oracle DBMongoDB, Firebase Firestore, Cassandra
  • Relational( ๊ด€๊ณ„ํ˜• )
    • ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋Š” ๊ฐ๊ฐ ๋…๋ฆฝ์ ์ธ ํ…Œ์ด๋ธ”์— ์ €์žฅ
    • ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋Š” ์ด๋Ÿฌํ•œ ํ…Œ์ด๋ธ”์˜ ์ •๋ณด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ด€๋ฆฌ
    • ๊ฐ ์š”์†Œ( Entity )๋ผ๋ฆฌ์˜ ๊ด€๊ณ„๋ฅผ ํ…Œ์ด๋ธ” ํ˜•์‹์œผ๋กœ ํ‘œํ˜„ํ•˜์—ฌ ๊ด€๋ฆฌ
  • NoSQL( ๋น„๊ด€๊ณ„ํ˜• )
    • ๋ฐ์ดํ„ฐ๋ฅผ ํ•˜๋‚˜์˜ ๋ฌธ์„œ( Document )๋กœ ๊ด€๋ฆฌ, JSON ํ˜•์‹์ด ๊ฐ€์žฅ ๋ณดํŽธ์ 

โ“firebase ์ฃผ์š” ๊ฐœ๋…( ๋น„๊ด€๊ณ„ํ˜• )

  • ์œ ์—ฐํ•œ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ
    • NoSQL ๋ฌธ์„œ ์ง€ํ–ฅ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค
    • ๋ฐ์ดํ„ฐ๋ฅผ ๋ฌธ์„œ์™€ ์ปฌ๋ ‰์…˜ ํ˜•ํƒœ๋กœ ์ €์žฅ
  • ์‹ค์‹œ๊ฐ„ ๋™๊ธฐํ™”
    • ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ํด๋ผ์ด์–ธํŠธ์— ๋™๊ธฐํ™”
  • ๊ฐ•๋ ฅํ•œ ์ฟผ๋ฆฌ ์ง€์›
    • where, orderBy, limit ๋“ฑ ๋ณต์žกํ•œ ์ฟผ๋ฆฌ ์‹คํ–‰ ๊ฐ€๋Šฅ
  • ๋ณด์•ˆ ๊ทœ์น™
    • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•œ ์ ‘๊ทผ ๊ทœ์น™
    • ์‚ฌ์šฉ์ž ๊ถŒํ•œ ์„ค์ • ๋ฐ ๋ฏผ๊ฐํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณดํ˜ธ

โ“ย ๋ฌธ์„œ( document )์™€ ์ปฌ๋ ‰์…˜( collection )

๐ŸŒฑ

  • document: ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ
  • collection: ๋ฌธ์„œ๋“ค์˜ ์ง‘ํ•ฉ

โœ”๏ธย document

  • firebasedml ๊ธฐ๋ณธ ์ €์žฅ ๋‹จ์œ„
  • ๊ฐ’์— ๋งคํ•‘๋˜๋Š” ํ•„๋“œ๋ฅผ ํฌํ•จํ•˜๋Š” ๊ฐ„๋‹จํ•œ ๋ ˆ์ฝ”๋“œ ํ˜•์‹( ์ฝ”๋“œ 1 ์ค„ = 1 ๋ ˆ์ฝ”๋“œ )
  • ๋ฌธ์„œ๋งˆ๋‹ค ๊ณ ์œ ํ•œ ID๋ฅผ ๊ฐ€์ง
  • JSON๊ณผ ์œ ์‚ฌํ•œ ํ˜•ํƒœ

โœ”๏ธย collection

  • ๋ฌธ์„œ๋ฅผ ํฌํ•จํ•˜๋Š” ๊ทธ๋ฃน
  • ํ•˜์œ„์— ์„œ๋ธŒ ์ปฌ๋ ‰์…˜์„ ๊ฐ–๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅ
  • JSON์ฒ˜๋Ÿผ ๊ณ„์†ํ•ด์„œ ๋ฌธ์„œ + ์ปฌ๋ ‰์…˜์„ ์ƒ์„ฑํ•ด ๊ฐˆ ์ˆ˜ ์žˆ์Œ !

โœ”๏ธย firestore ์ฃผ์š” ๋ฉ”์„œ๋“œ

collection(firestore, collectionName)

doc(firestore, collectionName, docId)

query(collectionRef, ...queryConstraints)

where(fieldPath, opStr, value)

orderBy(fieldPath, directionStr)

getDocs(query)

addDoc(collectionRef, data)

setDoc(docRef, data, options)

updateDoc(docRef, data)

deleteDoc(docRef)

โœ”๏ธย ์‹ค์‹œ๊ฐ„ ๋™๊ธฐํ™”

  • ํ•œ ๋ฒˆ ์กฐํšŒํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜์—ˆ์„ ๊ฒฝ์šฐ ๋‹ค์‹œ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๋Š” ๊ฒƒ์ด ๊ธฐ๋ณธ์  ๋ฐ์ดํ„ฐ ์š”์ฒญ ํ๋ฆ„
  • firestore์—์„œ๋Š” ์‹ค์‹œ๊ฐ„ ๋™๊ธฐํ™”๋ฅผ ์ œ๊ณต
    • ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด ์ž๋™์œผ๋กœ ์ตœ์‹  ์ƒํƒœ ์—…๋ฐ์ดํŠธ
    • ํ•ญ์ƒ ์ตœ์‹  ๋ฐ์ดํ„ฐ ์œ ์ง€ ๊ฐ€๋Šฅ ( onSnapshot ์‚ฌ์šฉ )

โœ”๏ธย ๋ณด์•ˆ ๊ทœ์น™

  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณดํ˜ธํ•˜๊ณ  ์‚ฌ์šฉ์ž๋ณ„๋กœ ์ ‘๊ทผ ๊ถŒํ•œ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ
  • ์ธ๊ฐ€( Authorization ) ๊ฐœ๋…: ์‚ฌ์šฉ์ž๋ณ„๋กœ ์–ด๋–ค ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์„์ง€ ๊ฒฐ์ • ๊ฐ€๋Šฅ

โœ”๏ธย ๊ฐ•๋ ฅํ•œ ์ฟผ๋ฆฌ ์ง€์›( ๊ฒ€์ƒ‰ / ์กฐํšŒ )

  • Query( ์ฟผ๋ฆฌ ): ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ฑฐ๋‚˜ ์กฐ์ž‘์„ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ์š”์ฒญ
    • where, orderBy, limit, startAt, arrayContains...
  • pros ?
    • ์œ ์—ฐํ•œ ๋ฐ์ดํ„ฐ ์กฐํšŒ
      • ๋ณต์žกํ•œ ์กฐ๊ฑด์„ ๊ฒฐํ•ฉํ•˜์—ฌ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ •ํ™•ํ•˜๊ฒŒ ์กฐํšŒ ๊ฐ€๋Šฅ
    • ๊ณ ์„ฑ๋Šฅ ์ฟผ๋ฆฌ
      • ์ž๋™ ์ธ๋ฑ์‹ฑ๊ณผ ์ฟผ๋ฆฌ ์ตœ์ ํ™”๋ฅผ ํ†ตํ•ด ๋น ๋ฅด๊ณ  ํšจ์œจ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ ์กฐํšŒ ๊ฐ€๋Šฅ
    • ์‹ค์‹œ๊ฐ„ ์—…๋ฐ์ดํŠธ
      • ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๊ฐ€ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์—…๋ฐ์ดํŠธ๋˜์–ด ํ•ญ์ƒ ์ตœ์‹  ๋ฐ์ดํ„ฐ ์ œ๊ณต

0๊ฐœ์˜ ๋Œ“๊ธ€