|
Спроектировать таблицу, если выборка по строкам
|
|||
---|---|---|---|
#18+
Будет таблица, в которой будут заноситься данные пользователей. Поиск пользователя будет идти не по логину , а по 32 символьной строке (уникальной для каждого). Данных будет много. Как лучше сделать , чтобы поиск не был слишком медленный? Критичен именно поиск, т.к. выборка будет идти очень часто, добавление реже. Тип думаю задать CHAR(32), а дальше что? Нужен ли идентификатор UNIQUE или лучше со скрипта проверять, есть ли такая запись в базе или нет? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2022, 01:41 |
|
Спроектировать таблицу, если выборка по строкам
|
|||
---|---|---|---|
#18+
morgotКак лучше сделать , чтобы поиск не был слишком медленный? Делать уже ничего не надо. В процессе обеспечения "уникальности для каждого" созданный unique constraint создаст индекс автоматически. PS: С "добавлением реже" тебе до "данных много" ещё лет сто пахать. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2022, 02:22 |
|
Спроектировать таблицу, если выборка по строкам
|
|||
---|---|---|---|
#18+
UNIQUE это Constraint а не идентификатор. Constraint используется to enforce data integrity на уровне таблиц. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2022, 05:50 |
|
Спроектировать таблицу, если выборка по строкам
|
|||
---|---|---|---|
#18+
morgot Будет таблица, в которой будут заноситься данные пользователей. Поиск пользователя будет идти не по логину , а по 32 символьной строке (уникальной для каждого). Данных будет много. Как лучше сделать , чтобы поиск не был слишком медленный? Критичен именно поиск, т.к. выборка будет идти очень часто, добавление реже. Тип думаю задать CHAR(32), а дальше что? Нужен ли идентификатор UNIQUE или лучше со скрипта проверять, есть ли такая запись в базе или нет? У вас логин и так является строкой по сути. Или вы этого не видите, или занимаетесь ерундой. Меняйте длину строки на нужную и не изобретайте велосипед. И да, уникальность должна проверяться автоматом (ставим галочку), а не кривописными скриптами. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2022, 13:37 |
|
Спроектировать таблицу, если выборка по строкам
|
|||
---|---|---|---|
#18+
Если вы пытаетесь закидывать туда данные сторонней системой то добавьте уникальное поле вашей длины по которой и находите пользователя. Это к тому что за логин из 32 знаков пользователи вас на кол посадят. Эх, праздники тормозят мой мозг. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2022, 13:48 |
|
Спроектировать таблицу, если выборка по строкам
|
|||
---|---|---|---|
#18+
Не могу грамотно объяснить. Это не логин, это уникальный ID , который генерируется скриптом на основе некоторых данных. Попросту говоря - защита от клонов и ботов, подробнее см. fingerprint.js . Не суть. Нужно искать именно по этим "отпечаткам", проверять нет ли в базе повторов (клонов), если есть - выбрать кто это (что за юзер, какие там были данные). ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2022, 15:10 |
|
Спроектировать таблицу, если выборка по строкам
|
|||
---|---|---|---|
#18+
morgot, Ну тогда "добавьте уникальное поле вашей длины по которой и находите пользователя". Если БД позволяет делать поле уникальным, то ставим галочку на уникальность. Иначе при записи строки вставляем сою проверку на уникальность. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2022, 15:44 |
|
Спроектировать таблицу, если выборка по строкам
|
|||
---|---|---|---|
#18+
Злой Бобр, у меня MySQL (или Мария), вроде разницы нет. По уникальности понял, а как по быстродействию - будет долго искать по строкам, может сортировка какая-то нужна или еще как оптимизировать? В плане, я понимаю что базе проще сделать выборку вида ID == 50, особенно если по числах отсортировано, чем перебрать все строки и сравнивать каждую. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2022, 16:01 |
|
Спроектировать таблицу, если выборка по строкам
|
|||
---|---|---|---|
#18+
morgotВ плане, я понимаю что базе проще Нет, ты ничего не понимаешь. Поэтому не думай. Тормоза в твоей системе будут не от базы. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2022, 16:12 |
|
Спроектировать таблицу, если выборка по строкам
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, да, я не понимаю, но подскажите как грамотно спроектировать-то. Чтобы потом не переделывать. Вот есть идентификатор 32 символа, поиск по нему. Как лучше сделать таблицу? База - MySQL /MariaDb ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2022, 17:19 |
|
Спроектировать таблицу, если выборка по строкам
|
|||
---|---|---|---|
#18+
morgot Вот есть идентификатор 32 символа Похоже в этом и есть проблема, если бы знать предысторию появления этого идентификатора, то наверняка нашелся бы обходной путь по проще и скорее всего не один... morgot Данных будет много. не думаю, что их больше чем товаров всех видов во всех странах, которые вписываются в EAN-13... Всего 13 ЦИФР описывают весь товар в мире, причем последняя сумма - это контрольная сумма предыдущих 12-ти... Первые две - Код страны, ну и т.д. Это я так в качестве намёка... 13 хоть и только цифр- тоже приличное поле для поиска, но таки не 32... Подойдите к идентификатору с другой стороны и если получится его сократить или убрать, то тому кто его придумал - просто оторвите ноги... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2022, 18:14 |
|
Спроектировать таблицу, если выборка по строкам
|
|||
---|---|---|---|
#18+
morgotподскажите как грамотно спроектировать-то. Чтобы потом не переделывать. Вот есть идентификатор 32 символа, поиск по нему. Как лучше сделать таблицу? Для начала - в точности как написано в любом учебнике для начинающих: поле VARCHAR и индекс на него. О том "чтобы потом не переделывать" лучше забудьте. В любом случае переделать придётся не раз и не два. Это неизбежно в ходе взросления. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2022, 18:19 |
|
Спроектировать таблицу, если выборка по строкам
|
|||
---|---|---|---|
#18+
morgot Dimitry Sibiryakov, да, я не понимаю, но подскажите как грамотно спроектировать-то. Чтобы потом не переделывать. Вот есть идентификатор 32 символа, поиск по нему. Как лучше сделать таблицу? База - MySQL /MariaDb 32 - это значит md5-отпечаток, скорей всего (а если нет, то что мешает?) значит тип поля - под hex (MySQL научился hex? А MariaDB? Или там до сих пор всё в чарах...) а чтобы быстрей искало и меньше занимало, можно отдельное поле для индекса, размером 10, например varchar нафиг не нужен на поле, где всегда 32 символа. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2022, 18:44 |
|
Спроектировать таблицу, если выборка по строкам
|
|||
---|---|---|---|
#18+
morgot Злой Бобр, у меня MySQL (или Мария), вроде разницы нет. По уникальности понял, а как по быстродействию - будет долго искать по строкам, может сортировка какая-то нужна или еще как оптимизировать? В плане, я понимаю что базе проще сделать выборку вида ID == 50, особенно если по числах отсортировано, чем перебрать все строки и сравнивать каждую. Как выше уже писали - зачем вам 32 знака для поиска? Потому как у вас явно тараканы в голове человека который придумал такую хрень. Я могу понять алгоритм найти пользователя, сравнить его 32 значное поле (ставить индекс не нужно) на условие. Но находить пользователя по 32 значному строковому полю (поле индексируемое) - в любой БД это путь в никуда (в плане быстродействия). Так что начните с постановки задачи. Например я считаю что поля Int 8 знаков для поиска именно по полю - вполне за глаза. Индекс по нему летает. Задачу в студию . Мы поможем правильный алгоритм сделать, а не такого монстрика. С марией я не работал, так что делайте поправку. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2022, 20:46 |
|
Спроектировать таблицу, если выборка по строкам
|
|||
---|---|---|---|
#18+
Злой БобрНо находить пользователя по 32 значному строковому полю (поле индексируемое) - в любой БД это путь в никуда (в плане быстродействия). То есть Вы вот так заявляете, что в любой СУБД поиск по ФИО, например, будет тормозить чисто из-за его длины при любом типе индекса? Или это только у MS SQL всё так запущенно?.. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2022, 21:25 |
|
Спроектировать таблицу, если выборка по строкам
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, У Бобра ключевое Злой Бобр Задачу в студию . - объемов нет (данных будет много - это ни о чем, одному и трех баб мало, другому и кобыла невеста...) - ну и ключ в 32 символа - это перл, заслуживающий особого внимания и рассмотрения... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2022, 22:09 |
|
Спроектировать таблицу, если выборка по строкам
|
|||
---|---|---|---|
#18+
vmagну и ключ в 32 символа - это перл, заслуживающий особого внимания и рассмотрения... Это ты ещё не видел таблиц с ключами из трёх полей, одно из которых double precision... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2022, 23:19 |
|
Спроектировать таблицу, если выборка по строкам
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Это ты ещё не видел таблиц с ключами из трёх полей, одно из которых double precision... после этих слов я наверно должен был испугаться и выронить на пол глаза? с дуру можно и инструмент сломать... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2022, 23:54 |
|
Спроектировать таблицу, если выборка по строкам
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Это ты ещё не видел таблиц с ключами из трёх полей, одно из которых double precision... Ха! Из трёх. Я до сих пор вспоминаю базу "Снежной королевы", там были составные естественные ключи вплоть до 12 (!) полей. morgot Будет таблица, в которой будут заноситься данные пользователей. Поиск пользователя будет идти не по логину , а по 32 символьной строке (уникальной для каждого). Данных будет много. "Много" - это сколько? Если пользователей будет меньше ста миллионов - достаточно позаботиться о том, чтобы не сделать совсем уж явной фигни в программном коде, который работает с этими данными. Тогда всё будет в порядке. morgot Злой Бобр, у меня MySQL (или Мария), вроде разницы нет. Ну тогда может не ста миллионов а миллиона. Не работал с ними, не знаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2022, 23:58 |
|
Спроектировать таблицу, если выборка по строкам
|
|||
---|---|---|---|
#18+
morgot (уникальной для каждого). Данных будет много. Как лучше сделать , чтобы поиск не был слишком медленный? morgot у меня MySQL (или Мария) Тип данных, правда, дает некоторые сомнения, но для начала сойдет и CHAR(32). Если покажете реальные значения, которые там предполагается хранить, то может еще чего присоветуем. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2022, 00:19 |
|
Спроектировать таблицу, если выборка по строкам
|
|||
---|---|---|---|
#18+
Чувствую щас ТС скажет, что уникальная строка 32 символа это ИНН+СНИЛС+Серия/номер паспорта для верности... ну или что это был абстрактный пример и на самом деле нужно вести учет не юзеров, а небесных тел соседних галактик... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2022, 00:59 |
|
Спроектировать таблицу, если выборка по строкам
|
|||
---|---|---|---|
#18+
Много - не больше миллиона, тысяч 100-900, не знаю. Dimitry Sibiryakov Для начала - в точности как написано в любом учебнике для начинающих: поле VARCHAR и индекс на него. индекс - так пойдёт? Код: sql 1. 2.
miksoft Сделайте это поле первичным ключом. Будет и скорость, и уникальность. Тип данных, правда, дает некоторые сомнения, но для начала сойдет и CHAR(32). Если покажете реальные значения, которые там предполагается хранить, то может еще чего присоветуем. Первичным? Думал, что в базах данных всегда желательно первичным делать INT , т.к. в нем auto increment, и вроде как база сама создает такое значение, если не указать явно? или путаю? задачу напишу ниже. Злой Бобр Задачу в студию . Мы поможем правильный алгоритм сделать, а не такого монстрика. С марией я не работал, так что делайте поправку. Задача. Есть веб сайт (форум,соц. сеть, не суть). Для каждого пользователя генерируется уникальный идентификатор на основе данных браузера и подобного. Он выходит размером 32 символа. Уменьшить или изменить его нельзя. Перевести на смс-активацию, привязку к айпи и т.д. тоже нельзя. Только вот уникальный айди, который генерится особым образом, практически не дает коллизий и сбоев. Допустим, на сайте сидят 100 тыс человек, регится 100001ый . Нужно проверить, не является ли он клоном кого-то из этих товарищей . Исходя из этого, нужно спроектировать таблицу. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2022, 18:08 |
|
Спроектировать таблицу, если выборка по строкам
|
|||
---|---|---|---|
#18+
morgotМного - не больше миллиона, тысяч 100-900, не знаю. 100 тысяч пользователей... Ещё один фейсбук создаёшь? morgotВ учебниках советуют CHAR, если данные фиксированной длины Если ты АБСОЛЮТНО уверен. Ну и для поля фиксированной длины твой default выглядит странно, ведь он короче этой длины. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2022, 18:23 |
|
Спроектировать таблицу, если выборка по строкам
|
|||
---|---|---|---|
#18+
morgot Задача. Есть веб сайт (форум,соц. сеть, не суть). Для каждого пользователя генерируется уникальный идентификатор на основе данных браузера и подобного. Он выходит размером 32 символа. Уменьшить или изменить его нельзя. Перевести на смс-активацию, привязку к айпи и т.д. тоже нельзя. Только вот уникальный айди, который генерится особым образом, практически не дает коллизий и сбоев. Допустим, на сайте сидят 100 тыс человек, регится 100001ый . Нужно проверить, не является ли он клоном кого-то из этих товарищей . Исходя из этого, нужно спроектировать таблицу. Я уже напуган. Неужели браузер в самом обычном HTTP передает что-то такое, что позволяет меня прямо уникально-уникально идентифицировать? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2022, 18:37 |
|
Спроектировать таблицу, если выборка по строкам
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov morgotМного - не больше миллиона, тысяч 100-900, не знаю. 100 тысяч пользователей... Ещё один фейсбук создаёшь? morgotВ учебниках советуют CHAR, если данные фиксированной длины Если ты АБСОЛЮТНО уверен. Ну и для поля фиксированной длины твой default выглядит странно, ведь он короче этой длины. 1. нет, это скажем так, тематическое сообщество. не суть, не буду тут рекламить. просто проблема в том, что если раньше были флеш куки, да и проверка по айпи помогала, то сейчас только такой вариант помогает от клонов. 2. длина ВСЕГДА будет 32 символа. Ну может со временем протокол поменяется, но вряд ли. 3. DEFAULT '' - это автоматом создалось, не знаю что туда писать, можно и NULL в принципе, т.к. это поле не может быть пустым (скрипт так или иначе отработает, а если нет - то это уже за рамками баз данных). fkfka2 Я уже напуган. Неужели браузер в самом обычном HTTP передает что-то такое, что позволяет меня прямо уникально-уникально идентифицировать? в http нет, но сам браузер - да. Изучите например это https://habr.com/ru/company/cloud4y/blog/548924/ есть что скрывать - юзайте тор браузер, при этом никогда не разворачивайте на полный экран, желательно через tails / whonix (опять же, это все за рамками баз данных). ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2022, 19:01 |
|
|
start [/forum/topic.php?fid=32&msg=40125357&tid=1539763]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
72ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
2ms |
others: | 276ms |
total: | 456ms |
0 / 0 |