Sobes.tech
Junior

Čo je serializácia?

sobes.tech AI

Odpoveď od AI

Serializácia je proces prevodu dátovej štruktúry alebo objektu do formátu, ktorý je možné uložiť, preniesť cez sieť alebo neskôr obnoviť. Opčný proces sa nazýva deserializácia.

Hlavné ciele serializácie:

  • Uloženie stavu: Umožňuje uložiť stav objektu alebo dátovej štruktúry na neskoršie obnovenie.
  • Prenos dát: Zabezpečuje štandardizovaný formát na výmenu dát medzi rôznymi systémami alebo procesmi.
  • Cacheovanie: Serializované dáta sú vhodné na dočasné uloženie v cache.

V Pythone sa často používajú nasledujúce moduly a formáty na serializáciu:

  • pickle: Štandardný modul na serializáciu a deserializáciu Python objektov. Vhodný na uloženie a načítanie dát v rámci Python aplikácií. Neodporúča sa na výmenu dát s aplikáciami v iných jazykoch kvôli špecifikám formátu.

    # Uloženie objektu
    import pickle
    
    data = {'a': 1, 'b': [2, 3]}
    with open('data.pkl', 'wb') as f:
        pickle.dump(data, f)
    
    # Načítanie objektu
    with open('data.pkl', 'rb') as f:
        loaded_data = pickle.load(f)
    
  • json: Štandardný modul na prácu s JSON (JavaScript Object Notation). Široko používaný na webové API a výmenu dát medzi rôznymi systémami. JSON je textový a ľahko čitateľný formát. Podporuje obmedzený počet typov dát (reťazce, čísla, boolean, zoznamy, slovníky, null).

    # Serializácia do JSON
    import json
    
    data = {'name': 'Alice', 'age': 30}
    json_string = json.dumps(data)
    print(json_string)
    
    # Deserializácia z JSON
    loaded_data = json.loads(json_string)
    print(loaded_data)
    
  • yaml: Modul na prácu s YAML (Yet Another Markup Language). Vyššia čitateľnosť v porovnaní s JSON. Často sa používa na konfiguračné súbory.

    # Serializácia do YAML (vyžaduje inštaláciu PyYAML)
    # import yaml
    #
    # data = {"list": [1, 2, 3], "dict": {"key": "value"}}
    # yaml_string = yaml.dump(data)
    # print(yaml_string)
    #
    # # Deserializácia z YAML
    # loaded_data = yaml.load(yaml_string, Loader=yaml.FullLoader)
    # print(loaded_data)
    
  • protobuf (Protocol Buffers): Formát na serializáciu vyvinutý spoločnosťou Google. Binárny, efektívny a podporuje schémy dát (pomocou súborov .proto). Často sa používa v systémoch s vysokým výkonom a RPC (Remote Procedure Call).

Výber formátu závisí od konkrétnej úlohy, požiadaviek na výkon, čitateľnosti a potreby spolupráce s inými programovacími jazykmi.