Дескриптор файла потока Cassandra TimeUUID при использовании uuid по умолчанию

У меня есть модель Кассандры как

import uuid
from cassandra.cqlengine import columns
from cassandra.cqlengine.models import Model

class MyModel(Model):
    ...
    ...
    created_at = columns.TimeUUID(primary_key=True,
                         clustering_order='DESC',
                         default=uuid.uuid1)
    ...
    ...

Недавнее приложение, удалившее создание uuid1, не закрывает файлы - достигает предела дескриптора файла. Я пытаюсь найти решение, но кажется, что варианты, я думаю, могут не работать

  • замещать uuid1 по умолчанию с uuid4, но TimeUUID нужно время участие в нем, и только uuid1 предоставить это.
  • Relace uuid1 с cassandra.util.uuid_from_time(time.time()), когда проверить код для обоих uuid1 а также uuid_from_time, оба выглядят одинаково, так что также не решить проблему.

Последний вариант - заменить TimeUUID с Timestamp типа, но это created_at столбец primary_key а также clustering_order, так что не знаю, могу ли я сделать это или нет.

В моем семействе столбцов уже более 1 000 000 данных, поэтому я не могу их просто отбросить.

Я также хочу знать, в чем преимущество использования TimeUUID вместо timestamp?

1 ответ

Решение

Вы уверены, что вы попали в libuuid вопрос вы связали? Ваш фрагмент кода показывает стандартную библиотеку uuidчто, вероятно, не имеет этой проблемы. Возможно ли, что в вашей программе есть другая утечка файлового дескриптора?

Если это libuuidпроще всего было бы использовать стандартную реализацию библиотеки. Если скорость вас беспокоит, вы можете рассмотреть возможность создания другой версии libuuid использовать с python-libuuid, Я попробовал этот быстро и не заметил утечки дескрипторов файлов: http://www.ossp.org/pkg/lib/uuid/

Я также хочу знать, в чем преимущество использования TimeUUID вместо отметки времени?

Вы не сможете изменить тип столбца в существующей таблице, но ответите на свой вопрос: TimeUUID обычно используется, чтобы избежать коллизий, когда несколько событий могут быть записаны в одном значении временной метки.

Другие вопросы по тегам