[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как правильно спроектировать историю оплат?
sss2019
Здравствуйте. Мне нужно как то записать историю операций оплаты пользователей, например для каждого платежа нужно сохранить: дату, сумму, ID, способ оплаты.

Возник сразу вопрос, как обычно сохраняют большое множество таких данных, в одну таблицу, или создают несколько?

Как сильно понизится производительность при выборке/записи в эту таблицу, если в таблице будет 1 000 000 таких записей, или 10 000 000?
sss2019
Дайте комментарии пожалуйста знающие люди
S.Chushkin
Храните в одной.
Зависимость скорости выборки по ключу от числа записей логарифмическая. Разницы между 1 млн. и 10-ю при выборке Вы вряд ли заметите для такой таблицы.

_____________
Рекламка / ad.pesow.com Хрень / mr-1.ru
AllesKlar
sss2019
если в таблице Оплата у тебя будет 10 000 000 записей, то ты купишь себе для одной этой таблицы отдельный сервер и уедешь на Бали отдыхать

А пока тебе хватит то, что имеется, все записи в одной таблице.

_____________
[продано копирайтерам]
waldicom
Цитата (AllesKlar @ 25.10.2014 - 16:11)
если в таблице Оплата у тебя будет 10 000 000 записей, то ты купишь себе для одной этой таблицы отдельный сервер и уедешь на Бали отдыхать

оффтопчик

а если будет 10 000 000 000 000, то ты просто купишь Бали smile.gif


_____________
Свои мозги еще никто не отменял.
Телепатов нету.
FatCat
Цитата (AllesKlar @ 25.10.2014 - 18:11)
если в таблице Оплата у тебя будет 10 000 000 записей, то ты купишь себе для одной этой таблицы отдельный сервер

При правильно построенной таблице и оптимизированных запросах, справится и слабенький шаред.
Когда делал скрипт семантического анализа текста, в одну таблицу был вколочен вордстат яндекса - 40 миллионов поисковых запросов. На шаред не ставилось только потому, что размер базы был запредельных размеров; больше 4 гигов под раром.

На шареде сейчас работает упрощенная версия: http://stxt.ru/ - там всего 4 миллиона строк в таблице - довольно шустро шевелится, если не вбивать длинные тексты.

_____________
Бесплатному сыру в дырки не заглядывают...
TMake
Используй postgresql у них там есть такая вещь как "партиции" они вам очень сильно помогут.
sergeiss
Цитата (TMake @ 26.10.2014 - 19:00)
Используй postgresql у них там есть такая вещь как "партиции"

Постргес - это мощная хрень, однозначно smile.gif Тем более, что в Постгре можно автоматизировать процесс создания партиций, вместо создания их наперёд. Но партиции есть и в Мускуле.
Тут проблема в другом будет: по каким критериям разделять на партиции? По диапазонам айдишников или еще как?

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
TMake
Цитата (sergeiss @ 26.10.2014 - 20:20)
Тут проблема в другом будет: по каким критериям разделять на партиции? По диапазонам айдишников или еще как?

По периоду создания (например делить по месяцам).
sergeiss
Цитата (TMake @ 26.10.2014 - 20:31)
По периоду создания (например делить по месяцам).

Некорректно. Потому что критерий разделения на партиции должен присутствовать в параметрах выборки. Иначе выборка будет идти по всем партициям, т.е. смысла в партициях не будет.
А ты не будешь указывать месяцы в выборке, т.к. ты их просто не знаешь.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
TMake
Верно, в таком случае без шардинга не обойтись.
Быстрый ответ:

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