Форум дизайна хранилища данных как место встречи

0

Я закончил дизайн сайта для встреч, и теперь я должен создать базу данных. Но я не уверен, какой метод использовать. Я использую Apache, PHP и MySQL. У меня есть пользователи, у каждого пользователя есть входной и выходной почтовый ящик, и у каждого пользователя есть список друзей. Это основной сценарий. И здесь у меня есть три вопроса.

  • В поле box и out я должен создать новую таблицу для каждого человека? Или будет 1 большой в коробке и вне таблицы коробки и определить для каждого почтового отправителя и получателя быть достаточно? Если для каждого пользователя будет обнаружено 1 миллион сообщений и показ его почтовых ящиков приведет к замедлению?

  • Для создания списка друзей также создается одна таблица, в которой хранятся все оба пользовательских отношения как данные одной строки, кто является другом, с кем? также поиск таблицы для каждого пользователя друзей приведет к замедлению?

  • И я использую Mysql, но говорит, что Oracle больше всего полна сил. По этой причине я должен выбрать?

Может быть, вы можете подумать, сколько человек должно зарегистрироваться на моем сайте и заставить базу данных, но кто знает))

  • 0
    Я предполагаю, что вы ищете дизайн базы данных для вашего приложения, а не классическое хранилище данных. Поэтому я изменил теги, чтобы привлечь людей, которые следят за этими предметами.
Теги:
database-design

2 ответа

1

Я возьму пару ваших вопросов:

В поле box и out я должен создать для каждого человека новую таблицу? или 1 большой в коробке и в таблице ящиков и идентификация для каждой почты, которая является отправителем и получателем, будет достаточно?

Используйте одну таблицу. Это имеет много преимуществ, например, возможность легко запрашивать все сообщения пользователей в одном запросе. Например, для поиска всех пользователей, отправивших более x сообщений, вы можете использовать GROUP BY(userid) и COUNT для каждой группы. Если у вас есть все данные в одной таблице, это просто, но если у вас есть таблица для каждого пользователя, вам придется генерировать SQL для этого запроса динамически.

Если таблица становится слишком большой, вы можете partition ее, например, вы можете разделить на userid или год публикации или что еще имеет смысл для вашего распространения данных.

Если будет отправлено 1 миллион сообщений для каждого пользователя, и его почтовые ящики будут замедляться?

Это зависит. Если вы индексируете таблицу и выполняете поиск с помощью индексов, тогда все будет хорошо. Если вы напишете LIKE '%foo%', тогда он будет медленным. Убедитесь, что все ваши поисковые запросы используют индексы.

Я оставлю другие вопросы, чтобы другие люди ответили.

  • 0
    Я не ожидаю 1 миллион, только если будет больше или меньше, как я могу справиться с этим правильно
0

Я думаю, вам нужно сначала идентифицировать всю необходимую информацию в базе данных (имена, адреса электронной почты, почтовые сообщения...) и применить правила нормализации, чтобы идентифицировать ваши сущности и атрибуты.

Инструменты моделирования данных, такие как Oracle SQL Developer Data Modeler, могут способствовать прогрессу в реализации.

Не бойтесь больших объемов данных. Базы данных очень хорошо справляются с таблицами миллионов строк (и на порядок выше этого).

Oracle vs MySQL зависит от большого количества денег и реализации. Вы найдете много дешевого mySQL-хостинга. Oracle будет сложнее найти и дороже.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню