RU-домены, часть 2

КПДВ

Всем привет!
Итак, совсем недавно я писал коротенькую заметку с картинками касательно ru-доменов. Все бы хорошо, но мне никак не давало покоя то что эти данные лежат в csv который довольно просто импортнуть в БД и получить еще больше интересных данных.

Под катом мои наблюдения.

Приготовления

Для начала я решил выделить из названий доменов отдельные слова чтобы посчитать их вхождения. Алгоритм прост - отсекаем .ru, а в том что осталось выделяем отдельные слова выкидыванием лишних дефисов.
Отдельно составил вхождения «слов» состоящих из последовательности цифр и отдельно слов без цифр.
То есть получилось 3 файла - full,letter,digit. Где например домен site24.ru попал бы как site24,site и 24 в разные таблицы.

Теперь кроме одного csv под названием ru_domains у меня еще появились fullWord.csv, letterWord.csv и digitWord.csv.

Код сортировщика написан по всем канонам костыльного говнокодинга и приводить его здесь даже стыдно =)

Импорт в БД

Для опытов я создал отдельную БД в MySQL и создал там 4 таблицы - full,letter,digit и original. Первые 3 имеют в себе только по 2 поля - word и count. Это cлово и кол-во его вхождений соответственно.
Таблица original содержит в себе 6 полей - домен, регистратор, дата регистрации, продлен до, дата окончания регистрации и какой-то еще один параметр (ну лень было разбираться).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
LOAD DATA INFILE "/var/www/srv/www/fullWords.csv" INTO TABLE full
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n';

LOAD DATA INFILE "/var/www/srv/www/letterWords.csv" INTO TABLE letter
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n';

LOAD DATA INFILE "/var/www/srv/www/digitWords.csv" INTO TABLE digit
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n';

И отдельно импортируем оригинальный csv с 5млн. записей. Тут заодно конвертируем дату в правильный формат. Данная конструкция отрабатывает на моем ноутбуке за 32 секунды. Так что это и правда быстро.

1
2
3
4
5
6
7
8
9
LOAD DATA INFILE "/var/www/srv/www/ru_domains"
INTO TABLE original
FIELDS TERMINATED BY '\t'
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
(name,reg,@reg_date,@ext_date,@off_date,hz)
SET reg_date = STR_TO_DATE(@reg_date, '%d.%m.%Y') ,
exp_date = STR_TO_DATE(@exp_date, '%d.%m.%Y'),
off_date = STR_TO_DATE(@off_date, '%d.%m.%Y');

Статистика

Ну а теперь я покажу вам свои мэдскиллз в MySQL =)

Начнем с самых популярных слов входящих в название домена:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
+---------+-------+
| word | count |
+---------+-------+
| SHOP | 22940 |
| SPB | 18391 |
| V | 15741 |
| S | 14021 |
| ONLINE | 14011 |
| M | 13854 |
| PRO | 12460 |
| I | 12019 |
| A | 11625 |
| D | 10882 |
| CLUB | 10650 |
| E | 10594 |
| AUTO | 10361 |
| REMONT | 10141 |
| ART | 9757 |
| MEBEL | 9588 |
| DOM | 9333 |
| GROUP | 9128 |
| NN | 8798 |
| SERVICE | 8737 |
| AVTO | 8473 |
| RUS | 8319 |
| RUSSIA | 8310 |
| K | 8070 |
| MSK | 7907 |
| B | 7650 |
| X | 7561 |
| STROY | 7298 |
| C | 7186 |
| INFO | 7120 |
| NA | 7105 |
| U | 6989 |
| STUDIO | 6915 |
| MASTER | 6835 |
| IT | 6817 |
| R | 6762 |
| MARKET | 6562 |
| WEB | 6451 |
| T | 6395 |
| MY | 6143 |
| UFA | 5979 |
| RU | 5737 |
| HOTEL | 5711 |
| NSK | 5699 |
| DESIGN | 5568 |
| N | 5552 |
| O | 5473 |
| BEST | 5391 |
| SCHOOL | 5311 |
| TOP | 5167 |
+---------+-------+

