[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Хранение в БД большое кол-во данных
Эли4ка
Здравствуйте,уважаемые форумчане!Возникла такая проблема,и я не знаю как поступить.
В БД в равные промежутки времени добавляют данные,но дело в том,что часть этих данных относиться к одному разделу,а другая часть к другому.Пример:

Фамилия Имя Дата Кол-во
Петров Василий 29.3.12 305
Петров Василий 1.4.12 3060
Петров Василий 2.4.12 3077
Иванов Игорь 29.3.12 3
Иванов Игорь 1.4.12 8
Иванов Игорь 2.4.12 13
и т.д.
Дело в том,что в базу добавляется n-количество пользователь.и для каждого создать отдельную просто невозможно(или можно?)
Как лучше поступить в данном случае?



Спустя 27 минут, 43 секунды (23.03.2012 - 12:21) Saboth написал(а):
Очень сумбурное объяснение.
Уточните задачу.

Спустя 3 минуты, 2 секунды (23.03.2012 - 12:24) Эли4ка написал(а):
Цитата
Уточните задачу.

это можно!

Каждый день добавляются некоторые действия разный(именно РАЗНЫХ) пользователей..то есть например действия Петрова,Симонова,Машкова и других за 1,2,3.4.5 и т.д. числа..как лучше всего в данном случае организовать хранение данных в БД.

Спустя 6 минут, 25 секунд (23.03.2012 - 12:30) Visman написал(а):
БД в общем-то и предназначены для хранения и обработки большого количества информации.
Хоть тысячи записей добавляй, ни каких проблем до второго пришествия не будет wink.gif

Спустя 1 минута, 29 секунд (23.03.2012 - 12:32) Эли4ка написал(а):
Visman
да я согласна..но как в моем случае лучше всего организовать мою БД,чтобы сильных проблем при 100000 записях о 10000 пользователях не возникало?

Спустя 4 минуты, 52 секунды (23.03.2012 - 12:36) Visman написал(а):
Делай одну таблицу как словарь для хранения статических данных о людях, например: ФИО, дата рождения, должность и т.д.
А во второй таблице прописывай их действия со временем.
Связь между таблицами по id людей.

Спустя 12 минут, 45 секунд (23.03.2012 - 12:49) Saboth написал(а):
таблица 1: пользователи (Ф.И.О. идентификатор пользователя)
таблица 2: действия (идентификатор действия, описание действия)
таблица 3: события (идентификатор пользователя, идентификатор действия, дата)

Связь соответственно по одноимённым.

Спустя 4 минуты, 33 секунды (23.03.2012 - 12:54) Эли4ка написал(а):
Visman
не совсем поняла,как сделать связь по id людей?

Спустя 3 минуты, 6 секунд (23.03.2012 - 12:57) Visman написал(а):
В таблице людей заводишь уникальное числовое поле id.
В другой таблице заводишь числовое поле аналогичного размера в которое будешь проставлять номер человека из первой таблицы для текущей записи.

Аналогично, если выберешь вариант от Saboth с тремя таблицами
1 и 2 таблица словари, 3 таблица имеет два поля для ссылки на первую и вторую таблицы.

Спустя 4 минуты, 59 секунд (23.03.2012 - 13:02) Эли4ка написал(а):
Visman
то есть примерно так:
Таблица 1
id name last_NAME
Таблица 2
id step1 step2 stepN
???

Спустя 5 минут, 55 секунд (23.03.2012 - 13:08) Visman написал(а):
Таблица 1
id name last_NAME
Таблица 2
id user_id step1 step2 stepN

Таблица 2.user_id берем из Таблица 1.id

Спустя 6 минут, 22 секунды (23.03.2012 - 13:14) Saboth написал(а):
Цитата (Эли4ка @ 23.03.2012 - 10:02)
id step1 step2 stepN

У блин. Меня начинает пугать женская логика.
(Ну не то что бы пугает, так только мандражировать начинаю).
Судя по первому и последующим топам - вы не совсем понятно объяснили.

Вот так, тогда
id_user, step_order, event, date

id_user - идентификатор пользователя
step_order - порядок шага (будет ключом и одновременно определять последовательность для все таблицы либо для одного пользователя в частности)
event - событие (описание или идентификатор)
date - дата

Спустя 2 минуты, 46 секунд (23.03.2012 - 13:17) Visman написал(а):
id из этой таблицы я бы не стал выкидывать!

Спустя 15 минут, 2 секунды (23.03.2012 - 13:32) Saboth написал(а):
Цитата (Эли4ка @ 23.03.2012 - 10:02)
Таблица 2
id step1 step2 stepN

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

В итоге получится что число полей будет не +1(умноженное на количесвто столбцов), а +1(умноженно на количество записей в таблице), а это примерно 2-3 хреналлиона.

Неразумно!

Мы же с друго Visman пытаемя объяснить что действовать надо в другую сторону.
Просто натурально добавлять по записи на события и объеденить одного пользователя одним для него идентификатором.

Спустя 4 минуты, 49 секунд (23.03.2012 - 13:37) Visman написал(а):
Действительно, stepN я упустил из вида laugh.gif

Спустя 1 час, 3 минуты, 39 секунд (23.03.2012 - 14:40) Эли4ка написал(а):
нет,Вы совершенно неправильно поняли.
Может вот так попонятней:
Каждый день на сайте регистрируются пользователи,и например каждый пишет в блог по возможности.И надо хранить эти данные в БД.

Спустя 2 минуты, 34 секунды (23.03.2012 - 14:43) Visman написал(а):
Мы так все поняли.
Есть таблица юзеров и таблица их действий (их сообщений).
Таблицы связаны между собой по номеру юзера.
Число полей в таблицах неизменно, изменяется число записей (строк)!!!

Спустя 3 минуты, 57 секунд (23.03.2012 - 14:47) Эли4ка написал(а):
Visman
Да,именно так,только возможно будет не только сообщения,но и какие-то другие столбы.

Спустя 14 минут, 33 секунды (23.03.2012 - 15:01) Saboth написал(а):
Цитата (Эли4ка @ 23.03.2012 - 14:47)
возможно будет не только сообщения,но и какие-то другие столбы.

Так и в чём препятствие? Пусть будут и другие.
Цитата
Число полей в таблицах неизменно, изменяется число записей (строк)!!!

Visman имел ввиду - полей столько, сколько тебе нужно, только не надо их постоянно добавлять. Поставте один раз 48 штук и на здоровье, а используйте 4, ну когда-никогда все 48.

Ну или потом ещё 11 с половиной добавь. Ну не при каждой же записи пользователя добавлять.

Спустя 12 минут, 25 секунд (23.03.2012 - 15:14) Эли4ка написал(а):
Saboth
более-менее понятно.

Спустя 35 минут, 24 секунды (23.03.2012 - 15:49) Saboth написал(а):
Как вердикт (может я непонятно объяснил)

Если таблицу представить в виде многоквартирного дома.
У вас была задумка:
К примеру Кацельбоген Абрам Моисеевеч живёт на 176-ом этаже, и на каждое его сообщение вы хотели достравивать в его квартире комнату. Но что бы не нарушать целостность дома, у вас автоматический достраивались бы комнаты и на других этажа, увеличивая дом в ширину.

Мы предложили достраивать на каждое сообщение этаж, но в документы записывать что этажи 176, 190, 473 и N принадлежат Кацельбогену А.М.

Потому что при 40 000 жильцов в первом случае, на каждое сообщение вам надо достроить 39999 лишних комнат, независимо от того нужны они остальным или нет.

А во втором случае на каждое сообщение достраиваем одну малогабаритную квартиру с совмещённым сан. узлом, что измеримо экономичнее.

Спустя 18 часов, 10 минут, 11 секунд (24.03.2012 - 09:59) Эли4ка написал(а):
Saboth
может быть Вы в чем-то и правы.. unsure.gif

Спустя 22 минуты, 32 секунды (24.03.2012 - 10:22) ADiel написал(а):
У меня есть таблица с логами действий пользователей. Организована именно по связи пользователя по id. Там уже больше миллиона записей и ничего, проблем не наблюдаю.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.