SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 07.10.2009 17:13:28

Виталий
Участник
Зарегистрирован: 07.10.2009
Сообщений: 2

Структура базы данных для ситемы подсчета трафика

Добрый день! Подскажите как грамотно реализовать.
Имеется файл с данными (результат работы программы)

iplist.txt

10.0.10.180        15248834
10.0.10.129        673225
10.0.10.3              338515
10.0.10.124            325857

  Создал базу данных и соответствующую таблицу:

CREATE DATABASE billing;
USE billing;

CREATE TABLE billing1 (
_ID int unsigned NOT NULL auto_increment,
_YYYY int(4) unsigned NOT NULL default '0',
_MM int(2) unsigned NOT NULL default '0',
_DD int(2) unsigned NOT NULL default '0',
_DIR varchar(3) NOT NULL default '',
_IP varchar(15) NOT NULL default '',
_COUNT bigint(50) NOT NULL default '0',
PRIMARY KEY (_ID)
)TYPE=MyISAM;

  Ниже приведу вывод запроса с вставленными (ручками) значениями для примера:

+-----+-------+-----+-----+------+------------+---------+
| _ID | _YYYY | _MM | _DD | _DIR | _IP        | _COUNT  |
+-----+-------+-----+-----+------+------------+---------+
|   1 |  2009 |   6 |  22 | OUT  | 10.0.10.180|    0    |
+-----+-------+-----+-----+------+------------+---------+

Смысл здесь вот в чем.
Я хочу сделать небольшую систему учета трафика. Файл iplist.txt - это вывод статистики в текстовом виде.
Теперь надо все это запихнуть в базу. Далее, зайдя на страничку статистики можно было бы выбрать IP-адрес (_IP) и
любой промежуток времени, и с помощью SQL-запроса произвести выборку и суммирование траффика (_COUNT).Но это потом.
 
Вопрос в том, как лучше организовать хранение. Если представить, что сеть с маской 16, то представьте сколько записей в таблице будет даже за месяц работы. Т.е. я думаю разбить на несколько таблиц. Каждая таблица названием на текущий день, вида YYYY-MM-DD. Но в таком случае как делать выборку в последующем, если например, делать запрос о количестве трафика за месяц?

  Вобщем, прошу помощи.

Неактивен

 

#2 08.10.2009 12:22:06

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Структура базы данных для ситемы подсчета трафика

Объединить выборки данных из нескольких таблиц можно через UNION.
С другой стороны, обычно не нужно хранить данные чаще, чем за день
(если они не сегодняшние, например).

Т.е. за сегодня оно хранится по часам, а не сегодня - достаточно хранить
дневную сумму. Тогда сетка /16 у Вас будет хранить 65к строчек в сутки
максимум. Ну и информация, скажем, полгода назад, вряд ли потребует
дискретизации больше, чем за месяц.

Неактивен

 

#3 08.10.2009 13:40:21

Виталий
Участник
Зарегистрирован: 07.10.2009
Сообщений: 2

Re: Структура базы данных для ситемы подсчета трафика

Спасибо за подсказку. Я понял суть.
Ну если что, то я еще спрошу.

Удачи!

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson