|
Nosql ma'lumotlar bazalari va grafik ma'lumotlar bazalari
|
bet | 1/2 | Sana | 03.02.2024 | Hajmi | 153,96 Kb. | | #151067 |
Bog'liq NoSQL ma
NoSQL ma'lumotlar bazalari va grafik ma'lumotlar bazalari:
Bugungi dunyoda bizda ma'lum ma'lumotlar talablariga javob beradigan ko'plab ma'lumotlar bazalari mavjud. An'anaviy relyatsion ma'lumotlar bazalari hali ham keng qo'llanilsa-da, NoSQL ma'lumotlar bazalarining kengaytirilishi va moslashuvchanligi ularni tobora ommalashtirdi. NoSQL ma'lumotlar bazalari hujjatlar ma'lumotlar bazalari, kalit-qiymatlar do'konlari va ustunlar oilasi do'konlari kabi turli xil turlarda keladi. Ular orasida grafik ma'lumotlar bazalari mashhurlik kasb etmoqda. Ushbu blog grafik ma'lumotlar bazalari va boshqa NoSQL ma'lumotlar bazalari o'rtasidagi farqlarni o'rganadi va ularning ishlashini o'rganadi. Bundan tashqari, loyihangiz uchun qaysi ma'lumotlar bazasi turi eng mos kelishini yaxshiroq tushunish uchun grafik va NoSQL ma'lumotlar bazalari uchun foydalanish holatlarini o'rganamiz.
NoSQL ma'lumotlar bazalari
Strukturaviy so'rovlar tiliga (SQL) tayanadigan relyatsion ma'lumotlar bazalaridan farqli o'laroq, NoSQL ma'lumotlar bazasi ma'lumotlarni saqlash va kirish uchun turli xil ma'lumotlar modellaridan foydalanadi. Strukturaviy ma'lumotlarni yaxshi boshqaradigan SQL ma'lumotlar bazalaridan farqli o'laroq, ular tuzilmagan va yarim tizimli ma'lumotlar bilan ishlash uchun afzal qilingan tanlovdir.
NoSQL ma'lumotlar bazalari katta hajmdagi ma'lumotlarni saqlash va olishda juda samarali. Ular hujjatlar, ierarxik ma'lumotlar, grafiklar va kalit-qiymat juftliklari kabi turli xil ma'lumotlar turlarini saqlashi mumkin. NoSQL ma'lumotlar bazalariga misollar kalit-qiymatlar do'konlari va hujjatlar ma'lumotlar bazalarini o'z ichiga oladi.
NoSQL ma'lumotlar bazalaridan qachon foydalanish kerak?
NoSQL ma'lumotlar bazalari an'anaviy SQL ma'lumotlar bazalari eng mos kelmasligi mumkin bo'lgan maxsus foydalanish holatlari uchun javob beradi. NoSQL ma'lumotlar bazalari foydali bo'lishi mumkin bo'lgan ba'zi holatlar:
Katta miqyosli ma'lumotlar bilan ishlash
NoSQL ma'lumotlar bazalari ma'lum bir formatga mos kelmaydigan katta hajmdagi tuzilmagan yoki yarim tizimli ma'lumotlarni, jumladan, foydalanuvchi tomonidan yaratilgan kontent, ijtimoiy media xabarlari, mashina jurnallari va IoT qurilmasi ma'lumotlarini boshqarishda juda samarali. Ular katta hajmdagi ma'lumotlarni qayta ishlash uchun yaratilgan va ajoyib miqyoslilikni taklif qiladi.
Yuqori miqyoslilik
NoSQL ma'lumotlar bazalari minglab yoki undan ortiq bir vaqtning o'zida ulanishlarni boshqarishi kerak bo'lgan ma'lumotlar bazalari bilan shug'ullanish kerak bo'lganda yoki tez oqim va o'zgaruvchan ma'lumotlarni qayta ishlash va saqlash kerak bo'lganda juda yaxshi ishlaydi. Ular yuzlab yoki minglab tovar serverlarini kengaytirishga yordam beradigan avtomatik parchalanish, replikatsiya va boshqa funksiyalarni taqdim etadi.
Ma'lumotlar sxemalarini o'zgartirish uchun moslashuvchanlik
NoSQL ma'lumotlar bazalari yuqori moslashuvchanlikni taklif qiladi va an'anaviy relyatsion ma'lumotlar bazalari tomonidan qo'yiladigan cheklovlarsiz ma'lumotlar sxemalaridagi o'zgarishlarga moslasha oladi. Natijada, ma'lumotlar modeliga yangi maydonlarni yangilash yoki qo'shish SQL ma'lumotlar bazalariga nisbatan NoSQL ma'lumotlar bazalarida ancha sodda. Bu NoSQL ma'lumotlar bazalarini yangi turdagi ma'lumotlar yoki o'zgaruvchan biznes ehtiyojlarini qondirish uchun tez moslashishni talab qiladigan korxonalar uchun ideal tanlov qiladi.
Tejamkor masshtablash
Ma'lumotlar bazasini masshtablash xarajat va samaradorlik nuqtai nazaridan muhim ahamiyatga ega. NoSQL ma'lumotlar bazalari miqyoslash bilan bog'liq xarajatlarni tejashi mumkin, chunki ular bir nechta tovar serverlarida gorizontal ravishda masshtablashlari mumkin. Bu an'anaviy SQL ma'lumotlar bazalariga qaraganda ancha tejamkor bo'lib, yanada kuchliroq apparat sotib olish orqali vertikal masshtabni talab qiladi. NoSQL ma'lumotlar bazalari yordamida klasterga qo'shimcha serverlarni qo'shish o'sib borayotgan ma'lumotlar talablarini hal qilishning oddiy va samarali usuli hisoblanadi.
NoSQL ma'lumotlar bazalaridan qanday foydalanish kerak?
NoSQL ma'lumotlar bazalarini kod bilan ishlatish uchun birinchi navbatda sizning talablaringizga mos keladigan NoSQL ma'lumotlar bazasini tanlashingiz kerak. NoSQL ma'lumotlar bazalarining mashhur misollari "MongoDB", "Cassandra", "Redis" va "DynamoDB"dir. Ushbu ma'lumotlar bazalarining har biri o'z API va drayverlarga ega bo'lib, ular bilan o'zaro aloqada bo'lishi mumkin. Bu erda men MongoDB dan misol sifatida foydalanaman va Python va uning PyMongo paketi yordamida CRUD operatsiyalarini qanday bajarishni tushuntiraman.
MongoDB o'rnatilmoqda
Birinchidan, tizimingizga MongoDB o'rnatishingiz kerak. Buni qanday qilish bo'yicha ko'rsatmalar uchun rasmiy MongoDB hujjatlari ga murojaat qilishingiz mumkin.
MongoDB-ni o'rnatganingizdan so'ng, uni terminalda quyidagi buyruqni ishga tushirish orqali boshlashingiz mumkin:
mongod
Python yordamida MongoDB ga ulanish
Keyinchalik, MongoDB uchun rasmiy Python mijozlar kutubxonasi bo'lgan pymongo kutubxonasini o'rnatishingiz kerak bo'ladi. Siz uni pip yordamida o'rnatishingiz mumkin:
pip install pymongo
pymongo ni o'rnatganingizdan so'ng, quyidagi kod yordamida MongoDB namunangizga ulanishingiz mumkin:
import pymongo
# Create a MongoClient
client = pymongo.MongoClient("mongodb://localhost:27017/")
# Create a database
db = client["your_datebase_name"]
Ushbu kod tizimingizdagi MongoDB namunasini ifodalovchi MongoClient ob'ektini va shu misol ichidagi ma'lumotlar bazasini ifodalovchi MongoDatabase ob'ektini yaratadi.
To'plamni yaratish va hujjatlarni kiritish
Ma'lumotlar bazasiga ulanganingizdan so'ng, ushbu ma'lumotlar bazasida quyidagi kod yordamida to'plamlarni yaratishingiz mumkin:
# Create a collection
collection = db["mycollection"]
Ushbu kod ma'lumotlar bazasidagi to'plamni ifodalovchi MongoCollection ob'ektini yaratadi. Keyin insert_one yoki insert_many usullaridan foydalangan holda hujjatlarni to'plamga kiritish uchun ushbu ob'ektdan foydalanishingiz mumkin:
# Insert a single document
document = {"name": "John", "age": 30}
result = collection.insert_one(document)
print(result.inserted_id)
# Insert multiple documents
documents = [
{"name": "Alice", "age": 25},
{"name": "Bob", "age": 35},
{"name": "Charlie", "age": 45}
]
result = collection.insert_many(documents)
print(result.inserted_ids)
insert_one usuli to'plamga bitta hujjatni kiritadi va operatsiya haqida ma'lumotni o'z ichiga olgan InsertOneResult ob'ektini qaytaradi. Ushbu ob'ektning inserted_id atributi kiritilgan hujjatning _id ni o'z ichiga oladi.
insert_many usuli to'plamga bir nechta hujjatlarni kiritadi va operatsiya haqida ma'lumotni o'z ichiga olgan InsertManyResult ob'ektini qaytaradi. Ushbu ob'ektning inserted_ids atributi kiritilgan hujjatlarning _id qiymatlari ro'yxatini o'z ichiga oladi.
To'plamdan hujjatlarni o'qish
To'plamdan bir yoki bir nechta hujjatlarni olish uchun siz find usulidan foydalanishingiz mumkin:
# Find a single document
query = {"name": "John"}
document = collection.find_one(query)
print(document)
# Find multiple documents
query = {"age": {"$gt": 30}}
documents = collection.find(query)
for document in documents:
print(document)
find_one usuli so'rovga mos keladigan to'plamdan bitta hujjatni oladi va hujjatni ifodalovchi dict ob'ektini qaytaradi.
find usuli so'rovga mos keladigan to'plamdan bir nechta hujjatlarni oladi va hujjatlarni takrorlash uchun foydalanishingiz mumkin bo'lgan Cursor ob'ektini qaytaradi. query parametri so'rov shartini belgilaydigan dict ob'ektidir. Ikkinchi misolda, so'rov age maydoni 30 dan katta bo'lgan barcha hujjatlarni oladi.
To'plamdagi hujjatlarni yangilash
To'plamdagi bir yoki bir nechta hujjatlarni yangilash uchun siz update_one yoki update_many usulidan foydalanishingiz mumkin:
# Update a single document
query = {"name": "John"}
new_value = {"$set": {"age": 32}}
result = collection.update_one(query, new_value)
print(result.modified_count)
# Update multiple documents
query = {"age": {"$lt": 30}}
new_value = {"$inc": {"age": 1}}
result = collection.update_many(query, new_value)
print(result.modified_count)
Birinchi misolda so'rovga mos keladigan to'plamdagi bitta hujjatni yangilash uchun update_one usuli qo'llaniladi. query parametri yangilanadigan hujjatni tanlash shartini, new_value parametri esa hujjatga kiritiladigan o'zgarishlarni belgilaydi. Bu erda $set operatori age maydonini 32 ga o'rnatish uchun ishlatiladi.
Ikkinchi misolda so'rovga mos keladigan to'plamdagi bir nechta hujjatlarni yangilash uchun update_many usuli qo'llaniladi. Bunda $lt operatori age maydoni 30 dan kichik bo'lgan hujjatlarni tanlash uchun, $inc operatori esa age maydonini 1 ga oshirish uchun ishlatiladi.
To'plamdan hujjatlarni o'chirish
To'plamdan bir yoki bir nechta hujjatni o'chirish uchun siz delete_one yoki delete_many usulidan foydalanishingiz mumkin:
# Delete a single document
query = {"name": "John"}
result = collection.delete_one(query)
print(result.deleted_count)
# Delete multiple documents
query = {"age": {"$gt": 40}}
result = collection.delete_many(query)
print(result.deleted_count)
Birinchi misolda so'rovga mos keladigan to'plamdan bitta hujjatni o'chirish uchun delete_one usuli qo'llaniladi. Usul bilan qaytarilgan DeleteResult ob'ektining deleted_count atributi o'chirilgan hujjatlar sonini ko'rsatadi.
Ikkinchi misolda so'rovga mos keladigan to'plamdan bir nechta hujjatlarni o'chirish uchun delete_many usuli qo'llaniladi. Bu erda $gt operatori age maydoni 40 dan katta bo'lgan hujjatlarni tanlash uchun ishlatiladi.
Pros
NoSQL ma'lumotlar bazalari yuqori darajada kengaytirilishi mumkin va katta hajmdagi ma'lumotlar va murakkab so'rovlarni boshqarish uchun mo'ljallangan.
Ular ma'lumotlar bazasi sxemasini o'zgartirmasdan maydonlarni qo'shish yoki olib tashlashni osonlashtiradigan moslashuvchan ma'lumotlar modelini taklif qiladi.
NoSQL ma'lumotlar bazalari relyatsion ma'lumotlar bazalariga qaraganda tezroq o'qish va yozish tezligi bilan katta hajmdagi tranzaktsiyalarni bajarishi mumkin.
Ularning ishlashi odatda relyatsion ma'lumotlar bazalariga qaraganda arzonroq, chunki ular arzon tovar apparatlarida ishlashi mumkin.
Kamchiliklari:
NoSQL ma'lumotlar bazalari qo'shilish yoki ACID tranzaktsiyalari kabi funksiyalarni ta'minlamasligi mumkin, bu esa muayyan foydalanish holatlarida muammo bo'lishi mumkin.
Relyatsion ma'lumotlar bazalaridan farqli o'laroq, NoSQL ma'lumotlar bazalarida aniq belgilangan standart yo'q, bu ma'lumotlarning izchilligi va ko'chmaligi bilan bog'liq muammolarni keltirib chiqarishi mumkin.
SQL ma'lumotlar bazalari bilan solishtirganda, NoSQL ma'lumotlar bazalari ishlab chiquvchilar va foydalanuvchilar hamjamiyatiga ega, bu esa kamroq resurslar va qo'llab-quvvatlash mavjudligini anglatadi.
Turli xil dizayn va foydalanish holatlari tufayli, NoSQL ma'lumotlar bazalari yanada keskin o'rganish egri chizig'iga ega va samarali ishlash uchun maxsus ko'nikmalarni talab qiladi.
Grafik ma'lumotlar bazasi
Grafik ma'lumotlar bazasi - bu ma'lumotlarni tugunlar va qirralar bo'yicha saqlaydigan ma'lumotlar bazasi turi. Ma'lumotlar oldindan belgilangan modelga rioya qilmasdan juda moslashuvchan tarzda saqlanadi. Ushbu grafik ikkita tugun o'rtasidagi munosabatni hosil qiladi, bu munosabatlar yo'naltirilgan yoki yo'naltirilmagan bo'lishi mumkin. Ushbu ma'lumotlar bazalari ma'lumotlar/tugunlar o'rtasidagi murakkab munosabatlarni boshqarish uchun mo'ljallangan.
|
| |