powered by simpleCommunicator - 2.0.18     © 2024 Programmizd 02
Map
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Спроектировать таблицу, если выборка по строкам
25 сообщений из 35, страница 1 из 2
Спроектировать таблицу, если выборка по строкам
    #40125190
morgot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Будет таблица, в которой будут заноситься данные пользователей. Поиск пользователя будет идти не по логину , а по 32 символьной строке (уникальной для каждого). Данных будет много. Как лучше сделать , чтобы поиск не был слишком медленный? Критичен именно поиск, т.к. выборка будет идти очень часто, добавление реже.
Тип думаю задать CHAR(32), а дальше что? Нужен ли идентификатор UNIQUE или лучше со скрипта проверять, есть ли такая запись в базе или нет?
...
Рейтинг: 0 / 0
Спроектировать таблицу, если выборка по строкам
    #40125192
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
morgotКак лучше сделать , чтобы поиск не был слишком медленный?

Делать уже ничего не надо. В процессе обеспечения "уникальности для каждого"
созданный unique constraint создаст индекс автоматически.

PS: С "добавлением реже" тебе до "данных много" ещё лет сто пахать.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Спроектировать таблицу, если выборка по строкам
    #40125198
PizzaPizza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UNIQUE это Constraint а не идентификатор. Constraint используется to enforce data integrity на уровне таблиц.
...
Рейтинг: 0 / 0
Спроектировать таблицу, если выборка по строкам
    #40125213
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
morgot
Будет таблица, в которой будут заноситься данные пользователей. Поиск пользователя будет идти не по логину , а по 32 символьной строке (уникальной для каждого). Данных будет много. Как лучше сделать , чтобы поиск не был слишком медленный? Критичен именно поиск, т.к. выборка будет идти очень часто, добавление реже.
Тип думаю задать CHAR(32), а дальше что? Нужен ли идентификатор UNIQUE или лучше со скрипта проверять, есть ли такая запись в базе или нет?

У вас логин и так является строкой по сути. Или вы этого не видите, или занимаетесь ерундой. Меняйте длину строки на нужную и не изобретайте велосипед. И да, уникальность должна проверяться автоматом (ставим галочку), а не кривописными скриптами.
...
Рейтинг: 0 / 0
Спроектировать таблицу, если выборка по строкам
    #40125215
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если вы пытаетесь закидывать туда данные сторонней системой то добавьте уникальное поле вашей длины по которой и находите пользователя. Это к тому что за логин из 32 знаков пользователи вас на кол посадят.
Эх, праздники тормозят мой мозг.
...
Рейтинг: 0 / 0
Спроектировать таблицу, если выборка по строкам
    #40125219
morgot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не могу грамотно объяснить. Это не логин, это уникальный ID , который генерируется скриптом на основе некоторых данных. Попросту говоря - защита от клонов и ботов, подробнее см. fingerprint.js . Не суть. Нужно искать именно по этим "отпечаткам", проверять нет ли в базе повторов (клонов), если есть - выбрать кто это (что за юзер, какие там были данные).
...
Рейтинг: 0 / 0
Спроектировать таблицу, если выборка по строкам
    #40125228
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
morgot,

Ну тогда "добавьте уникальное поле вашей длины по которой и находите пользователя". Если БД позволяет делать поле уникальным, то ставим галочку на уникальность. Иначе при записи строки вставляем сою проверку на уникальность.
...
Рейтинг: 0 / 0
Спроектировать таблицу, если выборка по строкам
    #40125232
morgot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Злой Бобр, у меня MySQL (или Мария), вроде разницы нет.
По уникальности понял, а как по быстродействию - будет долго искать по строкам, может сортировка какая-то нужна или еще как оптимизировать? В плане, я понимаю что базе проще сделать выборку вида ID == 50, особенно если по числах отсортировано, чем перебрать все строки и сравнивать каждую.
...
Рейтинг: 0 / 0
Спроектировать таблицу, если выборка по строкам
    #40125234
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
morgotВ плане, я понимаю что базе проще

Нет, ты ничего не понимаешь. Поэтому не думай. Тормоза в твоей системе будут не
от базы.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Спроектировать таблицу, если выборка по строкам
    #40125241
morgot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov, да, я не понимаю, но подскажите как грамотно спроектировать-то. Чтобы потом не переделывать. Вот есть идентификатор 32 символа, поиск по нему. Как лучше сделать таблицу? База - MySQL /MariaDb
...
Рейтинг: 0 / 0
Спроектировать таблицу, если выборка по строкам
    #40125248
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
morgot
Вот есть идентификатор 32 символа

Похоже в этом и есть проблема, если бы знать предысторию появления этого идентификатора, то наверняка нашелся бы обходной путь по проще и скорее всего не один...
morgot
Данных будет много.

