|
|
|
статистика посещений проектирование базы
|
|||
|---|---|---|---|
|
#18+
Приветствую Всех участников форума! Пишется счетчик посещений для сайта, возникли некоторые вопросы по проектированию базы. Параметров не так много это - ip адрес посетителя, страна(геолокация), уникальных посетителей, просмотров страниц, от куда пришел; все же объем в ~20k уников заставляет меня задуматься о производительности базы, Так вот я думаю сделать главную таблицу: id | ip_address | time и от нее уже делать связные таблицы это соответственно - country, views, uniq etc. Хотя может и не стоит пороть горячку по этому поводу, все же выслушаю все ваши пожелания и замечания. Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2013, 12:17:58 |
|
||
|
статистика посещений проектирование базы
|
|||
|---|---|---|---|
|
#18+
ambasadorстрана(геолокация)Точно геолокация? или просто по ИП смотришь? ambasadorобъем в ~20k уников заставляет меня задуматься о производительности базыМмм... 7.5 млн. в год - не так уж и много. По сабжу - вынеси зависимые неидентифицирующие текстовые поля (адрес прибытия, адрес страницы, прочая фигня) в связанную таблицу, просто чуть удобнее будет. А вообще имхо пофиг, если не на первом пеньке всё делается... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2013, 13:09:46 |
|
||
|
статистика посещений проектирование базы
|
|||
|---|---|---|---|
|
#18+
Да просто выдергивание страны по айпи из базы от MaxMind LLC, вот пример http://www.cleverscript.ru/php/scripts/40-geolocation.html#.UondnW0vBxA Ясно, Вообще нужно чтобы заносилось это все максимально быстро, чтобы не тормозило основной механизм сайта, а генерирование отчетов из этой базы это седьмой вопрос там в принципе можно и подождать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2013, 13:36:51 |
|
||
|
статистика посещений проектирование базы
|
|||
|---|---|---|---|
|
#18+
ambasadorнужно чтобы заносилось это все максимально быстро, чтобы не тормозило основной механизм сайта, а генерирование отчетов из этой базы это седьмой вопрос там в принципе можно и подождать. Ну тогда... например: одна таблица, MyISAM, никаких индексов кроме синтетического счётчика, и никаких UPDATE и DELETE. Максимум - партиционирование по дате создания записи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2013, 14:04:48 |
|
||
|
статистика посещений проектирование базы
|
|||
|---|---|---|---|
|
#18+
Akina Как понять синтетический счетчик? Кстати о партиционировании, не так давно слышал об этом, но особого значения не придал, сейчас немного просмотрел статьи - якобы производительность возрастает при больших объемах, вот пример их хабра хотелось уточнить чтобы поэкспериментировать немного: select create_partition('partitions.test1.cdate', 'date', 'day,YYYY_MM_DD', now()::text) вот здесь автор создает партицию в базе partitions в таблице test1 в поле cdate, и к примеру эта таблица заполнилась в течении какого-то времени, потом просто можно select * from partitions.test1 where cdate = '2013-11-18' и этот запрос будет только затрагивать партицию этого дня? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2013, 15:02:39 |
|
||
|
статистика посещений проектирование базы
|
|||
|---|---|---|---|
|
#18+
ambasadorКак понять синтетический счетчик? Искусственный. Не имеющий отображения на свойства сущности. В данном случае - тупо порядковый номер записи в порядке появления в таблице. Счётчик. Но вообще кому-то неплохо чё-нить почитать по основам... ambasadorсейчас немного просмотрел статьи Ну какие нахрен статьи? Ты весь мануал по этому вопросу прочитал? официальный, разработчицкий... нет? так вот пока не прочитаешь, за "статьи" даже не берись. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2013, 16:20:46 |
|
||
|
статистика посещений проектирование базы
|
|||
|---|---|---|---|
|
#18+
мануал так мануал ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2013, 16:31:16 |
|
||
|
статистика посещений проектирование базы
|
|||
|---|---|---|---|
|
#18+
А, поторопился я с выводами, create_partition это кастомная функция в хранимках а я то думал она нативная, вот от сюда: habrahabr.ru/post/152125/ . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2013, 02:56:10 |
|
||
|
статистика посещений проектирование базы
|
|||
|---|---|---|---|
|
#18+
ambasador , тебе не кажется, что применять постгрессовские выводы и эксперименты к MySQL несколько ... ммм ... неправильно? Да, хабр - это ни хрена не мануал. Мануал - вот тут . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2013, 08:52:43 |
|
||
|
статистика посещений проектирование базы
|
|||
|---|---|---|---|
|
#18+
Да не я читал, плохо то что разрабы не сделали функцию автодобавления партиции, чтобы шлеп прописал не думая, приходится выкручиваться самому: create event + alter table add partition by range... и без хранимок не обойтись похоже, впринципе можно через крон добавлять. А так по основной теме сделал таблицу register: id | ip | referer | timedate Akina То есть ты хочешь просто инсертить каждого пришедшего(включая повторно) юзера, и уже отфильтровывать потом: select date(timedate)as td, count(ip) from register group by td; -- кол-во просмотров в день select date(timedate)as td, count(distinct ip) from register group by td; -- кол-во уникальных в день... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2013, 17:01:05 |
|
||
|
статистика посещений проектирование базы
|
|||
|---|---|---|---|
|
#18+
Господи, да создай ты один раз партиций до конца века, делов-то... даже если они ежедённые - всё равно всего-то 30 тыс. получится. А так да - если ты явно даёшь в условии отбора дату-литерал, то дёргаться будут исключительно нужные разделы. Этому в мануале специально целый раздел посвящён... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2013, 17:21:24 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38468560&tid=1835697]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
60ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 205ms |
| total: | 356ms |

| 0 / 0 |
