Django сжимает строковые данные

У меня есть модель django, имеющая: raw_data = models.TextField(_("raw_data"), default='')

Он просто хранит некоторые необработанные данные, которые могут быть 1K - 200K.

У меня 50 миллионов строк.

Мне нужно уменьшить размер данных в базе данных.

  1. How can I tell what consume most data over all database ?

  2. Should I use a string compression before storing the data ?

    2.1 I saw here: Text compression in PostgreSQL that it get compressed anyway, is that true ?

    2.2 I did some python code compression, I am not sure if changing bytes to string type can cause in lossing data:

def shrink_raw_data(username):

    follower_data = get_string_from_database()
    text = json.dumps(follower_data).encode('utf-8')  # outputs as a bytes

    # Checking size of text
    text_size = sys.getsizeof(text)
    print("\nsize of original text", text_size)

    # Compressing text
    compressed = str(zlib.compress(text, 9))
    
    # store String in database

    # Checking size of text after compression
    csize = sys.getsizeof(compressed)
    print("\nsize of compressed text", csize)

    # Decompressing text
    decompressed = zlib.decompress(compressed)

    # Checking size of text after decompression
    dsize = sys.getsizeof(decompressed)
    print("\nsize of decompressed text", dsize)

    print("\nDifference of size= ", text_size - csize)

    follower_data_reload = json.loads(decompressed)

    print(follower_data_reload == follower_data)

Я не уверен насчет "str(zlib.compress(text, 9))", так как мои данные хранятся в виде строки в базе данных, правильно ли это?

Вернуться на верх