Задавайте вопросы, мы ответим
Вы не зашли.
Всем привет!
Есть вопрос по проектированию БД.
На сайте будет устроен документооборот, сейчас это файлы word, excel, нужно на сайте сделать форму для заполнения этих документов.
проблема в том что по данным в документе нужно будет выводить статистику, в одном excel'вском файле более 700 значений.
структура файла примерно такая:
№ п/п | наименование | значение
1 | шцнукшцнук | 500
1.1 | jghkjgkgk | 800
1.2 | kkdkldl | 700
1.2.1 | kshjkcshc | 50
2.1 | jsdhjdfv | 900
подскажите как лучше хранить такие документы в БД, чтобы можно было легко выводить статистику по любому параметру в файле.<jk
Неактивен
При загрузке файла можно каким-то способом посчитать статистику и положить ее в таблицу в базе, в которой хранится имя файла. Так как число параметров заранее неизвестно, можно положить их в массив, который сериализовать в вставить в одно текстовое поле. Например, в php это достигается функцией serialize http://php.net/manual/ru/function.serialize.php
Неактивен
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
Какой вариант по производительности будет выше?
Неактивен
Производительность будет зависеть от того, какие операции делаете.
Например, нужны все параметры для 10 записей. В этом случае первый вариант лучше.
Другой пример: нужно выбрать все записи с заданным значением заданного параметра (или отсортировать по этому параметру). Тогда второй вариант намного быстрее.
У вас небольшие объемы - в худшем случае 7 миллионов строк в таблице, поэтому проще начать со второго варианта, как отвечающего нормальной форме БД, а если не будет справляться - продублировать информацию в форме первого варианта для ускорения определенных операций.
Неактивен
Извиняюсь за вопрос. Кластерирование здесь не выход?
Неактивен
Шардинг должен быть рассмотрен после того как спроектирована оптимальная по производительности система на одной машине.
Неактивен