Крепко задумайтесь о выборе домена когда будете делать интернет-магазин.

Цифры не так интересны, поэтому выведу только 20 самых частых вхождений.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
+------+-------+
| word | count |
+------+-------+
| 24 | 41549 |
| 1 | 40014 |
| 2 | 36706 |
| 4 | 36272 |
| 3 | 24932 |
| 5 | 14782 |
| 74 | 13824 |
| 7 | 13116 |
| 72 | 8494 |
| 8 | 7626 |
| 21 | 7014 |
| 63 | 7007 |
| 33 | 6764 |
| 66 | 6526 |
| 0 | 6422 |
| 39 | 6130 |
| 6 | 5923 |
| 100 | 5763 |
| 9 | 5641 |
| 34 | 5587 |
+------+-------+

Крепко призадумайтесь если собираетесь делать круглосуточный интернет-магазин.

Теперь посмотрим на 10 самых длинных доменов в зоне ru.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
SELECT * FROM original ORDER BY LENGTH(name) DESC LIMIT 20;
+--------------------------------------------------------------------+--------------+------------+------------+------------+----+
| name | reg | reg_date | exp_date | off_date | hz |
+--------------------------------------------------------------------+--------------+------------+------------+------------+----+
| 0--0----------------------------------------------------------0.RU | REGRU-RU | 2015-11-18 | 2016-04-27 | 2016-12-19 | 1 |
| 0--0--------------------------ROSSIYSKY--------------------0--0.RU | REGRU-RU | 2015-10-30 | 2016-04-27 | 2016-11-30 | 1 |
| 0--0------------------0----0----------0-------0---------------0.RU | REGRU-RU | 2015-12-23 | 2016-04-27 | 2017-01-23 | 0 |
| 0--0------------MAXIM--SEMENOV--KISLOVODSK--NARZAN------------0.RU | REGRU-RU | 2015-02-24 | 2016-04-27 | 2017-03-27 | 1 |
| 0--0--------DRA-DOT-RU-PREMIUM-DOMAINS-AND-SERVICES-----------0.RU | REGRU-RU | 2011-03-24 | 2016-04-27 | 2016-04-24 | 1 |
| 0--0-HOSTING-OBZOR--HOSTING-OBZOR--HOSTING-OBZOR--HOSTING-OBZOR.RU | REGTIME-RU | 2009-11-09 | 2016-04-27 | 2016-12-10 | 1 |
| 0-1-1-2-3-5-8-13-21-34-55-89-144-233-377-610-987-1597-2584-4181.RU | REGRU-RU | 2011-04-11 | 2016-04-27 | 2016-05-12 | 1 |
| 000000000000000000000000000000000000000000000000000000000000000.RU | RU-CENTER-RU | 2008-05-21 | 2016-04-27 | 2016-06-21 | 1 |
| 000000000000000000000000000000000000000000000000000000000000999.RU | REGRU-RU | 2014-07-10 | 2016-04-27 | 2016-08-10 | 1 |
| 141592653589793238462643383279502884197169399375105820974944592.RU | RU-CENTER-RU | 2005-04-13 | 2016-04-27 | 2016-05-14 | 1 |
| 314159265358979323846264338327950288419716939937510582097494459.RU | R01-RU | 2010-10-25 | 2016-04-27 | 2016-11-25 | 1 |
| 333333333333333333333333333333333333333333333333333333333333333.RU | REGTIME-RU | 2010-07-31 | 2016-04-27 | 2016-08-31 | 1 |
| 999999999999999999999999999999999999999999999999999999999999999.RU | RU-CENTER-RU | 2008-05-16 | 2016-04-27 | 2016-06-16 | 1 |
| 9E9999999999999999999999999999999999999999999999999999999999999.RU | RU-CENTER-RU | 2008-05-26 | 2016-04-27 | 2016-06-26 | 1 |
| AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.RU | R01-RU | 2010-12-10 | 2016-04-27 | 2017-01-10 | 1 |
| ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJK.RU | REGRU-RU | 2013-04-04 | 2016-04-27 | 2016-05-05 | 1 |
| ARTVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV3.RU | NAUNET-RU | 2013-10-25 | 2016-04-27 | 2016-11-25 | 1 |
| AUTH-PRIVATBANK-UA-PROMINSHEL-CONFIRM-START-PRIVATBANK-REDIRECT.RU | REGRU-RU | 2015-05-22 | 2016-04-27 | 2016-06-22 | 1 |
| AUTH-PRIVATBANK-UA-PROMINSHELL-ENTER-REDIRECT-FSTART-PRIVATBANK.RU | REGRU-RU | 2015-05-18 | 2016-04-27 | 2016-06-18 | 1 |
| AXAXAXAXAXAXAXAXAXAXAXAXAXAXAXAXAXAXAXAXAXAXAXAXAXAXAXAXAXAXAXA.RU | REGRU-RU | 2011-08-07 | 2016-04-27 | 2016-09-07 | 1 |
+--------------------------------------------------------------------+--------------+------------+------------+------------+----+

