|
|
|
Архитектура базы данных
|
|||
|---|---|---|---|
|
#18+
Мы разрабатываем структуру базы данных, в которой должны хранится следующие данные: 1. Постоянные данные, их порядка 30 000 элементов 2. Данные на каждый день по каждому из элементов. Иными словами, количество постоянных данных – постоянно, а количество дневных данных каждый день увеличивается (т.е. <количество постоянных элементов>*<количество дней>) Если реализовать данные на каждый день в виде одной таблицы, то через 365 дней там будет около 30 000 * 365 = 10 млн. записей. При это ширина записи – около 90 полей типа float/int. Какое здесь может понадобится железо? Очевидно, что с такой таблицей будет очень трудно работать с точки зрения потребляемых аппаратных и временных ресурсов. В системе может быть несколько пользователей (порядка 100 человек). Каждый пользователь в течении продолжительного промежутка времени работает с информацией только на две даты, и информация на остальные даты ему не нужна. Кроме того, эта информация практически не изменяется пользователями. Она заливается отдельной системой и предоставляется пользователям “как есть” ( As Is). Как было бы лучше организовать архитектуру базы данных. И прочие рекомендации? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2002, 19:17:05 |
|
||
|
Архитектура базы данных
|
|||
|---|---|---|---|
|
#18+
Насколько я понял в планируемой базе дневная запись будет иметь примерно такой вид. WorkDate,Element_1_ID,Param1,...,Param90 ... WorkDate,Element_3000_ID ,Param1,...,Param90 1. Про то, какое конкретно нужно железо - не силен. 2. 10 млн. записей при правильном железе - не критично. 3. Проверьте еще раз, действительно ли все параметры представляют из себя уникальные значения, возможно некоторые из них являются расчетными по другим параметрам. 4. Аналогично, все ли элементы уникальны и не являются комбинациями других элементов? 5. Для всех ли элементов всегда задействуются все 90 параметров? Если нет, то может быть имеет смысл сделать таблицу параметров? Структура базы будет примерно такой: Таблица Journal WorkDate datetime, ElementID int, ParamID int, ParamValue numeric (m,n) Таблица Elements ElementID int ElementName varchar Таблица Params ParamID int ParamName varchar Возможно, записей будет больше, но зато каждая запись очень короткая. Numeric (m,n) заменит и int и float. 5. Часто бывает так, что работа, в основном, идет только с записями на определенную временную глубину, в производстве это обычно не более трех лет, в тоговле - двух. В таких случаях можно иметь два журнала - оперативный и архивный. По истечении разумного срока, "старые" данные из оперативного журнала переводятся в архивный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2002, 20:44:48 |
|
||
|
Архитектура базы данных
|
|||
|---|---|---|---|
|
#18+
Во-первых, неизвестно, будет ли трудно работать или нет. Все очень сильно зависит от предназначения таблицы, насколько она транзакционная и т.д. А пока нет такой информации, совершенно невозможно толком ничего советовать. Кстати, выбора то нет, так или иначе прийдется заносить все данные в базу данных. А как расположить, в одну или много таблиц, это зависит от задачи и (не)раздельности данных. --Слон ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2002, 04:04:01 |
|
||
|
Архитектура базы данных
|
|||
|---|---|---|---|
|
#18+
1. Исследование предметной области (иногда занимает 6-12 месяцев). 2. Выделение справочной информации и создание справочников (т.е. const). 3. Выявление динамических данных, разбиение их на таблицы, создание связей со справочными таблицами. 4. Если информация идет из разных источников (например, отделов) и не пересекается - по разным таблицам. 5. Разделение доступа 6. Периодизация - сливание из БД в "хранилище" 7. Обоснование покупки/upgrade техники 8. Вопросы администрирования 9. . . ... Личный опыт - "сын ошибок" :-)) Удачи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2002, 17:24:42 |
|
||
|
Архитектура базы данных
|
|||
|---|---|---|---|
|
#18+
2Olga спасибо :) Мы знаем... Это как раз и есть проектирование бд :) 2Cat2 идея с такой таблицей Jornal интересна. Только мы пока не смогли придумать, как исходя из такой структуры попытаться вычислить средневзвешенные значения для многих ParameterID. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2002, 19:13:30 |
|
||
|
Архитектура базы данных
|
|||
|---|---|---|---|
|
#18+
А какие примерно будут данные? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2002, 00:18:47 |
|
||
|
Архитектура базы данных
|
|||
|---|---|---|---|
|
#18+
Хммм... не уверен я, что решение типа журнала вообще что-то даст. Только представьте, какие будут планы запросов.... Это ж убьет напрочь сервер. Особенно при поисках записей по многим полям. В любом случае журнал такого рода приемлем только в случае, когда надо рожать проект, а неизвестно кол-во полей и их имена. А коли они все известны, то даже просто здоровая таблица с 90 полями и то - лучше. ИМХО Слон ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2002, 01:02:46 |
|
||
|
Архитектура базы данных
|
|||
|---|---|---|---|
|
#18+
в случае со труктурой, предложенной Cat2 получаются некоторые проблемы: 1. Требуется выборка (1 строка) примерно следующего вида Код: plaintext 1. 2. 3. в случае широкой таблицы - такое прокатывает на ура! в случае узкой таблицы единственное, что я пока смог придумать см.ниже Код: plaintext 1. 2. 3. 4. 5. 6. в этом случае я думаю при объеме таблицы в несколько миллионов записей у оптимизатора снесет крышу, а следовательно и скорость работы будет невысока. Есть ли у кого-нибудь мысли, как можно воспользоваться предложенным Cat2 вариантом? Возможно есть другие способы решения, которые кто либо применял. Буду рад услышать какие либо мнения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2002, 18:50:10 |
|
||
|
Архитектура базы данных
|
|||
|---|---|---|---|
|
#18+
Решение через самосоединение единственное, состоящеее из одного запроса. Но можно сначала развернуть вектор с нужными полями в плоскую таблицу, а потом по ней делать агрегаты. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2002, 20:01:21 |
|
||
|
|

start [/forum/topic.php?fid=46&gotonew=1&tid=1822263]: |
0ms |
get settings: |
9ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
126ms |
get topic data: |
8ms |
get first new msg: |
5ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 229ms |
| total: | 437ms |

| 0 / 0 |
