powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / String constants vs int
25 сообщений из 95, страница 2 из 4
String constants vs int
    #39818276
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatHett,

А в чем, в общем-то, преимущество хранения в бинарном виде, кроме размера поля?
В строгой типизации, блиат
...
Рейтинг: 0 / 0
String constants vs int
    #39818277
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Свеженький пример 21893157
...
Рейтинг: 0 / 0
String constants vs int
    #39818281
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglСвеженький пример 21893157
И при чем тут типизация. Точно так же можно куда-нибудь сохранить вполне себе строготипизированные 8 байтов, а потом рвать волосы на джоппе, что они никак обратно на такие же строготипизированные 4 байта не натягиваются.
...
Рейтинг: 0 / 0
String constants vs int
    #39818283
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для Mongo нет выделенного типа данных Ipv4, Ipv6.

Все равно придется строкой хранить.
...
Рейтинг: 0 / 0
String constants vs int
    #39818284
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonДля Mongo нет выделенного типа данных Ipv4, Ipv6.

Все равно придется строкой хранить.

Binary еще не проходили?
...
Рейтинг: 0 / 0
String constants vs int
    #39818292
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HettmaytonДля Mongo нет выделенного типа данных Ipv4, Ipv6.

Все равно придется строкой хранить.

Binary еще не проходили?
Покажите как вы будете с этим Binary работать на примере в Mongo.
Создайте несколько документов с полем IPv6-Binary. И положите туда к примеру такие адреса:

Код: sql
1.
2.
3.
4.
::1 
fe80::f42:c2c3:d57:ce60
::192.168.0.1
ff00:: 



Я хочу посмотреть какие усилия вы на это потратите.

P.S. Нет ничего лучше чем постижение истины в примерах.
...
Рейтинг: 0 / 0
String constants vs int
    #39818294
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonСоздайте несколько документов с полем IPv6-Binary. И положите туда к примеру такие адреса:
Хм. А в чём проблема?
...
Рейтинг: 0 / 0
String constants vs int
    #39818296
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просто хочу посмотреть вариант с строковым типом и с Binary.
...
Рейтинг: 0 / 0
String constants vs int
    #39818300
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonПросто хочу посмотреть вариант с строковым типом и с Binary.
Я в жизни не видел Mongo, возможно, там какая-то специфика, а из общего представления о binary не вижу в задаче никаких сложностей. Скорее я бы посмотрел, как Вы в случае строковой реализации выдадите правильный результат сравнения адресов ::1 , 0::1 и 0::0::1.
...
Рейтинг: 0 / 0
String constants vs int
    #39818306
Фотография vikkiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer...Я в жизни не видел Mongo... https://www.jdoodle.com/online-mongodb-terminal
если есть интерес то для string варианта скопируй туда
Код: sql
1.
2.
3.
4.
5.
6.
7.
version();
db.ips.insert({_id:"::1"});
db.ips.insert({_id:"fe80::f42:c2c3:d57:ce60"});
db.ips.insert({_id:"::192.168.0.1"});
db.ips.insert({_id:"ff00::"});
db.ips.find();
db.ips.drop()
...
Рейтинг: 0 / 0
String constants vs int
    #39818314
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerСкорее я бы посмотрел, как Вы в случае строковой реализации выдадите правильный результат сравнения адресов ::1 , 0::1 и 0::0::1.

Просто нормализовывать все входные данные перед использованием. Я не топлю за то, чтобы прямо хранить IP как строку, и никак больше. Как уже писали, все должно зависеть от задачи. Можно, наверное, придумать ситуации, когда его вообще лучше по отдельным полям раскидать.
...
Рейтинг: 0 / 0
String constants vs int
    #39818315
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Я хочу посмотреть какие усилия вы на это потратите.

P.S. Нет ничего лучше чем постижение истины в примерах.


PHP

Код: php
1.
new MongoBinData(inet_pton($ip), MongoBinData::GENERIC)




Java

Код: java
1.
2.
3.
4.
5.
       
import org.bson.types.Binary;
         

new Binary(session.getIp().getAddress())
...
Рейтинг: 0 / 0
String constants vs int
    #39818316
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это с чем я работал (и как). В монгошелле вы конечно не найдете, но это опять же к вопросу зачем в бд лазить руками.
...
Рейтинг: 0 / 0
String constants vs int
    #39818317
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HettЭто с чем я работал (и как). В монгошелле вы конечно не найдете, но это опять же к вопросу зачем в бд лазить руками.

Когда-то я даже задавался такими вопросами
https://stackoverflow.com/questions/28537599/get-mongobindata-value-from-mongo-shell
...
Рейтинг: 0 / 0
String constants vs int
    #39818318
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer 0::0::1.
Сокращение в адресе может быть только одно.
...
Рейтинг: 0 / 0
String constants vs int
    #39818319
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatПросто нормализовывать все входные данные перед использованием.
Но ведь нормализация - это по сути to_text(to_binary(string_value)). То есть такой ответ означает, что положить туда "такие адреса" не сложнее, чем любые другие.
...
Рейтинг: 0 / 0
String constants vs int
    #39818340
alex55555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatв теории guid в четыре раза меньше, но на практике разницы именно из-за размера никакой.
И на практике разница может быть 4 раза, и даже может быть 1000 раз. Если в память помещается весь индекс с интами, а с гуидами нет, например.
...
Рейтинг: 0 / 0
String constants vs int
    #39818377
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vikkivsoftwarer...Я в жизни не видел Mongo... https://www.jdoodle.com/online-mongodb-terminal
если есть интерес то для string варианта скопируй туда
Код: sql
1.
2.
3.
4.
5.
6.
7.
version();
db.ips.insert({_id:"::1"});
db.ips.insert({_id:"fe80::f42:c2c3:d57:ce60"});
db.ips.insert({_id:"::192.168.0.1"});
db.ips.insert({_id:"ff00::"});
db.ips.find();
db.ips.drop()


Здесь у меня будет несколько дополнений. По юзкейсу. Использовать IPv6 поле как ObjectId. Скорее всего неверно.
Мой юзкейс предполагает что Ipv6 - это атрибут документа. А не уникальный ключ типа Objectid. В качестве вышеуказанного
лучше использовать встроенные в Mongo генераторы которые обеспечат правильный уникальный ключ.

Если конечно мы не делаем базу для обратного nslookup.
...
Рейтинг: 0 / 0
String constants vs int
    #39818384
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HettmaytonЯ хочу посмотреть какие усилия вы на это потратите.

P.S. Нет ничего лучше чем постижение истины в примерах.


PHP

Код: php
1.
new MongoBinData(inet_pton($ip), MongoBinData::GENERIC)




Java

Код: java
1.
2.
3.
4.
5.
       
import org.bson.types.Binary;
         

new Binary(session.getIp().getAddress())


Типизацию я поддерживаю. Как способ strong check данных на входе и на выходе. Но из личного опыта использования
баз данных я остаюсь убежден в том что строковый формат представления информации на сегодняшний день является
наиболее удобным и универсальным.

Если-бы было наоборот - то в монго мы бы вставляли просто Java-serialized объекты в Externalized или Serialized формате как
в key-value db. Но это не происходит. На практике мы всё равно используем BSON-дерево из различных типов большая часть
всё равно строковые (именно в силу природы вещей, или в силу входных данных). Более того. Все новые. Неизвестные
и неидентифицированные входные данные 99% будут строками. Такой-вот либерализм этой модели.

Строгая типизация всего документа скорее всего противоречила-бы самой идее Mongo-документа или навязывала-бы нам
другое техническое задание где был-бы не Mongo-двигатель а какой-нибудь RDBMS.

Либеральный тип sting даст нам возможность залоггировать IPv4, IPv6, domain-name и более широкий спектр значений.
А проверки на домен значений мы можем сделать на клиенте.

По поводу экономии места и т.п.

Мы живём в эпоху BigData и носителей информации которые стоят меньше цента за мегабайт. И разумно думать скорее
об удобстве программирования и использования. Никто вас не похвалит за экономию 96 (128 - 32 = 96bit) бит информации
за каждый документ. (Да я еще раз делаю упор именно на документ. А документ это порция информации заведомо больше
чем data-row для key-value. Я вангую что документ обычно начинаетяс от 1 килобайта информации)

А вот проблемы при отчотах (два поля для IPv4, IPv6) или кастинг на map-reduce операциях

IPv6 (кстати) при грамотном распределении блоков позволит кстати экономить место на нулях в нотации записи адреса.

Линки по теме
https://docs.mongodb.com/manual/reference/bson-types/#objectid
http://www.ciscopress.com/articles/article.asp?p=2803866
...
Рейтинг: 0 / 0
String constants vs int
    #39818396
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex55555fkthatв теории guid в четыре раза меньше, но на практике разницы именно из-за размера никакой.
И на практике разница может быть 4 раза, и даже может быть 1000 раз. Если в память помещается весь индекс с интами, а с гуидами нет, например.

Для MSSQL если индекс кластерный, то пофиг - потому что там кластерный индекс это вся таблица. Как в других БД я не знаю. И я не бог весть как DBA (не моя сфера), но как-то с трудом представляю, чтобы 4-байтовый индекс в память залез, а вот уже 16-байтовый никак - это, наверное, надо как-то совсем уж на краю лимита памяти балансировать. Проблема с производительностью там возникает cовсем в другом - когда по незнанию используют для кластерного индекса обычный guid, а не "sequential".
...
Рейтинг: 0 / 0
String constants vs int
    #39818398
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonvikkivпропущено...
https://www.jdoodle.com/online-mongodb-terminal
если есть интерес то для string варианта скопируй туда
Код: sql
1.
2.
3.
4.
5.
6.
7.
version();
db.ips.insert({_id:"::1"});
db.ips.insert({_id:"fe80::f42:c2c3:d57:ce60"});
db.ips.insert({_id:"::192.168.0.1"});
db.ips.insert({_id:"ff00::"});
db.ips.find();
db.ips.drop()


Здесь у меня будет несколько дополнений. По юзкейсу. Использовать IPv6 поле как ObjectId. Скорее всего неверно.
Мой юзкейс предполагает что Ipv6 - это атрибут документа. А не уникальный ключ типа Objectid. В качестве вышеуказанного
лучше использовать встроенные в Mongo генераторы которые обеспечат правильный уникальный ключ.

Если конечно мы не делаем базу для обратного nslookup.

А где здесь ObjectId? Просто строку вставили в качестве _id. Никакого ObjectId здесь нет и в помине.
...
Рейтинг: 0 / 0
String constants vs int
    #39818400
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hettmaytonпропущено...

Здесь у меня будет несколько дополнений. По юзкейсу. Использовать IPv6 поле как ObjectId. Скорее всего неверно.
Мой юзкейс предполагает что Ipv6 - это атрибут документа. А не уникальный ключ типа Objectid. В качестве вышеуказанного
лучше использовать встроенные в Mongo генераторы которые обеспечат правильный уникальный ключ.

Если конечно мы не делаем базу для обратного nslookup.

А где здесь ObjectId? Просто строку вставили в качестве _id. Никакого ObjectId здесь нет и в помине.
Вы - специалист в MongoDb?
...
Рейтинг: 0 / 0
String constants vs int
    #39818404
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Тут мне вспоминается текст из Бородино:

> Земля тряслась — как наши груди,
> Смешались в кучу кони, люди,

Это же надо было так все в кучу намешать.


maytonТипизацию я поддерживаю. Как способ strong check данных на входе и на выходе. Но из личного опыта использования
баз данных я остаюсь убежден в том что строковый формат представления информации на сегодняшний день является
наиболее удобным и универсальным.
Надеюсь числа не храните в строках? А то напридумывали всяких форматов с плавающей точкой, проще в строке сохранить, а потом на яве сразу передать эту строку в конструктор BigDecimal, да?


maytonЕсли-бы было наоборот - то в монго мы бы вставляли просто Java-serialized объекты в Externalized или Serialized формате как key-value db.

Да вставляйте, кто не дает то. Если вы не видите причин чтобы так не делать, то делайте.

mayton Но это не происходит. На практике мы всё равно используем BSON-дерево из различных типов большая часть
всё равно строковые (именно в силу природы вещей, или в силу входных данных). Более того. Все новые. Неизвестные
и неидентифицированные входные данные 99% будут строками. Такой-вот либерализм этой модели.
Что у вас там за неидентифицированные данные?


maytonСтрогая типизация всего документа скорее всего противоречила-бы самой идее Mongo-документа или навязывала-бы нам
другое техническое задание где был-бы не Mongo-двигатель а какой-нибудь RDBMS.

Строгая типизация это что такое?
Вообще в монге есть валидация схемы, но вы про не знали конечно https://docs.mongodb.com/manual/core/schema-validation/
По вашему, получается, монга противоречива самой себе? Да и не пойму я полета вашей мысли, у вас одно и то же поле в пределах коллекции может от документа к документу типы менять?

maytonЛиберальный тип sting даст нам возможность залоггировать IPv4, IPv6, domain-name и более широкий спектр значений.
А проверки на домен значений мы можем сделать на клиенте.

Да это понятно, что можно. Тут вопрос не в том, что можно, а в том как лучше.
При поиске по коллекции тоже будете ее на клиенте перебирать?

maytonМы живём в эпоху BigData и носителей информации которые стоят меньше цента за мегабайт. И разумно думать скорее
об удобстве программирования и использования. Никто вас не похвалит за экономию 96 (128 - 32 = 96bit) бит информации
за каждый документ. (Да я еще раз делаю упор именно на документ. А документ это порция информации заведомо больше
чем data-row для key-value. Я вангую что документ обычно начинаетяс от 1 килобайта информации)
А вот проблемы при отчотах (два поля для IPv4, IPv6) или кастинг на map-reduce операциях

Вы вроде в разделе Java завсегдатый, а что такое биг-дейта не знаете? Зачем ее сюда приплетать, какое отношение она имеет к вопросу о способе хранения данных в монге? Или вы хедупом будете потом записанный ранее " IPv4, IPv6, domain-name и более широкий спектр значений" искать по коллекции с непонятными полями?
Более того, тут в топике уже не раз написали о том, что проблема не столько в дисковом пространстве, сколько в ОЗУ, в которой индекс загружен. И экономию в битах измерять, это весьма странно? А индекс посчитали? А если их несколько? Откуда информация про 1 килобайтный размер документа вообще?

maytonIPv6 (кстати) при грамотном распределении блоков позволит кстати экономить место на нулях в нотации записи адреса.


Вот рандомный IPv6 адрес 2a02:810c:1bf:b204:f142:ca18:6b06:484b
Чтобы не быть голословным, продемонстрируйте пожалуйста, как вы грамотно блоки распределите для экономии?
...
Рейтинг: 0 / 0
String constants vs int
    #39818405
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonHettпропущено...


А где здесь ObjectId? Просто строку вставили в качестве _id. Никакого ObjectId здесь нет и в помине.
Вы - специалист в MongoDb?

Что подразумевается под "специалист"? Больше 5 лет я с ней работаю. Вы так на вопрос то и не ответили, где ObjectId? Не съезжате с темы, уважаемый.
...
Рейтинг: 0 / 0
String constants vs int
    #39818447
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hettmaytonпропущено...

Вы - специалист в MongoDb?

Что подразумевается под "специалист"? Больше 5 лет я с ней работаю. Вы так на вопрос то и не ответили, где ObjectId? Не съезжате с темы, уважаемый.
Отлично. Я ждал этого. Тогда почему был использован
Код: javascript
1.
{_id:"fe80::f42:c2c3:d57:ce60"} 


?
вместо
Код: javascript
1.
{ipv6:"fe80::f42:c2c3:d57:ce60"}


Это - дизайн будущей БД. И любое действие надо обосновывать.
...
Рейтинг: 0 / 0
25 сообщений из 95, страница 2 из 4
Форумы / Программирование [игнор отключен] [закрыт для гостей] / String constants vs int
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]