Из всего этого списка мне больше всех понравился разве что самый «смешной» домен с многочисленным «AXAXAXAXA» =). По этому адресу нас встречает какая-то странная картинка и счетчик liveinternet.

Самые короткие рушки начинаются от 2 символов и они абсолютно все заняты:

1
2
3
4
5
6
SELECT COUNT(*) FROM original WHERE LENGTH(name) = 5;
+----------+
| COUNT(*) |
+----------+
| 1296 |
+----------+

Но сегодня один домен освобождается и я попробую успеть его застолбить ).

Кстати, конкретно сегодня освобождается вот такое кол-во доменов:

1
2
3
4
5
6
SELECT COUNT(*) FROM original WHERE off_date='2016-01-20';
+----------+
| COUNT(*) |
+----------+
| 3455 |
+----------+

Теперь посмотрим на 20 самых старых доменов в зоне ru:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
SELECT * FROM original ORDER BY reg_date ASC LIMIT 20;
+--------------+--------------+------------+------------+------------+----+
| name | reg | reg_date | exp_date | off_date | hz |
+--------------+--------------+------------+------------+------------+----+
| NOSTALGIE.RU | REGRU-RU | 1996-09-04 | 2016-04-27 | 2016-11-01 | 1 |
| BAIKAL.RU | RU-CENTER-RU | 1996-09-10 | 2016-04-27 | 2016-11-01 | 1 |
| CIG.RU | RU-CENTER-RU | 1996-09-10 | 2016-04-27 | 2016-11-01 | 0 |
| ALCATEL.RU | RU-CENTER-RU | 1996-09-11 | 2016-04-27 | 2016-11-01 | 1 |
| ORENBURG.RU | RU-CENTER-RU | 1996-09-11 | 2016-04-27 | 2016-11-01 | 1 |
| PERM.RU | RU-CENTER-RU | 1996-09-11 | 2016-04-27 | 2016-11-01 | 1 |
| ORGLAND.RU | RU-CENTER-RU | 1996-09-13 | 2016-04-27 | 2016-11-01 | 1 |
| CTINET.RU | RU-CENTER-RU | 1996-09-13 | 2016-04-27 | 2016-11-01 | 1 |
| DELTA.RU | RU-CENTER-RU | 1996-09-13 | 2016-04-27 | 2016-11-01 | 1 |
| SIMPLEX.RU | RU-CENTER-RU | 1996-09-13 | 2016-04-27 | 2016-11-01 | 1 |
| SOFTLINE.RU | RU-CENTER-RU | 1996-09-13 | 2016-04-27 | 2016-11-01 | 1 |
| MERA.RU | RU-CENTER-RU | 1996-09-14 | 2016-04-27 | 2016-11-01 | 1 |
| A800.RU | RU-CENTER-RU | 1996-09-14 | 2016-04-27 | 2016-11-01 | 1 |
| KIS.RU | RU-CENTER-RU | 1996-09-14 | 2016-04-27 | 2016-11-01 | 1 |
| IDM.RU | RU-CENTER-RU | 1996-09-15 | 2016-04-27 | 2016-11-01 | 1 |
| INPRO.RU | RU-CENTER-RU | 1996-09-15 | 2016-04-27 | 2016-11-01 | 1 |
| MVKS.RU | ELVIS-RU | 1996-09-15 | 2016-04-27 | 2016-11-01 | 1 |
| TMN.RU | RU-CENTER-RU | 1996-09-15 | 2016-04-27 | 2016-11-01 | 1 |
| VVNB.RU | REGRU-RU | 1996-09-15 | 2016-04-27 | 2016-11-01 | 1 |
| VIMCOM.RU | RU-CENTER-RU | 1996-09-16 | 2016-04-27 | 2016-11-01 | 1 |
+--------------+--------------+------------+------------+------------+----+

