Docsda aytilishicha, in-memory database bilan ishlarkan. SQLite3da in-memory database bilan ishlamaganman, lekin in-memory database haqida umumiy aytaman:
Bu turdagi databaselar odatdagidek diskda(HDD, SSD) emas, to'laligicha RAMda saqlanadi. Ishlash vaqtida doimiy xotira(storage) bilan aloqa qilish va natijani kutishga hojat yo'q. Hammasi RAM va CPU o'rtasida sodir bo'ladi. Shuning hisobiga oddiy relational databasedan bir necha yuz barobar tezkor va ancha "yengil".
Odatda, SQL oilasidagi(MySQL, PostgreSQL) databaselar storageda saqlansa, NoSQL(MongoDB,...) va NewSQL(MemSQL,...) databaselar deyarli har doim memoryda saqlanadi.
Qachon ishlatiladi?
Tezligi yuqori bo'lgani uchun caching uchun keng ishlatiladi.
Real-time data bilan ishlaganda ham in-memory database yordam beradi. Masalan, hozir biz yozishib turgan telegram chat. Agar PostgreSQL ishlatilganda xabarlar bizga ancha kech yetib kelardi.
Real-time analyse uchun. Ba'zan tarmoqdagi kutilmagan holatlardan vaqtida xabar topmaslik katta muammolarni olib keladi. Masalan, DDos'ga qarshi tizim ma'lumotlarni tezkor analiz qilishi uchun oddiy MySQL juda sekin.
Kamchiliklari:
Butun ma'lumotlar bazasi RAMda saqlangani uchun oddiygina tizimning qayta yuklanishi yoki serverda elektr o'chib qolishi(😅) hamma ma'lumot yo'qotilishiga olib keladi. Buning oldini olish uchun replication qilinadi. Ya'ni in-memory databasedagi ma'lumotlar sekin-sekin storagedagi database(masalan, PostgreSQL)ga ham yozib boriladi. Agar ma'lumotlar o'chib ketsa, qattiq diskdagi nusxadan qayta tiklanadi.
Post #56
462
Forwarded from Bobosher Musurmonov
- 👍 2