Mysql и 1.5 терабайта инфы.

Ge0SuB

Guest
Mysql и 1.5 терабайта инфы.

Добрый день. в ближайшем будущем будет обьем инфы 1.5 терабайт. сейчас это всё храниться в нескольких MySQLях. заставляют сделать всё на одной машине в одной базе и чтобы это еще работало шустренько. Мускул такой обьем не выдержит? Скорее нет. а вот что для такого объема будет оптимально?

-~{}~ 06.03.06 10:56:

Есть тут о кого-то опыт работы с данными такого обьема? Хотелось бы пообщаться, ато я никогда не работал с таким количеством. максимум гигов 90. а тут такое... Если кто-то найдеться стучите в аську 11221133 или тут поговорим. Спасибо!
 

phprus

Moderator
Команда форума
Ge0SuB
Если не секрет то можно узнать за чем это надо и что за информация будет храниться в этой базе?
 

Ge0SuB

Guest
клиенты хотят хранить статистику за три года работы. данные информация о звонках, есть софтсвич. который маршрутизирует трафик. и есть две таблички для статистики по входящим и исходящим звонкам. вот такой структуры
PHP:
CREATE TABLE tablename (
  id int(10) unsigned NOT NULL auto_increment,
  fieldName int(10) unsigned NOT NULL default '0',
  fieldName varchar(64) NOT NULL default '',
  fieldName varchar(64) NOT NULL default '',
  fieldName varchar(64) NOT NULL default '',
  fieldName tinyint(3) unsigned NOT NULL default '0',
  fieldName int(10) unsigned NOT NULL default '0',
  fieldName int(10) unsigned NOT NULL default '0',
  fieldName int(10) unsigned NOT NULL default '0',
  fieldName timestamp(14) NOT NULL,
  fieldName date NOT NULL default '0000-00-00',
  fieldName time NOT NULL default '00:00:00',
  fieldName timestamp(14) NOT NULL default '00000000000000',
  fieldName tinyint(3) unsigned NOT NULL default '0',
  fieldName tinyint(3) unsigned NOT NULL default '0',
  fieldName smallint(5) unsigned NOT NULL default '0',
  fieldName int(10) unsigned NOT NULL default '0',
  fieldName int(10) unsigned NOT NULL default '0',
  fieldName int(10) unsigned NOT NULL default '0',
  fieldName mediumint(8) unsigned NOT NULL default '0',
  fieldName tinyint(3) unsigned NOT NULL default '0',
  fieldName timestamp(14) NOT NULL default '00000000000000',
  fieldName varchar(15) NOT NULL default '',
  fieldName float(10,5) unsigned NOT NULL default '0.00000',
  fieldName float(10,5) unsigned NOT NULL default '0.00000',
  fieldName float(10,5) unsigned NOT NULL default '0.00000',
  fieldName float(10,5) unsigned NOT NULL default '0.00000',
  fieldName mediumint(8) unsigned NOT NULL default '0',
  fieldName float(10,5) unsigned NOT NULL default '0.00000',
  fieldName varchar(9) NOT NULL default '',
  fieldName float(10,5) unsigned NOT NULL default '0.00000',
  fieldName float(10,5) unsigned NOT NULL default '0.00000',
  fieldName float(10,5) unsigned NOT NULL default '0.00000',
  fieldName float(10,5) unsigned NOT NULL default '0.00000',
  fieldName mediumint(8) unsigned NOT NULL default '0',
  fieldName float(10,5) unsigned NOT NULL default '0.00000',
  fieldName varchar(9) NOT NULL default '',
  fieldName varchar(15) NOT NULL default '',
  fieldName varchar(8) NOT NULL default '',
);
имена полей убрал, так надо :)

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

В итоге имеем в среднем 10 080 000 записей в двух таблицах (вместе) за день и 3 679 200 000 в год :)


Вот за три года и набираеться такой обьем. Статистику они чистить не согласны :)
 

Andreika

"PHP for nubies" reader
и скока ж винтов установлено на все это дело (особенно с raidом) ?
 

Ge0SuB

Guest
насчет железа не вкурсе. сейчас это разбито на много машин. а клиенты захотели сделать все на одной тачке :((

-~{}~ 06.03.06 14:19:

уже ведь винты есть по 500 gb. так что четыре таких винта в рейд и никаких проблем. и фря станет и база будет :)
 

Ge0SuB

Guest
Винты тормозить будут? 4тыре по 500гигов в рейде?
А чего тормозить будут, из-за рейда? Я не знал :(
Расскажи подробней.
 

[DAN]

Старожил PHPClub
Ge0SuB, смотри.
1) Наобязательно хранить все логи в БД. Храни лишь за актуальный период времени (скажем, полгода), а старые логи дампь в файл и архивируй. Если спецслужбы и запросят данные, выдашь им дампы.
2) Тормознутость зависит от того, какое будет сооотношение SELECT\INSERT. Если у тебя realtime поток логов, можешь сделать триггер, который будет считать по ним стату в отдельную таблицу.
Если заливаешь логи периодически, сбор статистики можно и в программе реализовать.
3) Разноси логи по таблицам. На каждый месяц своя таблица. Это очень упростит работу с логами и заметно ускорит выборку.
4) Аккуратно создавай индексы. Для такого объема данных индексы могут занимать до 30% размера логов.

Для работы с логами софтсвича я выбрал PostGres 7.х.х чего и тебе рекомендую :)
Кстати, логи с cisco мы все же храним в MySQL. Правда, работать с ними почти не приходится.

P.S. какой софтсвич пользуете?
 

si

Administrator
Ge0SuB
потому что мало дисков, потому что это sata/ide диски, потому что raid5 который ты собрался делать тормозит при записи.
кстати клиент в курсе сколько будет стоит ему storage на такой объем данных ?
Для работы с логами софтсвича я выбрал PostGres 7.х.х чего и тебе рекомендую
тогда будет не 1.5T а все 5T :)

-~{}~ 06.03.06 17:11:

из полезного по теме в mysql есть такое
ARCHIVE Storage Engine
и такое
MERGE Storage Engine
 

[DAN]

Старожил PHPClub
Ge0SuB, так намекни клиентам, чтоб биллинг прикупили, тогда все вопросы отпадут :)

-~{}~ 06.03.06 19:08:

Автор оригинала: si
тогда будет не 1.5T а все 5T :)
Это смотря какими ручками настраивать ;)
 

si

Administrator
[DAN]
причем тут ручки ? таблица в myisam явно берет меньше места чем в такаяже в pg, про ARCHIVE я вообще молчу
 

[DAN]

Старожил PHPClub
Не тестировал, поэтому ничего определенного сказать не смогу.
Но даже если и меньше, то вряд ли в 3 раза.
 
Сверху