Конференция "Базы" » Выборка быстрее из 1 таблицы или нескольких? [FireBird 2.5]
 
  • DelphiN! (07.03.13 13:49) [0]
    Доброго времени суток!
    Есть база данных в которой содержится информация о транзакциях каждого пользователя. Каждый пользователь должен иметь возможность просматривать свои транзакции. У каждого пользователя их миллионы.

    Как лучше организовать БД? Хранить все записи в одной таблице либо же создавать для каждого пользователя свою таблицу с транзакциями?


    Конечно же для меня предпочтительнее все держать в одной таблице, так как удобнее писать SQL запросы относящиеся к транзакциям Всех пользователей, но как быстро будут выполняться SQL запросы к таблице с миллиардами записей?
  • Jeer © (07.03.13 14:17) [1]
    Попробуй.
  • DelphiN! (07.03.13 14:25) [2]
    Просто нет под рукой базы. Может быть кто-то знает?
  • DelphiN! (07.03.13 14:36) [3]
    Да и результат моего теста может быть не верен в силу каких либо причин, хотел бы знать наверняка
  • Кщд (07.03.13 14:39) [4]
    >DelphiN!   (07.03.13 14:36) [3]
    сколько пользователей, зачем хранить ВСЮ историю по транзакциям?
  • DelphiN! (07.03.13 14:49) [5]

    > Кщд   (07.03.13 14:39) [4]
    > сколько пользователей, зачем хранить ВСЮ историю по транзакциям?
    >


    Тысячи пользователей. Им бывает необходимо просматривать свои транзакции за прошлые годы.
  • Inovet © (07.03.13 15:43) [6]
    Транзакции в смысле SQL или какие-то другие? Деньги там со счёта на чсёт переводятся, например.
  • DelphiN! (07.03.13 16:35) [7]

    > Inovet ©   (07.03.13 15:43) [6]
    > Транзакции в смысле SQL или какие-то другие? Деньги там
    > со счёта на чсёт переводятся, например.


    Не SQL.
    Информация о денежных операциях.
  • Медвежонок Пятачок © (07.03.13 17:18) [8]
    зачем себя ограничивать отдельными таблицами для пользователей.
    каждому пользователю - по отдельной базе данных.
    а еще лучше по отдельному серверу.
  • Inovet © (07.03.13 17:18) [9]
    > [7] DelphiN!   (07.03.13 16:35)
    > Информация о денежных операциях.

    Ну так операции храняться же в базе, кто её провёл, что, куда. Судя по

    > [0] DelphiN!   (07.03.13 13:49)
    > Есть база данных в которой содержится информация о транзакциях каждого пользователя.

    база уже есть. Или нет базы и надо делать?

    Упрощенно. Допустим, друг у друга покупают, продают, дарят.
    таблица Пользователи
    (
     Ид,
     Фамилия,
     Имя
     ...
     и т.п.
    )

    таблица Транзакции
    (
     Ид,
     ИдПользователя,
     СчётДебет,
     СчётКредит,
     Дата_время_операции,
     Сумма
     ...
     Ещё что-то всякое
    )
  • Кщд (07.03.13 21:46) [10]
    >DelphiN!   (07.03.13 14:49) [5]
    одна таблица + индекс на пользователя + удаление устаревших данных
  • DelphiN! (11.03.13 11:10) [11]
    А по времени выполнения SQL запросов?
    Также желательно разграничивать права доступа к данным на уровне СУБД, на тот случай, если в программе найдут какую либо ошибку, через которую смогут выполнить свой SQL запрос. Соответственно вопрос: Можно ли разграничить права доступа к данным из 1 таблицы, для пользователей на уровне СУБД?
  • знайка (11.03.13 13:03) [12]
    Вы эти умные слова из какой книжки почерпнули?
  • sniknik © (11.03.13 15:31) [13]
    > Можно ли разграничить права доступа к данным из 1 таблицы, для пользователей на уровне СУБД?
    можно, но обычно так не делают (желание высказывают, а как до поддержки доходит так "все опускается", руки тоже...)

    рекомендуют делать таблицу недоступной, а права/доступность накладывать на "вьюшки" которые делать под каждого пользователя (проще чем таблицы, и структура правильная, и для того чтобы начать работать правильно ничего менять не придется...).
  • DelphiN! (11.03.13 16:16) [14]

    > sniknik ©   (11.03.13 15:31) [13]


    А добавлять и удалять данные через хранимые процедуры, которым также установлены права на каждого пользователя?
  • sniknik © (11.03.13 16:32) [15]
    через "вьюшки", написал же.
  • DelphiN! (11.03.13 16:36) [16]

    > sniknik ©   (11.03.13 16:32) [15]


    А как во "вьюшку" передавать параметры, например имя записи которую следует создать?
  • sniknik © (11.03.13 17:14) [17]
    а как в таблицу? никакой разницы.
  • DelphiN! (11.03.13 17:26) [18]
    Понятно! Спасибо большое!
 
Конференция "Базы" » Выборка быстрее из 1 таблицы или нескольких? [FireBird 2.5]
Есть новые Нет новых   [119452   +50][b:0][p:0.001]