nepster-web
@nepster-web

Стоит ли использовать uuid или есть что-то еще?

Часто возникает задача, когда необходимо "укомплектовать" объект и особенно знать его идентификатор до того, как он полетит в базу данных.

Этого можно достичь с помощью uuid, однако тут минусов куда больше чем плюсов:
- Падает производительность при выборке и вставке
- Падает производительность при JOIN
- База вырастает

Поэтому вопрос следующий:
Как без особого вреда для базы можно генерировать id для объекта за ранее ?
  • Вопрос задан
  • 1534 просмотра
Пригласить эксперта
Ответы на вопрос 3
@miksir
IT
>Как без особого вреда для базы можно генерировать id для объекта за ранее ?

SELECT nextval('name_of_sequence');
Ответ написан
Комментировать
@lega
Варианты:
1) Генерируемый уникальный ид (guid)
2) Нумератор, нужно где-то хранить глобальный счетчик, redis/db
3) Префиксы/суфиксы, каждый писатель имеет свой префикс и нумератор, например
Писатель 1: 10001, 10002, 10003...
Писатель 2: 20001, 20002, 20003...
Писатель 3: 30001, 30002, 30003...
Либо по модулю, писатель 1 пишет только нечетные, писатель 2 только четные
Ответ написан
Комментировать
Falseclock
@Falseclock
решаю нестандартные задачи
А зачем знать заранее? Не представляю себе такого.
Если после внесения новой строки в базу хотите знать уникальный ID сформированный в базе, то делаете так

INSERT INTO table_name (column1,column2) VALUES (value1,value2) RETURNING table_column_id;
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы