CRUD
CRUD — bu CREATE, READ, UPDATE, va DELETE so‘zlarining qisqartmasi bo‘lib, ular persistent ma’lumot elementlarini yaratish va boshqarish uchun zarur bo‘lgan to‘rt asosiy operatsiyani ifodalaydi. Bu operatsiyalar asosan relatsion va NoSQL ma’lumotlar bazalarida qo‘llaniladi.
Ushbu maqolada CRUD operatsiyalarining ma’lumotlarni qayta ishlashda qanday ishlatilishi tasvirlanadi. Shuningdek, sysadminlar yoki DevOps muhandislari ma’lumotlar bazasini kuzatishda duch kelishi mumkin bo‘lgan muammolar ham ko‘rib chiqiladi.
CRUD tushuntirilishi
Yuqorida aytib o‘tilganidek, CRUD operatsiyalari persistent saqlash dasturlarida qo‘llaniladi, ya’ni bu dasturlar tizim o‘chirilgandan keyin ham ma’lumotlarini saqlaydi. Bu operatsiyalar volatile xotira (masalan, Random Access Memory yoki cache fayllar)da saqlanadigan ma’lumotlarga ishlov berishdan farq qiladi.
CRUD keng ko‘lamda ma’lumotlar bazasi dasturlarida qo‘llaniladi. Bunga Relational Database Management Systems (RDBMS), masalan, Oracle, MySQL, va PostgreSQL kiradi. Shuningdek, bu NoSQL ma’lumotlar bazalari, masalan, MongoDB, Apache Cassandra, va AWS DynamoDBda ham ishlatiladi.
CRUDga o‘xshash operatsiyalar fayllar kabi persistent ma’lumot tuzilmalarida bajarilishi mumkin. Masalan, Microsoft Word hujjatini yaratish, uni yangilash, o‘qish va fayl menejeri orqali o‘chirishingiz mumkin. Ammo fayllar record-oriented emas (MongoDB yoki Couchbase’da document-oriented bo‘lgani kabi). CRUD terminologiyasi aniq record-oriented operatsiyalarga tegishli.
CREATE
CREATE operatsiyasi yangi recordni ma’lumotlar bazasiga qo‘shadi. RDBMSda jadvaldagi qator record, ustunlar esa field deb ataladi. CREATE operatsiyasi jadvalga alohida field qiymatlari bilan bir yoki bir nechta record qo‘shadi.
NoSQL ma’lumotlar bazalarida ham xuddi shu tamoyil amal qiladi. Agar ma’lumotlar bazasi document-oriented bo‘lsa, unda yangi hujjat (masalan, JSON formatidagi atributlar bilan) collection (RDBMS jadvaliga teng)ga qo‘shiladi. Xuddi shunday, DynamoDB kabi NoSQL bazalarida CREATE operatsiyasi jadvalga yangi item (recordga teng) qo‘shadi.
READ
READ operatsiyasi ma’lumotlar bazasi jadvalidan (yoki collection yoki bucket) recordlarni qaytaradi. Bu operatsiya ma’lum qidiruv mezonlari asosida barcha recordlarni yoki ularning ayrim fieldlarini qaytarishi mumkin.
UPDATE
UPDATE mavjud recordlarni o‘zgartirish uchun ishlatiladi. Masalan, bu mijozlar ma’lumotlar bazasida manzilni o‘zgartirish yoki mahsulot narxini yangilash bo‘lishi mumkin. READda bo‘lgani kabi, UPDATE ham barcha recordlarga yoki faqat ayrimlariga qo‘llanilishi mumkin.
UPDATE operatsiyasi recordning bitta yoki bir nechta fieldini o‘zgartiradi va o‘zgarishlarni saqlaydi. Agar bir nechta field yangilanishi kerak bo‘lsa, ma’lumotlar bazasi tizimi ularning barchasi yangilangan yoki hech biri yangilanmaganligini ta’minlaydi.
DELETE
DELETE operatsiyasi foydalanuvchiga ma’lumotlar bazasidan recordlarni o‘chirish imkonini beradi. Hard delete recordni butunlay o‘chirib tashlaydi, soft delete esa recordni joyida qoldirib, uni flag bilan belgilaydi. Masalan, bu ish haqi tizimida muhim, chunki xodim ishni tark etganidan keyin ham uning ma’lumotlarini saqlash kerak bo‘ladi.
CRUD operatsiyalari qanday amalga oshiriladi?
RDBMSda CRUD operatsiyalari Structure Query Language (SQL) yordamida bajariladi:
- CREATE uchun INSERT ishlatiladi:
INSERT INTO <table> VALUES (field value 1, field value 2…) - READ uchun SELECT ishlatiladi:
SELECT field1, field2, … FROM <table> [WHERE ] - UPDATE uchun UPDATE ishlatiladi:
UPDATE <table> SET field1=value1, field2=value2,… [WHERE ] - DELETE uchun DELETE ishlatiladi:
DELETE FROM <table> [WHERE ]
NoSQL ma’lumotlar bazalarida CRUD operatsiyalari ma’lumotlar bazasining o‘ziga xos tiliga bog‘liq bo‘ladi. Masalan, Cassandradagi CQL SQLga juda o‘xshash. MongoDBda esa operatsiyalar quyidagi funksiyalar yordamida amalga oshiriladi:
- CREATE:
db.collection.insertOne()yokidb.collection.insertMany() - READ:
db.collection.find()yokidb.collection.findOne() - UPDATE:
db.collection.updateOne(),db.collection.updateMany(), yokidb.collection.replaceOne() - DELETE:
db.collection.deleteOne()yokidb.collection.deleteMany()
CRUD operatsiyalarini sinash
CRUD bilan bog‘liq dasturiy operatsiyalar odatda black-box usulida sinovdan o‘tkaziladi. Sinovchilar muayyan amallarni bajarganlarida, ular kodni tahlil qilishdan ko‘ra, backend ma’lumotlar bazasini tekshirib, kerakli o‘zgarishlar amalga oshirilganini yoki to‘g‘ri ma’lumotlar qaytarilganini aniqlashadi.
CRUD va ma’lumotlar bazasi samaradorligi
CRUD operatsiyalarining samaradorligi uchun yaxshi ma’lumotlar bazasi dizayni zarur. Yomon dizayn CRUD operatsiyalarining ma’lumotlar bazasiga salbiy ta’sir ko‘rsatishiga olib kelishi mumkin.
Misol uchun, UPDATE yoki DELETE kabi operatsiyalar qatorlarda eksklyuziv blokirovkalar talab qiladi, bu esa ma’lumotlar integratsiyasini ta’minlash uchun zarur. Shu sababli, ma’lumotlar bazasi administratorlari CRUD operatsiyalarini imkon qadar tezroq bajarilishini ta’minlashga harakat qilishadi.