Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Проектирование БД Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Структура данных  [new]
vladka63
Member

Откуда:
Сообщений: 1682
Добрый день!

Уважаемые практики, дайте пожалуйста совет.

Предположим есть много пользователей (пусть 500 тысяч или 1 млн).
Данные пользователей (пусть 80 колонок с данными) могут храниться:
1. все в одной таблице, т.е 500 - 1 млн записей в таблице по 80 колонок;
2. по заполнению для каждого пользователя динамически (программно) создается своя, отдельная таблица, т.е 1 млн. отдельных, для каждого пользователя, с одинаковой структурой, таблиц.


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

Спасибо :-)
20 мар 19, 08:01    [21837997]     Ответить | Цитировать Сообщить модератору
 Re: Структура данных  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 5183
vladka63, таки надо понять, производительность чего вы измеряете? (вставка, чтение, обновление, удаление). Видимо с этим же показателем и связано наиболее частые операции.
Насчет второго варианта мне он кажется подозрительным....
Например, обновление свойств у нескольких пользователей как будет выглядеть?
А выборка свойств для нескольких пользователей?

Это вопросы к "производительности" - часть операций на плоской многоколоночной таблице будут быстрее(чтение, например).
Часть операций могут быть медленее из-за блокировок, к примеру. Но если выбор из этих двух вариантов - я бы предпочел многоколоночное решение.

Чтобы местная публика продолжила дискуссию, думается, надо накидать операции, производительность которых вы желаете "измерять".

p.s. При таком небольшом кол-ве данных их всегда можно сгененрировать и измерить прямо не отходя от кассы.
20 мар 19, 08:43    [21838024]     Ответить | Цитировать Сообщить модератору
 Re: Структура данных  [new]
L_argo
Member

Откуда:
Сообщений: 892
п. 2 какой-то бред, ИМХО.

Если из 80 колонок в большинстве случаев заполнены всего 5-6 параметров, то можно рассмотреть EAV. Это еще пара таблиц(справочник и данные), где каждый параметр пользователя хранится в отдельной записи. Также можно хранить исторические данные, т.е. зависящие от времени.
20 мар 19, 09:49    [21838072]     Ответить | Цитировать Сообщить модератору
 Re: Структура данных  [new]
982183
Member

Откуда: VL
Сообщений: 3104
А какая СУБД потянет такое количество таблиц в одной базе?
20 мар 19, 09:51    [21838074]     Ответить | Цитировать Сообщить модератору
 Re: Структура данных  [new]
L_argo
Member

Откуда:
Сообщений: 892
982183
А какая СУБД потянет такое количество таблиц в одной базе?
Никакая. Это бред ТСа :)
20 мар 19, 09:53    [21838075]     Ответить | Цитировать Сообщить модератору
 Re: Структура данных  [new]
s_ustinov
Member

Откуда: Munchen, DE
Сообщений: 2108
vladka63
Добрый день!

Уважаемые практики, дайте пожалуйста совет.

Предположим есть много пользователей (пусть 500 тысяч или 1 млн).
Данные пользователей (пусть 80 колонок с данными) могут храниться:
1. все в одной таблице, т.е 500 - 1 млн записей в таблице по 80 колонок;
2. по заполнению для каждого пользователя динамически (программно) создается своя, отдельная таблица, т.е 1 млн. отдельных, для каждого пользователя, с одинаковой структурой, таблиц.


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

Спасибо :-)

А вот, например, задача - отобрать всех пользователей, которые родились раньше 1990 года. Как вы будете решать эту задачу во втором случае и какая будет производительность?
20 мар 19, 09:58    [21838081]     Ответить | Цитировать Сообщить модератору
 Re: Структура данных  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 26636
vladka63
Какой вариант предпочтительней

Нанять специалиста.
20 мар 19, 10:18    [21838110]     Ответить | Цитировать Сообщить модератору
 Re: Структура данных  [new]
KreatorXXI
Member

Откуда: Москва
Сообщений: 783
vladka63,

Ни первый, ни второй вариант. Нужно рассмотреть существование нескольких таблиц - справочники, однотипные данные. Наверняка можно всё выложить в 80 полей, а-ля Эксель. И это будет редкозаполненная матрица. Это нехорошо. Вернее даже не так. Для чего эта таблица? Нужно будет потом делать анализ, выборки из этой матрицы. И скорее всего, выборки будут по столбцам. Как вариант - база с "колоночным" хранением (или как там по-научному называется).
20 мар 19, 10:21    [21838115]     Ответить | Цитировать Сообщить модератору
 Re: Структура данных  [new]
МодальноеОкно
Member

Откуда:
Сообщений: 2196
vladka63
Какой вариант предпочтительней с точки зрения производительности и скорости обработки данных?


покурить про нормализацию данных. выделить отдельные сущности
20 мар 19, 17:34    [21838777]     Ответить | Цитировать Сообщить модератору
 Re: Структура данных  [new]
МодальноеОкно
Member

Откуда:
Сообщений: 2196
vladka63
Какой вариант предпочтительней


пойти в кондукторы
20 мар 19, 17:35    [21838778]     Ответить | Цитировать Сообщить модератору
 Re: Структура данных  [new]
Изопропил
Member

Откуда:
Сообщений: 31190
982183
А какая СУБД потянет такое количество таблиц в одной базе?
20 мар 19, 22:34    [21838993]     Ответить | Цитировать Сообщить модератору
 Re: Структура данных  [new]
Изопропил
Member

Откуда:
Сообщений: 31190
982183
А какая СУБД потянет такое количество таблиц в одной базе?

Oracle
20 мар 19, 22:34    [21838994]     Ответить | Цитировать Сообщить модератору
 Re: Структура данных  [new]
982183
Member

Откуда: VL
Сообщений: 3104
Чисто теоретически:
И как вы оцениваете затраты СУБД на обработку такого количества таблиц?
21 мар 19, 03:34    [21839046]     Ответить | Цитировать Сообщить модератору
 Re: Структура данных  [new]
Изопропил
Member

Откуда:
Сообщений: 31190
982183,

Мы ж не знаем целевой функции, может задача освоить бюджет
21 мар 19, 11:04    [21839294]     Ответить | Цитировать Сообщить модератору
 Re: Структура данных  [new]
982183
Member

Откуда: VL
Сообщений: 3104
Выбить финансирование на новый сервер....
21 мар 19, 12:24    [21839427]     Ответить | Цитировать Сообщить модератору
 Re: Структура данных  [new]
МодальноеОкно
Member

Откуда:
Сообщений: 2196
982183
Выбить финансирование на новый сервер....


+ лучше с запасом - квантовый
21 мар 19, 13:18    [21839505]     Ответить | Цитировать Сообщить модератору
 Re: Структура данных  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34487
Только этот вариант!
автор
Данные пользователей (пусть 80 колонок с данными) могут храниться:
1. все в одной таблице, т.е 500 - 1 млн записей в таблице по 80 колонок;


В БД во время штатной работы системы (программы) не должны создаваться новые таблицы,
иначе это ошибка проектирования БД.


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


На самом деле всё равно с этой точки зрения.

А вот попросят тебя посчитать какую-то статистику ПО ВСЕМ ПОЛЬЗОВАТЕЛЯМ -- что ты скажешь начальству
своему? Что плохо учился в школе и не умеешь БД проектировать?
Или будешь динамический запрос на 500тысяч таблиц собирать?
Ну так тебя тут же и уволят...
23 мар 19, 01:16    [21841428]     Ответить | Цитировать Сообщить модератору
 Re: Структура данных  [new]
Mr.Fontaine
Member

Откуда: у меня столько мыслей?
Сообщений: 758
vladka63, из этих двух однозначно первый.
да и при хорошей индексации таблицы, он предпочтительней того же EAV.
Делай одну таблицу, навешивай нужные индексы. Всё будет работать без видимых глазу задержек.
У самого есть таблица 73 миллиона записей (правда полей только 61)
Как-то даже и не замечает никто что там размер таблицы 24 гигабайта.
25 мар 19, 09:50    [21842446]     Ответить | Цитировать Сообщить модератору
 Re: Структура данных  [new]
mayton
Member

Откуда: loopback
Сообщений: 41889
vladka63
2. по заполнению для каждого пользователя динамически (программно) создается своя, отдельная таблица, т.е 1 млн. отдельных, для каждого пользователя, с одинаковой структурой, таблиц.

Ерунда какая-то. Так не проектируют БД.
25 мар 19, 16:11    [21842940]     Ответить | Цитировать Сообщить модератору
 Re: Структура данных  [new]
L_argo
Member

Откуда:
Сообщений: 892
Mr.Fontaine
vladka63, из этих двух однозначно первый.
да и при хорошей индексации таблицы, он предпочтительней того же EAV.
Делай одну таблицу, навешивай нужные индексы. Всё будет работать без видимых глазу задержек.
У самого есть таблица 73 миллиона записей (правда полей только 61)
Как-то даже и не замечает никто что там размер таблицы 24 гигабайта.
Этот подход не годится. Очень часто придется добавлять новые параметры. А это новые поля. Добавить на лету новое поле в таблицу с 100млн. записей - стрёмное занятие. Иногда еще придется и удалять/переопределять.
Правильное решение - новый параметр это просто новая запись(и) в табличке(ах). Его легко добавить/удалить/изменить
26 мар 19, 09:56    [21843432]     Ответить | Цитировать Сообщить модератору
 Re: Структура данных  [new]
Mr.Fontaine
Member

Откуда: у меня столько мыслей?
Сообщений: 758
L_argo, в каких-то случаях, да. Правильное решение - EAV. В каких-то нет. Нет единого правильного решения.

P.S. Тем более в исходных данных варианта "новый параметр это просто новая запись(и) в табличке(ах)." вообще нет.
Там всего из двух пунктов выбор.
26 мар 19, 10:23    [21843467]     Ответить | Цитировать Сообщить модератору
 Re: Структура данных  [new]
ПЕНСИОНЕРКА
Member

Откуда: Владимирская обл
Сообщений: 4593
vladka63
Предположим есть много пользователей (пусть 500 тысяч или 1 млн).
Данные пользователей (пусть 80 колонок с данными) могут храниться:
1. все в одной таблице, т.е 500 - 1 млн записей в таблице по 80 колонок;
2. по заполнению для каждого пользователя динамически (программно) создается своя, отдельная таблица,

я бы предложила 3-й вариант(и несколько раз я его применяла)
--основная таблица(до 10 полей, например kod1,фио,дата рождения,пол,,,)
--и десяток подчиненных(у меня было до 26), в каждой по 5-10 связанных логически полей
2.родственники(код2,код1,степень родства......)
3.адреса(код3,код1,тип адреса ,код региона, код города,.........)
4.образование(код4,код1,.......)
5.место работы......
6.награды....
7.наказания......
.....
26 мар 19, 10:42    [21843485]     Ответить | Цитировать Сообщить модератору
 Re: Структура данных  [new]
982183
Member

Откуда: VL
Сообщений: 3104
Вполне стандартный подход.
Обязательные поля в основной таблице.
Необязательные или многозначные в EAV.

Видел извращения в виде отдельной EAV таблицы для данных определенного типа.
26 мар 19, 10:48    [21843492]     Ответить | Цитировать Сообщить модератору
 Re: Структура данных  [new]
ПЕНСИОНЕРКА
Member

Откуда: Владимирская обл
Сообщений: 4593
vladka63
Какой вариант предпочтительней с точки зрения производительности и скорости обработки данных?

вариантов обработки -3
1-с головы, с основной таблички,
--выбираем по фио,дата рождения,пол,
--на выбранную запись навешиваем выбранные из подчиненных(по потребности) по код1
2- с подчиненных
--ищем жителей ТУЛА и получаем таблицу раб11 с код1
--ищем образование ВЫСШЕЕ ЭКОНОМИЧЕСКОЕ по образованию+раб11 , получаем раб12
3- динамическое формирование запроса(выбираются поля и формируется строка запроса
--нет смысла прицеплять подчиненные, если от них не нужна информация)
-- select....from основная inner join t_adres ..... inner join t_obrasovanie.....
26 мар 19, 11:00    [21843507]     Ответить | Цитировать Сообщить модератору
 Re: Структура данных  [new]
ПЕНСИОНЕРКА
Member

Откуда: Владимирская обл
Сообщений: 4593
982183
Видел извращения в виде отдельной EAV таблицы для данных определенного типа.

вполне разумно для
--мемо(встречала до 50кб, предпочитаю до 1кб, а то и по-параграфно)
--оле + некий текст или место первоисточника
--вложения(строго 1 вложение в записи + некий текст или место первоисточника)
26 мар 19, 11:06    [21843513]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Проектирование БД Ответить