![]() |
Задавайте вопросы, мы ответим
Вы не зашли.
Добрый день! Подскажите как грамотно реализовать.
Имеется файл с данными (результат работы программы)
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. Но в таком случае как делать выборку в последующем, если например, делать запрос о количестве трафика за месяц?
Вобщем, прошу помощи.
Неактивен
Объединить выборки данных из нескольких таблиц можно через UNION.
С другой стороны, обычно не нужно хранить данные чаще, чем за день
(если они не сегодняшние, например).
Т.е. за сегодня оно хранится по часам, а не сегодня - достаточно хранить
дневную сумму. Тогда сетка /16 у Вас будет хранить 65к строчек в сутки
максимум. Ну и информация, скажем, полгода назад, вряд ли потребует
дискретизации больше, чем за месяц.
Неактивен
Спасибо за подсказку. Я понял суть.
Ну если что, то я еще спрошу.
Удачи!
Неактивен