Социальные сети

Посмотрим сколько доменов имеет прямое вхождение с названием одной из известных соцсетей:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
SELECT COUNT(*) FROM original WHERE name LIKE '%periscope%';
+----------+
| COUNT(*) |
+----------+
| 163 |
+----------+

SELECT COUNT(*) FROM original WHERE name LIKE '%instagram%';
+----------+
| COUNT(*) |
+----------+
| 332 |
+----------+

SELECT COUNT(*) FROM original WHERE name LIKE '%insta%';
+----------+
| COUNT(*) |
+----------+
| 3733 |
+----------+

SELECT COUNT(*) FROM original WHERE name LIKE '%vkontakte%';
+----------+
| COUNT(*) |
+----------+
| 447 |
+----------+

SELECT COUNT(*) FROM original WHERE name LIKE '%telegram%';
+----------+
| COUNT(*) |
+----------+
| 98 |
+----------+

Не так уж и много как оказалось.

Ну и под конец немного Ульяновска.

Ульяновские домены

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
SELECT COUNT(*) FROM original WHERE name LIKE '%ulsk%';
+----------+
| COUNT(*) |
+----------+
| 186 |
+----------+

SELECT COUNT(*) FROM original WHERE name LIKE 'ul-%';
+----------+
| COUNT(*) |
+----------+
| 293 |
+----------+

SELECT COUNT(*) FROM original WHERE name LIKE '%-ul.ru';
+----------+
| COUNT(*) |
+----------+
| 300 |
+----------+

SELECT COUNT(*) FROM original WHERE name LIKE '%73.ru';
+----------+
| COUNT(*) |
+----------+
| 4222 |
+----------+

И с большим отрывом суффикс 73 обгоняет всевозможные вариации с ul.
Казалось бы, это всего лишь цифры из списка субъектов РФ для автомобильных номеров. Но каждый ульяновец знает что по адресу rosstroymehcement73.ru нас будет ожидать ульяновский сайт =)

UPD:
После важного комментария в Fb добавил к сравнению также вот такой вариант без дефиса:

1
2
3
4
5
6
SELECT COUNT(*) FROM original WHERE name LIKE 'ul%';
+----------+
| COUNT(*) |
+----------+
| 5852 |
+----------+

Тогда получается что такой вариант легко обходит даже сумму первых вариантов с префиксом с суффиксом 73. Не все конечно к Ульяновску относится, но все равно так точнее =)

P.S.

Для тех кто дочитал эту длинную телегу есть приятный бонус - SQL-база актуальная на сегодня.
Там еще много всего интересного. А еще можно строить графики.