SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 10.10.2013 20:20:42

borschev
Участник
Зарегистрирован: 10.10.2013
Сообщений: 2

Большой обьем статистических данных

Всем привет!
Есть вопрос по проектированию БД.

На сайте будет устроен документооборот, сейчас это файлы word, excel, нужно на сайте сделать форму для заполнения этих документов.

проблема в том что по данным в документе нужно будет выводить статистику, в одном excel'вском файле более 700 значений.
структура файла примерно такая:

№ п/п | наименование | значение
1 | шцнукшцнук | 500
1.1 | jghkjgkgk | 800
1.2 | kkdkldl | 700
1.2.1 | kshjkcshc | 50
2.1 | jsdhjdfv | 900


подскажите как лучше хранить такие документы в БД, чтобы можно было легко выводить статистику по любому параметру в файле.<jk

Неактивен

 

#2 11.10.2013 04:15:41

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Большой обьем статистических данных

При загрузке файла можно каким-то способом посчитать статистику и положить ее в таблицу в базе, в которой хранится имя файла. Так как число параметров заранее неизвестно, можно положить их в массив, который сериализовать в вставить в одно текстовое поле. Например, в php это достигается функцией serialize http://php.net/manual/ru/function.serialize.php

Неактивен

 

#3 11.10.2013 14:31:06

borschev
Участник
Зарегистрирован: 10.10.2013
Сообщений: 2

Re: Большой обьем статистических данных

1) значения храним в базе в виде массива serialize
таблица документ:
id(id документа), values(поле в котором будет сериализованный массив);

array(
   'parameter_id_1'=>'value1',
   'parameter_id_2'=>'value2'
   'parameter_id_3'=>'value3'
   ....
)

итого в массиве будет около 700 записей


2) отдельная таблица где данные будут храниться в виде:

id, id_doc(id документа), parameter_id(id параметра), value(значение);

итого в таблице будет около 700 записей на один документ, документов ожидается более 10000

Какой вариант по производительности будет выше?

Неактивен

 

#4 11.10.2013 15:29:17

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Большой обьем статистических данных

Производительность будет зависеть от того, какие операции делаете.

Например, нужны все параметры для 10 записей. В этом случае первый вариант лучше.
Другой пример: нужно выбрать все записи с заданным значением заданного параметра (или отсортировать по этому параметру). Тогда второй вариант намного быстрее.

У вас небольшие объемы - в худшем случае 7 миллионов строк в таблице, поэтому проще начать со второго варианта, как отвечающего нормальной форме БД, а если не будет справляться - продублировать информацию в форме первого варианта для ускорения определенных операций.

Неактивен

 

#5 07.02.2014 09:25:59

MaximCarrera
Участник
Зарегистрирован: 08.08.2013
Сообщений: 12

Re: Большой обьем статистических данных

Извиняюсь за вопрос. Кластерирование здесь не выход?

Неактивен

 

#6 08.02.2014 01:25:33

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Большой обьем статистических данных

Шардинг должен быть рассмотрен после того как спроектирована оптимальная по производительности система на одной машине.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson