Sobes.tech
Junior

Serializatsiya nima?

sobes.tech AI

AIdan javob

Serializatsiya — bu ma'lumotlar tuzilmasi yoki ob'ektni saqlash, tarmoq orqali uzatish yoki keyinchalik tiklash mumkin bo'lgan formatga aylantirish jarayonidir. Teskari jarayon deserializatsiya deb ataladi.

Serializatsiyaning asosiy maqsadlari:

  • Holatni saqlash: Ob'ekt yoki ma'lumotlar tuzilmasining holatini saqlash va keyinchalik tiklash imkonini beradi.
  • Ma'lumotlarni uzatish: Turli tizimlar yoki jarayonlar o'rtasida ma'lumot almashish uchun standartlashtirilgan format taqdim etadi.
  • Kesh qilish: Serializatsiya qilingan ma'lumotlar vaqtinchalik saqlash uchun qulay.

Python'da serializatsiya uchun quyidagi modullar va formatlar keng qo'llaniladi:

  • pickle: Python uchun standart modul bo'lib, Python ob'ektlarini serializatsiya qilish va deserializatsiya qilish uchun ishlatiladi. Python ilovalarida ma'lumotlarni saqlash va yuklash uchun mos. Boshqa tillardagi ilovalar bilan ma'lumot almashish uchun tavsiya etilmaydi, chunki format o'ziga xos.

    # Ob'ektni saqlash
    import pickle
    
    data = {'a': 1, 'b': [2, 3]}
    with open('data.pkl', 'wb') as f:
        pickle.dump(data, f)
    
    # Ob'ektni yuklash
    with open('data.pkl', 'rb') as f:
        loaded_data = pickle.load(f)
    
  • json: JSON (JavaScript Object Notation) bilan ishlash uchun standart modul. Veb-API'lar va turli tizimlar o'rtasida ma'lumot almashish uchun keng qo'llaniladi. JSON matnli va o'qilishi oson format. Cheklangan ma'lumot turlarini qo'llab-quvvatlaydi (matnlar, raqamlar, boolean, ro'yxatlar, lug'atlar, null).

    # JSON ga serializatsiya
    import json
    
    data = {'name': 'Alice', 'age': 30}
    json_string = json.dumps(data)
    print(json_string)
    
    # JSON dan deserializatsiya
    loaded_data = json.loads(json_string)
    print(loaded_data)
    
  • yaml: YAML (YAML Ain't Markup Language) bilan ishlash uchun modul. JSON ga nisbatan o'qilishi osonroq sintaksisga ega. Konfiguratsiya fayllari uchun keng qo'llaniladi.

    # YAML ga serializatsiya (PyYAML o'rnatilishi talab qilinadi)
    # import yaml
    #
    # data = {"list": [1, 2, 3], "dict": {"key": "value"}}
    # yaml_string = yaml.dump(data)
    # print(yaml_string)
    #
    # # YAML dan deserializatsiya
    # loaded_data = yaml.load(yaml_string, Loader=yaml.FullLoader)
    # print(loaded_data)
    
  • protobuf (Protocol Buffers): Google tomonidan ishlab chiqilgan serializatsiya formati. Binarny, samarali va ma'lumotlar sxemalarini qo'llab-quvvatlaydi (.proto fayllar bilan). Ko'pincha yuqori unumdorlikka ega tizimlar va RPC (Uzoq Protsedura chaqiruvi) uchun ishlatiladi.

Serializatsiya formatini tanlash aniq vazifaga, ishlash talablariga, o'qilishi va boshqa dasturlash tillari bilan hamkorlik qilish ehtiyojiga bog'liq.