Ответы пользователя по тегу Базы данных
  • Хорошая ли идея использовать в качестве ID (первичного ключа) мд5 хеш?

    kapitansky
    @kapitansky
    Cогласен с учителем Norraxx (17 мая в 23:58 «Мой учитель по Java мне говорил: «Каждый раз, когда вы используете hash как id, вы убиваете котёнка.»») и VitaZheltyakov (md5-хэш в качестве id следует использовать только, если он заменяет составной ключ (несколько ключевых полей). В остальных случаях мы используем int (bigint) с unsigned и auto_increment). Причём только в том случае если суммарная сложность поиска по нескольким ключевым полям будет выше, чем у хеша…

    Чем меньше ключ — тем быстрее происходит поиск по нему, поэтому всегда надо стремиться минимизировать его размер.

    Поиск по числовому ключу зачастую много быстрее (бывает, что и до 4х раз быстрее, возможно и ещё быстрее) нежели поиск по числу той же длинны… и это верно не только для реляционных СУБД, но и для подавляющего большинства языков программирования (вполне вероятно, что потребуется искать в множестве, полученном ранее из БД).

    Исходя из вашей задачи, для начала, в качестве типа PK я бы выбрал unsigned mediumint (16,777,215 — 1 записей)- его всегда можно будет расширить до int, а затем и bigint (если, конечно, это потребуется).
    Ответ написан
    Комментировать
  • Выбор СУБД для проекта?

    kapitansky
    @kapitansky
    Если MySQL, то, как мне кажется, движок MyISAM — не самый лучший выбор (из-за потабличной блокировки) — правильным решением будет комбинировать InnoDB и MyISAM (в тех случаях когда будет требоваться выводить большое кол-во инфы, а также пользовать втроенный механизм полнотекстового поиска (тк в InnoDB его нет и придётся «изобретать» свои/использовать чужие механизмы)). Кроме того с версии 5.5 в MySQL реализованна возможность создания noSQL-хранилищ (если вас не устраивает memcache (и прочие) которые легко интегрируются с php).

    Также могу порекомендовать обратить своё внимание на СУБД Firebird.

    По поводу Ms SQL — очень мощная база, но разумеется с ней удобнее работать с использованием C# и продуктов MS (например Visual Studio) — это позволит существенно сократить время на разработку.

    Как вы уже, наверное, знаете php не самое лучшее средство для реализации систем с высокой нагрузкой (здесь придётся повоевать), ну и придётся принимать решение по поводу модели программирования — не думаю, что ОО модель будет лучшим выбором. Возможно стоит обратить своё внимание на Java или C#…

    Ну и разумеется структура БД крайне важна — в случае неправильного выбора — не спасёт ни одна СУБД. Но для того, чтобы придти к оптимальной для данного решения структуре — надо понимать что именно вы собираетесь реализовывать, но я, если я правильно понимаю, то у вас нет этого понимания. Если позволите — мой совет начать именно с этого, а не с выбора СУБД.
    Ответ написан
    1 комментарий