Мне нужно отслеживать анонимных пользователей с включенными куки.
По сути, они будут проходить через сайт, взаимодействовать с ним, и я хотел бы дать им максимально возможный опыт, не требуя фактической регистрации. Позже, если они захотят, они могут зарегистрироваться, и их активность на сайте будет привязана к их новой учетной записи.
Что-то вроде Stackoverflow, но с той разницей, что я ожидаю, что большинство моих пользователей на самом деле не будут регистрироваться, а иногда просто возвращаются.
Итак, я не хочу создавать несколько фиктивных записей в таблице Users. И так как мне нужно это только для одного стола, я думал о чем-то вроде этого:
Таблица голосования История
Id TrackingToken VotingData
1 100 ...
2 100 ...
3 101 ...
4 102 ...
Таблица пользователей
Id TrackingToken OtherUsersColumns
1 100 ...
Таблица отслеживания токенов
LastTrackingToken
102
Я бы увеличил целочисленное поле LastTrackingToken и просто добавил бы это значение в файл cookie пользователя и отслеживал его активность при голосовании. Затем, если он решит зарегистрироваться, я просто добавлю его значение cookie TrackingToken в его запись пользователя.
Изначально я думал о Guid / uniqueidentifier, но, поскольку таблица голосования будет очень большой, и мне нужно будет запросить ее, я беспокоюсь об индексации поля uniqueidentifier.
Итак, вопросы есть (извините за 3 подвопроса, но они так связаны, и я думаю, что контекст важен, поэтому я не хочу дублировать описание вопроса и контекста):
Целочисленное поле лучше, когда речь идет о производительности и индексации? Имейте в виду, что TrackingToken не является полем первичного ключа!
У вас есть какая-то другая идея, как я мог бы выполнить сценарий, который я изложил?
Если я решу заняться ручным генерированием целочисленных токенгеров, каков будет лучший способ надежно генерировать / увеличивать новый трекингтокен? Предположим, много одновременно работающих пользователей получат доступ к базе данных.