The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Раздел полезных советов: Рекомендации по оптимальному исполь..., auto_tips (ok), 07-Июн-11, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


1. "Рекомендации по оптимальному использованию типов данных в MySQL"  +/
Сообщение от Stax (ok), 07-Июн-11, 14:10 
> IP адреса лучше всего хранить как UNSIGNED INT. И использовать MySQL
> функции INET_ATON() и INET_NTOA()

Вот так и делают новые проекты без поддержки IPv6. Зато сэкономили несколько байт, ура!

Ответить | Правка | Наверх | Cообщить модератору

2. "Рекомендации по оптимальному использованию типов данных в MySQL"  +/
Сообщение от igor (??), 07-Июн-11, 20:13 
Никто не мешает использовать поля вроде BINARY для хранения 128-битных ipv6 адресов...
Ответить | Правка | Наверх | Cообщить модератору

3. "Рекомендации по оптимальному использованию типов данных в MySQL"  +1 +/
Сообщение от Stax (ok), 07-Июн-11, 22:54 
Мешают неразумные люди, следующие советам, не подумав. Советам вроде этих. И лучше всего не давать таких вот сомнительных советов. Ведь храня IP-адрес как строку достаточной длины, проблемы уровня хранения потом не возникнет.

Это вот тоже из серии "вредные советы"
> 3. DATETIME / TIMESTAMP - Используйте TIMESTAMP, он занимает на диске меньше места.

TIMESTAMP совершенно НЕ предназначен для хранения даты, он предназначен для хранения UPDATED/CREATED.. И не надо его использовать для чего-либо другого. Никогда. Пожалуйста!

Из-за таких советов горе-программисты пишут такой код, который считает, что дату можно класть в TIMESTAMP. Ага, два раза. На андроиде в контакт-листе завести день рождения человека до 1970 года невозможно. Ну не рождались тогда, по мнению гугла! Совершенно реальное поле "день рождения", который оптимизаторы запихнули в аналог TIMESTAMP. Я хоть в IT разбираюсь, мне просто смешно. А вот что далекие от IT люди думают по поводу таких вот ограничений, интересно?..

Ответить | Правка | Наверх | Cообщить модератору

4. "Рекомендации по оптимальному использованию типов данных в MySQL"  +/
Сообщение от Анончик (?), 08-Июн-11, 01:37 
[quote]А вот что далекие от IT люди думают по поводу таких вот ограничений, интересно?..[/quote]
"Ух ты".
Ответить | Правка | Наверх | Cообщить модератору

5. "Рекомендации по оптимальному использованию типов данных в MySQL"  +/
Сообщение от ws (ok), 08-Июн-11, 11:18 
> Мешают неразумные люди, следующие советам, не подумав. Советам вроде этих. И лучше
> всего не давать таких вот сомнительных советов. Ведь храня IP-адрес как
> строку достаточной длины, проблемы уровня хранения потом не возникнет.

Не согласен. Достоинства хранения IP в int более предпочтительные (объем хранимых данных,
скорость выборки). А вот недостаток только тот о котором вы говорите, но это решаемо если разработчик оказался недостаточно предусмотрителен (ALTER TABLE...)
Другими словами вы решаете в ущерб оптимизации возможные перспективы...
Так давайте тогда все данные хранить в строковых типах так проще по вашей логике.

Ответить | Правка | К родителю #3 | Наверх | Cообщить модератору

9. "Рекомендации по оптимальному использованию типов данных в MySQL"  +/
Сообщение от Dmitryemail (??), 09-Июн-11, 13:07 
Достоинства хранения (да и вообще представления)ip в int более, чем просто сомнительны. Большинство программ ждут, что ip им будет передан как текстовый тип, некоторые готовы принять 4 бинарных октета, int для ip - экзотика. Да и по здравому размышлению не является он таким типом. Не умножайте сущности.
Ответить | Правка | Наверх | Cообщить модератору

10. "Рекомендации по оптимальному использованию типов данных в MySQL"  +/
Сообщение от ws (ok), 09-Июн-11, 19:15 
> Достоинства хранения (да и вообще представления)ip в int более, чем просто сомнительны.
> Большинство программ ждут, что ip им будет передан как текстовый тип,
> некоторые готовы принять 4 бинарных октета, int для ip - экзотика.
> Да и по здравому размышлению не является он таким типом. Не
> умножайте сущности.

А вы не интересовались как сетевой стек ОС оперирует IP чтобы так утверждать? Да да! Использует все те же целые числа. Так кто плодит сущности?
IP как мы привыкли видеть нужен только для человека - для удобства использования.

Для тех программ (и людей тоже), которые хотят видеть в удобном представлении IP и были придуманы функции INET_ATON(), INET_NTOA() http://dev.mysql.com/doc/refman/5.5/en/miscellaneous-functio...


Ответить | Правка | Наверх | Cообщить модератору

22. "Рекомендации по оптимальному использованию типов данных в MySQL"  +/
Сообщение от Антоним (?), 19-Июн-11, 00:04 
Что вы чушь несёте. Стек использует бинарные строки, но никак не ЗНАКОВЫЕ целые
Ответить | Правка | Наверх | Cообщить модератору

25. "Рекомендации по оптимальному использованию типов данных в MySQL"  +/
Сообщение от ws (ok), 20-Июн-11, 18:46 
> Что вы чушь несёте. Стек использует бинарные строки, но никак не ЗНАКОВЫЕ
> целые