не думаю, что их больше чем товаров всех видов во всех странах, которые вписываются в EAN-13...
Всего 13 ЦИФР описывают весь товар в мире, причем последняя сумма - это контрольная сумма предыдущих 12-ти...
Первые две - Код страны, ну и т.д.

Это я так в качестве намёка... 13 хоть и только цифр- тоже приличное поле для поиска, но таки не 32...
Подойдите к идентификатору с другой стороны и если получится его сократить или убрать, то тому кто его придумал - просто оторвите ноги...
...
Рейтинг: 0 / 0
Спроектировать таблицу, если выборка по строкам
    #40125249
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
morgotподскажите как грамотно спроектировать-то. Чтобы потом не переделывать. Вот есть
идентификатор 32 символа, поиск по нему. Как лучше сделать таблицу?

Для начала - в точности как написано в любом учебнике для начинающих: поле
VARCHAR и индекс на него.

О том "чтобы потом не переделывать" лучше забудьте. В любом случае переделать
придётся не раз и не два. Это неизбежно в ходе взросления.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Спроектировать таблицу, если выборка по строкам
    #40125251
morgot
Dimitry Sibiryakov, да, я не понимаю, но подскажите как грамотно спроектировать-то. Чтобы потом не переделывать. Вот есть идентификатор 32 символа, поиск по нему. Как лучше сделать таблицу? База - MySQL /MariaDb

32 - это значит md5-отпечаток, скорей всего (а если нет, то что мешает?)
значит тип поля - под hex (MySQL научился hex? А MariaDB? Или там до сих пор всё в чарах...)
а чтобы быстрей искало и меньше занимало, можно отдельное поле для индекса, размером 10, например

varchar нафиг не нужен на поле, где всегда 32 символа.
...
Рейтинг: 0 / 0
Спроектировать таблицу, если выборка по строкам
    #40125260
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
morgot
Злой Бобр, у меня MySQL (или Мария), вроде разницы нет.
По уникальности понял, а как по быстродействию - будет долго искать по строкам, может сортировка какая-то нужна или еще как оптимизировать? В плане, я понимаю что базе проще сделать выборку вида ID == 50, особенно если по числах отсортировано, чем перебрать все строки и сравнивать каждую.

Как выше уже писали - зачем вам 32 знака для поиска? Потому как у вас явно тараканы в голове человека который придумал такую хрень. Я могу понять алгоритм найти пользователя, сравнить его 32 значное поле (ставить индекс не нужно) на условие. Но находить пользователя по 32 значному строковому полю (поле индексируемое) - в любой БД это путь в никуда (в плане быстродействия).
Так что начните с постановки задачи. Например я считаю что поля Int 8 знаков для поиска именно по полю - вполне за глаза. Индекс по нему летает.
Задачу в студию . Мы поможем правильный алгоритм сделать, а не такого монстрика.
С марией я не работал, так что делайте поправку.
...
Рейтинг: 0 / 0
Спроектировать таблицу, если выборка по строкам
    #40125261
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Злой БобрНо находить пользователя по 32 значному строковому полю (поле индексируемое) - в
любой БД это путь в никуда (в плане быстродействия).

То есть Вы вот так заявляете, что в любой СУБД поиск по ФИО, например, будет
тормозить чисто из-за его длины при любом типе индекса? Или это только у MS SQL всё так запущенно?..
...
Рейтинг: 0 / 0
Спроектировать таблицу, если выборка по строкам
    #40125263
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

У Бобра ключевое

Злой Бобр
Задачу в студию .

- объемов нет (данных будет много - это ни о чем, одному и трех баб мало, другому и кобыла невеста...)
- ну и ключ в 32 символа - это перл, заслуживающий особого внимания и рассмотрения...
...
Рейтинг: 0 / 0
Спроектировать таблицу, если выборка по строкам
    #40125272
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vmagну и ключ в 32 символа - это перл, заслуживающий особого внимания и рассмотрения...

Это ты ещё не видел таблиц с ключами из трёх полей, одно из которых double
precision...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Спроектировать таблицу, если выборка по строкам
    #40125277
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
Это ты ещё не видел таблиц с ключами из трёх полей, одно из которых double
precision...

после этих слов я наверно должен был испугаться и выронить на пол глаза?
с дуру можно и инструмент сломать...
...
Рейтинг: 0 / 0
Спроектировать таблицу, если выборка по строкам
    #40125278
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
Это ты ещё не видел таблиц с ключами из трёх полей, одно из которых double precision...

Ха! Из трёх. Я до сих пор вспоминаю базу "Снежной королевы", там были составные естественные ключи вплоть до 12 (!) полей.

morgot
Будет таблица, в которой будут заноситься данные пользователей. Поиск пользователя будет идти не по логину , а по 32 символьной строке (уникальной для каждого). Данных будет много.

"Много" - это сколько?

