Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Правильная ли структура БД?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
event
Отправлено: 21 Мая, 2017 - 20:44:22
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 542
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




Добрый вечер.

Есть задача создать простой сайт с очень большим количеством статей - около 2 млн. статей. Сайт самый простой без админки работающей в связке с БД. Встал вопрос правильной организации БД. Основная задача - это быстрая работа выгрузки данных из БД.

Сейчас у меня сложилась следующая структура базы данных, в итоге будет 3 таблицы в БД.

Первая таблица - categories, соетвестнно категорий статей.

Структрука таблицы categories:

CODE (htmlphp):
скопировать код в буфер обмена
  1. id - соотвественно id категории
  2. name - название категории


Дальше таблица posts - будет держать в себе в следующее ячейки:

CODE (htmlphp):
скопировать код в буфер обмена
  1. id - id записи
  2. name - название статьи
  3. catid - id категории (из таблицы categories)
  4. min_descr - краткое описание статьи
  5. views - количество просмотров статьи
  6. meta_keywords - ключевые слова для meta_keywords
  7. meta_descr - краткое описание для meta_description



И последняя таблица texts - будет содержать в себе сами текстов статьи, следующая структура:

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. id - id записи
  3. postid - id статьи (связка с таблицей postid), будет стоять индекс на это поле.
  4. text - сам текст статьи, поле будет - LONGTEXT
  5.  



Таблицы все планирую по типу InnoDB

Все. Вот теперь вопрос будет ли такая структура работать быстро с 2 млн. записями? Какие будут предложения по улучшению? Главное это быстрая выборка из БД при выводе заголовкой, записей, текстов и т.д. Поделитесь свои мнением пожалуйста. Спасибо.
 
 Top
OrmaJever Модератор
Отправлено: 21 Мая, 2017 - 21:02:10
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




а зачем выносить тексты в отдельную таблицу?
event пишет:
Вот теперь вопрос будет ли такая структура работать быстро с 2 млн. записями?

ну ведь это всё зависит не только от структуры, но и от запроса, если выбирать 10 записей по LIKE в тексте, то это одно, а если выбирать 10 записей по id (PK) то это совсем другое. Так же это зависит от индексов, и настроек самой бд и можности сервера. И вообще, почему mysql ? Улыбка я после postgres мускуль больше не перевариваю


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB