Как создать уникальные идентификаторы для сообщений чата в Laravel с помощью GridDB?Php

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как создать уникальные идентификаторы для сообщений чата в Laravel с помощью GridDB?

Сообщение Anonymous »

Я создаю приложение для чата в реальном времени с помощью Laravel и хочу использовать GridDB в качестве базы данных из-за его высокой производительности при работе с данными временных рядов. Поскольку у GridDB нет официального PHP-клиента, я настроил специальную интеграцию с использованием API промежуточного программного обеспечения на Python, который взаимодействует с GridDB. Мое приложение Laravel взаимодействует с этим промежуточным программным обеспечением через HTTP-запросы.
В моем приложении чата каждому сообщению нужен уникальный идентификатор. В традиционных реляционных базах данных, таких как MySQL, я бы использовал в качестве первичного ключа автоинкрементное целое число. Поскольку GridDB изначально не поддерживает автоматическое увеличение идентификаторов, мне нужен надежный способ создания уникальных идентификаторов для сообщений чата, который мог бы обрабатывать высокий уровень параллелизма, поскольку несколько пользователей могут отправлять сообщения одновременно.
Я попробовал объединение текущей отметки времени со случайным числом:
Я создаю приложение для чата в реальном времени с помощью Laravel и хочу использовать GridDB в качестве базы данных из-за его высокой производительности при работе с данными временных рядов. Поскольку у GridDB нет официального PHP-клиента, я настроил специальную интеграцию с использованием API промежуточного программного обеспечения на Python, который взаимодействует с GridDB. Мое приложение Laravel взаимодействует с этим промежуточным программным обеспечением через HTTP-запросы.
В моем приложении чата каждому сообщению нужен уникальный идентификатор. В традиционных реляционных базах данных, таких как MySQL, я бы использовал в качестве первичного ключа автоинкрементное целое число. Поскольку GridDB изначально не поддерживает автоматическое увеличение идентификаторов, мне нужен надежный способ создания уникальных идентификаторов для сообщений чата, который мог бы обрабатывать высокий уровень параллелизма, поскольку несколько пользователей могут отправлять сообщения одновременно.
Я попробовал объединение текущей отметки времени со случайным числом:

Код: Выделить всё

$messageId = time() . mt_rand(1000, 9999);
Это снижает вероятность коллизий, но не является надежным, особенно при высокой нагрузке.
Я попытался имитировать автоматическое приращение, запрашивая максимальное значение. существующий идентификатор и его увеличение:

Код: Выделить всё

$maxId = $this->getMaxMessageIdFromGridDB();
$messageId = $maxId + 1;
Однако этот подход небезопасен в параллельной среде и может привести к состояниям гонки.
Будет ли использоваться GridDB TIMESTAMP ключ строки с точностью до доли секунды может стать подходящим вариантом для уникальных идентификаторов?

Подробнее здесь: https://stackoverflow.com/questions/791 ... ith-griddb
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»