Если пользователей будет меньше ста миллионов - достаточно позаботиться о том, чтобы не сделать совсем уж явной фигни в программном коде, который работает с этими данными. Тогда всё будет в порядке.

morgot
Злой Бобр, у меня MySQL (или Мария), вроде разницы нет.

Ну тогда может не ста миллионов а миллиона. Не работал с ними, не знаю.
...
Рейтинг: 0 / 0
Спроектировать таблицу, если выборка по строкам
    #40125280
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
morgot
(уникальной для каждого). Данных будет много. Как лучше сделать , чтобы поиск не был слишком медленный?
morgot
у меня MySQL (или Мария)
Сделайте это поле первичным ключом. Будет и скорость, и уникальность.
Тип данных, правда, дает некоторые сомнения, но для начала сойдет и CHAR(32).
Если покажете реальные значения, которые там предполагается хранить, то может еще чего присоветуем.
...
Рейтинг: 0 / 0
Спроектировать таблицу, если выборка по строкам
    #40125284
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чувствую щас ТС скажет, что уникальная строка 32 символа это ИНН+СНИЛС+Серия/номер паспорта для верности...
ну или что это был абстрактный пример и на самом деле нужно вести учет не юзеров, а небесных тел соседних галактик...
...
Рейтинг: 0 / 0
Спроектировать таблицу, если выборка по строкам
    #40125348
morgot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Много - не больше миллиона, тысяч 100-900, не знаю.

Dimitry Sibiryakov

Для начала - в точности как написано в любом учебнике для начинающих: поле
VARCHAR и индекс на него.

В учебниках советуют CHAR, если данные фиксированной длины; т.к. VARCHAR вроде на 1 байт больше занимает.
индекс - так пойдёт?
Код: sql
1.
2.
`guid` CHAR(32) NOT NULL DEFAULT '',
	UNIQUE INDEX `guid` (`guid`)



miksoft
Сделайте это поле первичным ключом. Будет и скорость, и уникальность.
Тип данных, правда, дает некоторые сомнения, но для начала сойдет и CHAR(32).
Если покажете реальные значения, которые там предполагается хранить, то может еще чего присоветуем.

Первичным? Думал, что в базах данных всегда желательно первичным делать INT , т.к. в нем auto increment, и вроде как база сама создает такое значение, если не указать явно? или путаю?
задачу напишу ниже.

Злой Бобр

Задачу в студию . Мы поможем правильный алгоритм сделать, а не такого монстрика.
С марией я не работал, так что делайте поправку.

Задача. Есть веб сайт (форум,соц. сеть, не суть). Для каждого пользователя генерируется уникальный идентификатор на основе данных браузера и подобного. Он выходит размером 32 символа. Уменьшить или изменить его нельзя. Перевести на смс-активацию, привязку к айпи и т.д. тоже нельзя. Только вот уникальный айди, который генерится особым образом, практически не дает коллизий и сбоев. Допустим, на сайте сидят 100 тыс человек, регится 100001ый . Нужно проверить, не является ли он клоном кого-то из этих товарищей . Исходя из этого, нужно спроектировать таблицу.
...
Рейтинг: 0 / 0
Спроектировать таблицу, если выборка по строкам
    #40125353
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
morgotМного - не больше миллиона, тысяч 100-900, не знаю.

100 тысяч пользователей... Ещё один фейсбук создаёшь?

morgotВ учебниках советуют CHAR, если данные фиксированной длины

Если ты АБСОЛЮТНО уверен. Ну и для поля фиксированной длины твой default
выглядит странно, ведь он короче этой длины.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Спроектировать таблицу, если выборка по строкам
    #40125357
fkfka2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
morgot
Задача. Есть веб сайт (форум,соц. сеть, не суть). Для каждого пользователя генерируется уникальный идентификатор на основе данных браузера и подобного. Он выходит размером 32 символа. Уменьшить или изменить его нельзя. Перевести на смс-активацию, привязку к айпи и т.д. тоже нельзя. Только вот уникальный айди, который генерится особым образом, практически не дает коллизий и сбоев. Допустим, на сайте сидят 100 тыс человек, регится 100001ый . Нужно проверить, не является ли он клоном кого-то из этих товарищей . Исходя из этого, нужно спроектировать таблицу.

Я уже напуган. Неужели браузер в самом обычном HTTP передает что-то такое, что позволяет меня прямо уникально-уникально идентифицировать?
...
Рейтинг: 0 / 0
Спроектировать таблицу, если выборка по строкам
    #40125361
morgot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 (опять же, это все за рамками баз данных).
...
Рейтинг: 0 / 0
25 сообщений из 35, страница 1 из 2
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Спроектировать таблицу, если выборка по строкам
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (1): Анонимы (1)
Читали форум (1): Анонимы (1)
Пользователи онлайн (8): Анонимы (5), Yandex Bot, Google Bot 5 мин., Bing Bot 6 мин.
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]