За знаковые я ничего не говорил, а говорил за целы числа! Для вас есть замечательная команда для посвящения:

man inet_pton

И вот цитата из него:
"
AF_INET
              src points to a character string containing an IPv4 network address in dotted-decimal format, "ddd.ddd.ddd.ddd", where  ddd  is  a  decimal
              number  of  up  to  three  digits  in  the  range  0 to 255.  The address is converted to a struct in_addr and copied to dst, which must be
              sizeof(struct in_addr) (4) bytes (32 bits) long.
"

Думаю сами переведете...

Ответить | Правка | Наверх | Cообщить модератору

15. "Рекомендации по оптимальному использованию типов данных в MySQL"  +/
Сообщение от Сергей (??), 17-Июн-11, 03:05 
Сразу видно что не писали ничего серьезного с IP :) Еще одно преимущество это возможность быстрой выборки диапазона, например какие IP входят в определенную подсеть или в определенный диапазон. Делать INET_ATON на каждом поле при выборках хорошо? Мало того я даже MAC-адреса храню в виде INT64 и тоже только из за возможности выбирать диапазоны!
А насчет v6 можно вобще использовать префикс + последние 4 октета в виде того же INT!
Ответить | Правка | К родителю #9 | Наверх | Cообщить модератору

6. "Рекомендации по оптимальному использованию типов данных в MySQL"  +/
Сообщение от angra (ok), 08-Июн-11, 13:41 
>Ведь храня IP-адрес как строку достаточной длины, проблемы уровня хранения потом не возникнет.

И что будет достаточной длиной? Предусмотреть разную длину CHAR для IPv4 и IPv6 абсолютно то же самое, что и предусмотреть правильный размер INT для них же. А если писать с расчетом на светлое будущее, то вообще все нужно в TEXT хранить, вот только в суровом настоящем такой проект жрать место, работать будет как черепаха и до светлого будущего не доживет. Кстати как вы собираетесь сортировать или искать диапазоны IP в текстовом виде да еще сразу с учетом разного представления v6 и v4?

Ответить | Правка | К родителю #3 | Наверх | Cообщить модератору

8. "Рекомендации по оптимальному использованию типов данных в MySQL"  +/
Сообщение от zoonman (ok), 08-Июн-11, 20:27 
Плохо, что нет просто UDF типа данных IP-address. А уж там он хоть IPv8...
Ответить | Правка | Наверх | Cообщить модератору

7. "Рекомендации по оптимальному использованию типов данных в MySQL"  +/
Сообщение от zoonman (ok), 08-Июн-11, 20:25 
Дополню немного:

The TIMESTAMP data type has a range of '1970-01-01 00:00:01' UTC to '2038-01-19 03:14:07' UTC.

The DATETIME type is used when you need values that contain both date and time information. MySQL retrieves and displays DATETIME values in 'YYYY-MM-DD HH:MM:SS' format. The supported range is '1000-01-01 00:00:00' to '9999-12-31 23:59:59'.

RTFM http://dev.mysql.com/doc/refman/5.5/en/datetime.html

Ответить | Правка | К родителю #3 | Наверх | Cообщить модератору

12. "Рекомендации по оптимальному использованию типов данных в MySQL"  +/
Сообщение от Alex (??), 14-Июн-11, 16:13 
>На андроиде в контакт-листе завести день рождения человека до 1970 года невозможно.

Уточните какая версия андроида, т.к. на 2.2.1 вполне нормально заносятся в диапазоне от 1902 до 2036

Ответить | Правка | К родителю #3 | Наверх | Cообщить модератору

16. "Рекомендации по оптимальному использованию типов данных в MySQL"  +/
Сообщение от Stax (ok), 17-Июн-11, 23:29 
2.2.2
Из LG Optimus 2x.
Ответить | Правка | Наверх | Cообщить модератору

13. "Рекомендации по оптимальному использованию типов данных в MySQL"  +/
Сообщение от Axelemail (??), 15-Июн-11, 16:46 
Берём signed int и вполне себе записываем даты < 1.1.1970 как отрицательные числа.
Ответить | Правка | К родителю #3 | Наверх | Cообщить модератору

19. "Рекомендации по оптимальному использованию типов данных в MySQL"  +/
Сообщение от Stax (ok), 17-Июн-11, 23:34 
> Берём signed int и вполне себе записываем даты < 1.1.1970 как отрицательные
> числа.

Не шутите так :) Во-первых, нестандартно, во-вторых, ну выйграете несколько десятилетий - но даты и до этой бывают.

Ответить | Правка | Наверх | Cообщить модератору

27. "Рекомендации по оптимальному использованию типов данных в MySQL"  +/
Сообщение от Сергей (??), 25-Июн-11, 02:15 
Не все пишут программы для работы в Интернет. Есть программы сбора данных для локальных сетей. Использовать IPv6 в этом случае неразумно, а тратить +12 байт впустую просто глупо - будет БД из одних IP.
Ответить | Правка | К родителю #1 | Наверх | Cообщить модератору

28. "Рекомендации по оптимальному использованию типов данных в MySQL"  +/
Сообщение от Дмитрийemail (??), 06-Ноя-15, 03:15 
Вот кстати IPv6 хранить в BINARY(16), есть специальные функции для работы с ними
https://intsystem.org/coding/kak-rabotat-s-ipv6-v-php/

INET6_ATON(expr) и INET6_NTOA(expr), но они доступны с версии MySQL 5.6.3. До этой версии есть специальное расширение.

Ответить | Правка | К родителю #1 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру