|
Структура данных
|
|||
---|---|---|---|
#18+
Добрый день! Уважаемые практики, дайте пожалуйста совет. Предположим есть много пользователей (пусть 500 тысяч или 1 млн). Данные пользователей (пусть 80 колонок с данными) могут храниться: 1. все в одной таблице, т.е 500 - 1 млн записей в таблице по 80 колонок; 2. по заполнению для каждого пользователя динамически (программно) создается своя, отдельная таблица, т.е 1 млн. отдельных, для каждого пользователя, с одинаковой структурой, таблиц. Какой вариант предпочтительней с точки зрения производительности и скорости обработки данных? Спасибо :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2019, 08:01 |
|
Структура данных
|
|||
---|---|---|---|
#18+
vladka63, таки надо понять, производительность чего вы измеряете? (вставка, чтение, обновление, удаление). Видимо с этим же показателем и связано наиболее частые операции. Насчет второго варианта мне он кажется подозрительным.... Например, обновление свойств у нескольких пользователей как будет выглядеть? А выборка свойств для нескольких пользователей? Это вопросы к "производительности" - часть операций на плоской многоколоночной таблице будут быстрее(чтение, например). Часть операций могут быть медленее из-за блокировок, к примеру. Но если выбор из этих двух вариантов - я бы предпочел многоколоночное решение. Чтобы местная публика продолжила дискуссию, думается, надо накидать операции, производительность которых вы желаете "измерять". p.s. При таком небольшом кол-ве данных их всегда можно сгененрировать и измерить прямо не отходя от кассы. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2019, 08:43 |
|
Структура данных
|
|||
---|---|---|---|
#18+
п. 2 какой-то бред, ИМХО. Если из 80 колонок в большинстве случаев заполнены всего 5-6 параметров, то можно рассмотреть EAV. Это еще пара таблиц(справочник и данные), где каждый параметр пользователя хранится в отдельной записи. Также можно хранить исторические данные, т.е. зависящие от времени. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2019, 09:49 |
|
Структура данных
|
|||
---|---|---|---|
#18+
А какая СУБД потянет такое количество таблиц в одной базе? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2019, 09:51 |
|
Структура данных
|
|||
---|---|---|---|
#18+
982183А какая СУБД потянет такое количество таблиц в одной базе?Никакая. Это бред ТСа :) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2019, 09:53 |
|
Структура данных
|
|||
---|---|---|---|
#18+
vladka63Добрый день! Уважаемые практики, дайте пожалуйста совет. Предположим есть много пользователей (пусть 500 тысяч или 1 млн). Данные пользователей (пусть 80 колонок с данными) могут храниться: 1. все в одной таблице, т.е 500 - 1 млн записей в таблице по 80 колонок; 2. по заполнению для каждого пользователя динамически (программно) создается своя, отдельная таблица, т.е 1 млн. отдельных, для каждого пользователя, с одинаковой структурой, таблиц. Какой вариант предпочтительней с точки зрения производительности и скорости обработки данных? Спасибо :-) А вот, например, задача - отобрать всех пользователей, которые родились раньше 1990 года. Как вы будете решать эту задачу во втором случае и какая будет производительность? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2019, 09:58 |
|
Структура данных
|
|||
---|---|---|---|
#18+
vladka63Какой вариант предпочтительней Нанять специалиста. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2019, 10:18 |
|
Структура данных
|
|||
---|---|---|---|
#18+
vladka63, Ни первый, ни второй вариант. Нужно рассмотреть существование нескольких таблиц - справочники, однотипные данные. Наверняка можно всё выложить в 80 полей, а-ля Эксель. И это будет редкозаполненная матрица. Это нехорошо. Вернее даже не так. Для чего эта таблица? Нужно будет потом делать анализ, выборки из этой матрицы. И скорее всего, выборки будут по столбцам. Как вариант - база с "колоночным" хранением (или как там по-научному называется). ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2019, 10:21 |
|
Структура данных
|
|||
---|---|---|---|
#18+
vladka63Какой вариант предпочтительней с точки зрения производительности и скорости обработки данных? покурить про нормализацию данных. выделить отдельные сущности ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2019, 17:34 |
|
Структура данных
|
|||
---|---|---|---|
#18+
vladka63Какой вариант предпочтительней пойти в кондукторы ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2019, 17:35 |
|
Структура данных
|
|||
---|---|---|---|
#18+
982183А какая СУБД потянет такое количество таблиц в одной базе? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2019, 22:34 |
|
Структура данных
|
|||
---|---|---|---|
#18+
982183А какая СУБД потянет такое количество таблиц в одной базе? Oracle ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2019, 22:34 |
|
Структура данных
|
|||
---|---|---|---|
#18+
Чисто теоретически: И как вы оцениваете затраты СУБД на обработку такого количества таблиц? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2019, 03:34 |
|
Структура данных
|
|||
---|---|---|---|
#18+
982183, Мы ж не знаем целевой функции, может задача освоить бюджет ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2019, 11:04 |
|
Структура данных
|
|||
---|---|---|---|
#18+
Выбить финансирование на новый сервер.... ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2019, 12:24 |
|
Структура данных
|
|||
---|---|---|---|
#18+
982183Выбить финансирование на новый сервер.... + лучше с запасом - квантовый ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2019, 13:18 |
|
Структура данных
|
|||
---|---|---|---|
#18+
Только этот вариант! авторДанные пользователей (пусть 80 колонок с данными) могут храниться: 1. все в одной таблице, т.е 500 - 1 млн записей в таблице по 80 колонок; В БД во время штатной работы системы (программы) не должны создаваться новые таблицы, иначе это ошибка проектирования БД. авторКакой вариант предпочтительней с точки зрения производительности и скорости обработки данных? На самом деле всё равно с этой точки зрения. А вот попросят тебя посчитать какую-то статистику ПО ВСЕМ ПОЛЬЗОВАТЕЛЯМ -- что ты скажешь начальству своему? Что плохо учился в школе и не умеешь БД проектировать? Или будешь динамический запрос на 500тысяч таблиц собирать? Ну так тебя тут же и уволят... ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2019, 01:16 |
|
Структура данных
|
|||
---|---|---|---|
#18+
vladka63, из этих двух однозначно первый. да и при хорошей индексации таблицы, он предпочтительней того же EAV. Делай одну таблицу, навешивай нужные индексы. Всё будет работать без видимых глазу задержек. У самого есть таблица 73 миллиона записей (правда полей только 61) Как-то даже и не замечает никто что там размер таблицы 24 гигабайта. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2019, 09:50 |
|
Структура данных
|
|||
---|---|---|---|
#18+
vladka632. по заполнению для каждого пользователя динамически (программно) создается своя, отдельная таблица, т.е 1 млн. отдельных, для каждого пользователя, с одинаковой структурой, таблиц. Ерунда какая-то. Так не проектируют БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2019, 16:11 |
|
Структура данных
|
|||
---|---|---|---|
#18+
Mr.Fontainevladka63, из этих двух однозначно первый. да и при хорошей индексации таблицы, он предпочтительней того же EAV. Делай одну таблицу, навешивай нужные индексы. Всё будет работать без видимых глазу задержек. У самого есть таблица 73 миллиона записей (правда полей только 61) Как-то даже и не замечает никто что там размер таблицы 24 гигабайта.Этот подход не годится. Очень часто придется добавлять новые параметры. А это новые поля. Добавить на лету новое поле в таблицу с 100млн. записей - стрёмное занятие. Иногда еще придется и удалять/переопределять. Правильное решение - новый параметр это просто новая запись(и) в табличке(ах). Его легко добавить/удалить/изменить ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2019, 09:56 |
|
Структура данных
|
|||
---|---|---|---|
#18+
L_argo, в каких-то случаях, да. Правильное решение - EAV. В каких-то нет. Нет единого правильного решения. P.S. Тем более в исходных данных варианта "новый параметр это просто новая запись(и) в табличке(ах)." вообще нет. Там всего из двух пунктов выбор. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2019, 10:23 |
|
Структура данных
|
|||
---|---|---|---|
#18+
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.03.2019, 10:42 |
|
Структура данных
|
|||
---|---|---|---|
#18+
Вполне стандартный подход. Обязательные поля в основной таблице. Необязательные или многозначные в EAV. Видел извращения в виде отдельной EAV таблицы для данных определенного типа. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2019, 10:48 |
|
Структура данных
|
|||
---|---|---|---|
#18+
vladka63Какой вариант предпочтительней с точки зрения производительности и скорости обработки данных? вариантов обработки -3 1-с головы, с основной таблички, --выбираем по фио,дата рождения,пол, --на выбранную запись навешиваем выбранные из подчиненных(по потребности) по код1 2- с подчиненных --ищем жителей ТУЛА и получаем таблицу раб11 с код1 --ищем образование ВЫСШЕЕ ЭКОНОМИЧЕСКОЕ по образованию+раб11 , получаем раб12 3- динамическое формирование запроса(выбираются поля и формируется строка запроса --нет смысла прицеплять подчиненные, если от них не нужна информация) -- select....from основная inner join t_adres ..... inner join t_obrasovanie..... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2019, 11:00 |
|
Структура данных
|
|||
---|---|---|---|
#18+
982183Видел извращения в виде отдельной EAV таблицы для данных определенного типа. вполне разумно для --мемо(встречала до 50кб, предпочитаю до 1кб, а то и по-параграфно) --оле + некий текст или место первоисточника --вложения(строго 1 вложение в записи + некий текст или место первоисточника) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2019, 11:06 |
|
|
start [/forum/topic.php?fid=32&msg=39791356&tid=1539947]: |
0ms |
get settings: |
12ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
48ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
74ms |
get tp. blocked users: |
2ms |
others: | 245ms |
total: | 419ms |
0 / 0 |