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]   

> Описание: нужен совет, как лучше организовать базу данных..
Koc
Отправлено: 13 Сентября, 2015 - 00:43:48
Post Id



Новичок


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


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




Доброго времени,

Столкнулся с такой задачей, нужно сделать большую базу данных для маркетологов.

Задача следующая:
В БД будут добавляться магазины, к каждому магазину будет добавляться список товаров (до 1000 товаров). Далее 1 раз в неделю для каждого товара будет загружаться цифра (кол-во продаж за эту неделю). И это все нужно хранить в БД.

Потом в админке, показывать статистику продаж, по неделям/месяца. То есть в момент загрузки кол-ва продаж для товара, нужно будет еще и дату привязывать, чтобы потом по неделям/месяцам можно было делать выборку из БД.

ВОПРОС: как правильно организовать структуру БД и в каком формате хранить данные, при условии что она каждую неделю будет увеличиваться.

Например:
добавили 10 магазинов, к каждому магазину добавили по 1000 товара, это 10.000 товара. Каждую неделю для 10.000 товара будут загружать отчет, кол-во продаж, то есть каждую неделю БД будет увеличиваться на 10.000 записей, и через 3 месяца в БД будет 120.000 записей. И так далее каждый месяц она будет расти.
 
 Top
Мелкий Супермодератор
Отправлено: 13 Сентября, 2015 - 10:36:44
Post Id



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


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




Koc пишет:
И так далее каждый месяц она будет расти.

Раз в неделю (~52 раза в год) плюсовать 1000 позиций с 10 магазинов. Через 10 лет работы 5 лямов записей.
Это копейки даже для тупого mysql. Даже в плоской таблицей. Даже сейчас, а не через 10 лет.
Добавить партицирование, по годам или кварталам. Плюс предварительно рассчитанные данные агрегирования, для быстрой выдачи наиболее востребованных данных в админке.

А уж если возьмёте полновесный postresql - то хоть каждый день пишите по 5 лямов записей.
Что там в этой табличке надо? Идентификатор магазина - smallint наверняка хватит. Ну ладно, возьмём int. Товар - int'а более чем достаточно. Количество проданного за неделю - int наверняка тоже хватит. Плюс date 4 байта. Итого 5 лямов записей в сыром виде займут 76,3мб. В темпе записи даже ежедневно на протяжении 10 лет - меньше 300гб сырых данных. Ничего выдающегося.

Сгенерируйте себе на локальной машине базу с данными размером хотя бы с 50 лямов записей, да поиграйтесь. Это весело и за пару дней быстро изменяет отношение к вопросу "ахах, через 3 месяца будет уже 120000 записей, что делать, что делать?"


-----
PostgreSQL DBA
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB