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

Код: plaintext
1.
2.
3.
const STATE_ACCEPTED = 10;
const STATE_REJECTED = 20;
const STATE_UNKNOWN = 30;

Данные хранятся в mongodb, которая не имеет ENUM типов, поэтому решил использовать числовые для более оптимальной работы СУБД. Так я делал всегда и думал, что это правильно. Но недавно в команде появился человек, которого очень смутило то, что константы числовые и анализировать базу данных ему не удобно (он не аналитик, он программист), типа с текстовыми было бы проще.

Лично я считаю, что база данных в первую очередь для приложения, а не человека и должна быть оптимизирована под работу приложения. А если нужно раз в год туда залезти что-то посмотреть, то можно и в коде подсмотреть значения констант.

Ну и отдельный разговор, почему 10-20-30, а не 1-2-3. У меня была какая-то мысль, что при таком подходе можно добавить константу "между" существующих, это касается только лаконичности кода.

Что думаете?
...
Рейтинг: 0 / 0
String constants vs int
    #39817615
KreatorXXI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hett,

дело вкуса. С одной стороны оперировать числами не удобно (лучше видеть описание констант). С другой стороны проблема быстродействия. Mongo всё равно - строка или число?
...
Рейтинг: 0 / 0
String constants vs int
    #39817622
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KreatorXXIHett,

дело вкуса. С одной стороны оперировать числами не удобно (лучше видеть описание констант). С другой стороны проблема быстродействия. Mongo всё равно - строка или число?

Количество данных в любом случае больше. Можно использовать 32-битный интерджер (4 байта), с другой стороны получается 8 символов, даже точно не уверен, сколько это займет памяти. Думаю как минимум байт 12 (4 под длину, + 2 байта на каждый символ?).
Как это будет в индексах выглядеть тоже большой вопрос. Особенно если поле участвует в нескольких составных индексах.
...
Рейтинг: 0 / 0
String constants vs int
    #39817625
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Думаю римские цифры были бы нагляднее,
сразу же видно сколько там палок: одна, две, или три.

Хотя бухгалтер во мне, гад, просит сумму прописью.
...
Рейтинг: 0 / 0
String constants vs int
    #39817660
alex55555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hettтипа с текстовыми было бы проще
Дай ему таблицу с кодами и названиями, ну и пусть дальше сам джойнит, раз нравится. Заодно справочник констант сделаешь.
...
Рейтинг: 0 / 0
String constants vs int
    #39817671
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex55555Hettтипа с текстовыми было бы проще
Дай ему таблицу с кодами и названиями, ну и пусть дальше сам джойнит, раз нравится. Заодно справочник констант сделаешь.

Программист жеж, знает где найти константы.
...
Рейтинг: 0 / 0
String constants vs int
    #39817681
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HettНу и отдельный разговор, почему 10-20-30, а не 1-2-3. У меня была какая-то мысль, что при таком подходе можно добавить константу "между" существующих, это касается только лаконичности кода.

Что думаете?
Я не знаток Монго. Но обычно с точки зрения баз данных - решительно пофиг какие ключи хранить. Числа
и строки (CHAR/VARCHAR) имеют почти одинаковые накладные расходы на хранение. Числа нужны только
для sequence.

Если интересует эстетика - то я-бы предложил завести краткие натуральние STATE KEYS. Типа

Код: sql
1.
2.
3.
const STATE_ACCEPTED = "A";
const STATE_REJECTED = "R";
const STATE_UNKNOWN = "U";


Это даст возможность писать mongo queries "по памяти". Тоесть не заглядывае в справочник.
Про экономию места не стоит беспокоиться. Ключи на фоне ихнего binary-json будут каплей в море.

Вставлять промежуточные значения между ключами - это старая идея как из Бейсика. Типа ключ с номером 15
будет по рангу стоять между STATE_ACCEPTED и STATE_REJECTED. Но какой в этом смысл? Если в системе эти ранги есть.
Если нет - то пофиг.
...
Рейтинг: 0 / 0
String constants vs int
    #39817717
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поддержу предыдущего оратора. Если нет нужды сравнивать на больше-меньше, то строки удобнее. Оверхед на строку в 8 символов (а это в среднем даже меньше чем размер GUID) по сравнению с целым числом ничтожен, будь это хоть монго, хоть какая-нибудь другая БД. Дотнетовский драйвер для монго позволяет настроить сериализацию enum-ов - cохранять их числом или строкой.
...
Рейтинг: 0 / 0
String constants vs int
    #39817729
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поди еще айпи адреса текстом храните?
...
Рейтинг: 0 / 0
String constants vs int
    #39817737
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hett,

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

Почему бы нет. Его обязательно в int паковать - без этого никак? Так можно вообще всю запись целиком в один binary упаковать и так хранить - представляешь, какая экономия будет.

Зачем фантазируете? Давайте тогда объект в джесон завернем и сохраним в varchar? Я могу тоже какую-нибудь чушь сморозить, будем в остроумии соревноваться?

По существу: ip в int и даже в bitint уже не пакуются давно в свете появления ipv6.
А разница в том, сколько памяти будет израсходовано, особенно если это поле присутствует в нескольких индексах. Часто используемые индексы тем более в ОЗУ желательны.

ps^ Я не говорю про поиск в подсетях, тут то даже спорить было бы не о чем. Допустим это нам точно не понадобится.
...
Рейтинг: 0 / 0
String constants vs int
    #39817756
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hett,

А если у меня IP только в целях логирования/аудита хранится - мне его тоже в бинарном виде хранить надо для экономии? Кстати, не знаю где как, но MSSQL уже поддерживает json поля, а поля с XML так вообще уже почти 15 лет как.
...
Рейтинг: 0 / 0
String constants vs int
    #39817761
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatHett,

А если у меня IP только в целях логирования/аудита хранится - мне его тоже в бинарном виде хранить надо для экономии? Кстати, не знаю где как, но MSSQL уже поддерживает json поля, а поля с XML так вообще уже почти 15 лет как.

Это IP - это не фрагмент текста и хранится в отдельном поле, то почему бы не хранить его в бинарном виде?
...
Рейтинг: 0 / 0
String constants vs int
    #39817864
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hett,

А в чем, в общем-то, преимущество хранения в бинарном виде, кроме размера поля?
...
Рейтинг: 0 / 0
String constants vs int
    #39817868
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
90% надо смотреть от юзкейса. Если например мы храним целый инстаграм картинок - то разумно брать BLOB
или внешнее файловое хранение.

Для IP адресов. Ну … если 99% они используются для печати в лог-файле (а там они представлены в принтабельнов виде)
то можно сразу их складывать в строку. Или для поисковых операций по документу. Где в сущности строки даже легче.
Всё как-то гомогенно получается.

Хранить как int в документно-ориентированной БД... ну не знаю. Рискну предположить что будет польза будет варироваться
от "никакой пользы" до "ненужные преобразования для прочтения человеком на экране".
...
Рейтинг: 0 / 0
String constants vs int
    #39817872
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton90% надо смотреть от юзкейса.
+100500
...
Рейтинг: 0 / 0
String constants vs int
    #39818138
alex55555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatА в чем, в общем-то, преимущество хранения в бинарном виде, кроме размера поля?
Размер влияет на потребление памяти, а память влияет на скорость работы. Поэтому пари меньшем размере больше индексов в память поместится, значит в среднем будет больше скорость. Плюс само сравнение узлов в дереве быстрее для Int делать, нежели для строки - опять ускорение. Плюс коррекция данных, то есть либо они парсятся в int, либо нет, своего рода валидация.

Хотя да, можно забить на всё это. Но такую привычку лучше не тренировать.
...
Рейтинг: 0 / 0
String constants vs int
    #39818151
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex55555,

Да эта тема "int vs guid" обжевана повсюду уже мульон раз - в теории guid в четыре раза меньше, но на практике разницы именно из-за размера никакой.
...
Рейтинг: 0 / 0
String constants vs int
    #39818155
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"в четыре раза больше", конечно.
...
Рейтинг: 0 / 0
String constants vs int
    #39818158
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat"в четыре раза больше", конечно.у кого как, некоторые хранят guid-ы в VARCHAR(36) в виде строки '22345200-abe8-4f60-90c8-0d43c5f6c0f6'.
...
Рейтинг: 0 / 0
String constants vs int
    #39818159
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatalex55555,

Да эта тема "int vs guid" обжевана повсюду уже мульон раз - в теории guid в четыре раза меньше, но на практике разницы именно из-за размера никакой.
GUID используется в распределённых и JMS системах где вам нужно гарантировать уникальность ключа
при отсутствии глобального распределённого объекта типа sequence. Поэтому выбор GUID - это не "количественный"
а архитектурный выбор.

На интах вы такое не сможете построить.
...
Рейтинг: 0 / 0
String constants vs int
    #39818194
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftfkthat"в четыре раза больше", конечно.у кого как, некоторые хранят guid-ы в VARCHAR(36) в виде строки '22345200-abe8-4f60-90c8-0d43c5f6c0f6'.

Эти некоторые уже выше отписались. Если IP хранят в виде строки, то GUID/UUID аналогично, подозреваю.
...
Рейтинг: 0 / 0
String constants vs int
    #39818196
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это я к тому, что если уж говорить про эти ваши GUID/UUID, то опять же в том контексте, как его хранить, бинарно (с обертками субд) или строкой. А сравнивать его с Int смысла нет, думаю это очевидно.
...
Рейтинг: 0 / 0
String constants vs int
    #39818243
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HettЧто думаете?
В принципе, мнемокоды, конечно, более наглядны, нежели числа - скажем, RUB понятнее, чем 643, да и поле GENDER с возможными значениями 0/1 не сказать чтобы сверхудобно. С другой стороны, числа удобны тем, что в них существует логичный порядок - это иногда удобно применять, например, для статусов, а в булёвых полях - коих обычно больше, чем всех остальных вместе взятых - 0/1 не требуют гадать, записать ли туда 'Y', 'y', 'yes' или 'да', да и расширение числовых вариантов новыми значениями обычно проходит проще (скажем, если в поле GENDER нужно добавить ещё нейтралов и трансгендеров).

В общем, это больше вопрос вкусов - можно так, можно эдак, но нужно выбрать цельную концепцию, использовать её и адекватно документировать, тогда ни у кого не будет проблем. Всего лишь

Код: plsql
1.
2.
3.
4.
5.
6.
7.
SQL> desc dm_lineup

Name         Type       Nullable Default Comments                                                                 
------------ ---------- -------- ------- ------------------------------------------------------------------------ 
OBJ_VER_CODE NUMBER(30)                  # Первичный ключ                                                         
MAP_CODE     NUMBER(30)                  # Карта                                                                  
STATUS       NUMBER(1)           0       Состояние (0 - к выполнению, 1 - выполнена, 2 - не выполнена и не будет) 


и ни у кого не возникает вопросов.

maytonНо обычно с точки зрения баз данных - решительно пофиг какие ключи хранить. Числа
и строки (CHAR/VARCHAR) имеют почти одинаковые накладные расходы на хранение.
Ну это как-то сильно сказано.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
SQL> create table ttt$(i integer, v varchar2(100 char));
Table created

SQL> insert into ttt$ values (1234567890, 'АБВГДЕЁЖЗИ');
1 row inserted

SQL> select i, v, length(i), length(v), dump(i), dump(v) from ttt$;

         I V           LENGTH(I)  LENGTH(V) DUMP(I)                   DUMP(V)
---------- ---------- ---------- ---------- ------------------------- --------------------------------------------------
1234567890 АБВГДЕЁЖЗИ         10         10 Typ=2 Len=6: 197,13,35,57 Typ=1 Len=20: 208,144,208,145,208,146,208,147,208,
                                            ,79,91                    148,208,149,208,129,208,150,208,151,208,152
...
Рейтинг: 0 / 0
String constants vs int
    #39818264
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonGUID используется в распределённых и JMS системах где вам нужно гарантировать уникальность ключа
при отсутствии глобального распределённого объекта типа sequence. Поэтому выбор GUID - это не "количественный"
а архитектурный выбор.
Ну могут быть еще другие резоны. Например, его случайность, и возможность сгенерить ключ записи еще на клиенте до вставки в таблицу. При желании, кстати, guid вполне можно и укоротить. В "мс-овском" гуиде 6 битов всегда одни и те же, остальные просто случайные. Теоретически даже возможна коллизия, но практически она нереальна.
...
Рейтинг: 0 / 0
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
String constants vs int
    #39818449
Фотография vikkiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton... Тогда почему был использован ... И любое действие надо обосновывать...для экономии места и количиства тырканий по клавишам,
человек сказал что не имел дела - ему дали возможность
сделать это без особых затрат (если появится такое желание),
только и всего, всё остальное - домыслы.
...
Рейтинг: 0 / 0
String constants vs int
    #39818450
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonHettпропущено...


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


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


Это - дизайн будущей БД. И любое действие надо обосновывать.

Я то откуда знаю) Это не мой дизайн. Я лишь поправил по поводу того, что там нет ObjectId.

Кстати адреса v4 и v6 хранят в одном поле, поэтому поле будет скорее называться просто ip
...
Рейтинг: 0 / 0
String constants vs int
    #39818451
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

и заметьте, я в отличие от вас вопросы не игорирую и отвечаю за свои... гм, посты!
...
Рейтинг: 0 / 0
String constants vs int
    #39818452
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я выше писал 21894120 что рассматриваю документы которые мы кладем в MongoDb именно как документы.
Со всеми вытекающими. Размер в 1 килобайт я взял с потолка. Считайте что это просто экспертная точка зрения.
Но если у вас есть ваш размер - прошу. Озвучьте. Или посчитайте какой средний размер имеют ваши документы
в вашей БД. Почему я апелирую к цифрам? Так иногда проще проводить сравнения и решать где мы чего
по настоящему экономим. А где так. Просто захотели переусложнить.

И зачем вы объявили атрибут ip первичным ключом для документа? Мы можете дать словесное описание
этому дизайну? Для - это важно. Это определяет смыслы.

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

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

Это же надо было так все в кучу намешать.
Рад что эта куча заставила вас взволноваться. Прошу прощения.
Просто это моя манера выходить на дискурс.

Так ведь без дискурса вы бы и толкали адреса в бинарных блобах. А после общения
со мной ... может у вас и другая мысль засядет. Семя сомнения.
...
Рейтинг: 0 / 0
String constants vs int
    #39818454
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HettСтрогая типизация это что такое?
Вообще в монге есть валидация схемы, но вы про не знали конечно https://docs.mongodb.com/manual/core/schema-validation/
По вашему, получается, монга противоречива самой себе? Да и не пойму я полета вашей мысли, у вас одно и то же поле в пределах коллекции может от документа к документу типы менять?
И как часто вы или ваши коллеги используют эту "валидацию" схемы? Ну.. в % соотношени. Например 50% использую - это
на каждые 2 базы - только одна схема.
...
Рейтинг: 0 / 0
String constants vs int
    #39818456
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonИ зачем вы объявили атрибут ip первичным ключом для документа? Мы можете дать словесное описание
этому дизайну? Для - это важно. Это определяет смыслы.

Да где я что объявил то? :)

maytonИли посчитайте какой средний размер имеют ваши документы
в вашей БД.

Какой смысл? Есть, например коллекция auth_log

Код: plaintext
1.
2.
3.
4.
5.
6.
    "size" : 4294967125.0, 
    "count" : 15368219.0, 
    "avgObjSize" : 279.0, 
    ....
    "nindexes" : 8.0, 
    "totalIndexSize" : 2638647296.0, 

Почти во всех индексах учествует поле ip (бинарное, где хранятся ipv4 и v6 адреса). Будь оно текстовое, все это добро куда больше бы весило, особенно индексы.
...
Рейтинг: 0 / 0
String constants vs int
    #39818457
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonИ как часто вы или ваши коллеги используют эту "валидацию" схемы? Ну.. в % соотношени. Например 50% использую - это
на каждые 2 базы - только одна схема.

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

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

Так я про распространенность ничего не говорю, считать смысла не вижу, базы достаточно разные, на новых микросервисах используем, на старых нет. Причем тут частота, я лишь сказал, что это есть, где вы говорили что это противоречит документным DBMS
Кайл Бэнкер в MongoDb in Action пишет что Отсутствие предопределённой
схемы несет с собой некоторые преимущества
.
Далее - он разворачивает мысль. Там целый абзац. Почитайте.

По поводу распространения. Некое подобие схемы валидатора было заложена в Oracle 10g еще лет 10 назад.
Позволяло для полей типа XmlType проверять валидность документа. Но % использования этой фичи
близок к нулю. В таких случаях наука говорит - практически не используется.
...
Рейтинг: 0 / 0
String constants vs int
    #39818463
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hettmayton, что на счет этого?

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

пропущено...

Я говорю о правильном распределении адресов. А не о том рандомном шуме что вам присвоил ваш провайдер.

Ясно :)
...
Рейтинг: 0 / 0
String constants vs int
    #39818467
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторКайл Бэнкер
Кто это?
...
Рейтинг: 0 / 0
String constants vs int
    #39818469
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
String constants vs int
    #39818471
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hett
Код: plaintext
1.
2.
3.
4.
5.
6.
    "size" : 4294967125.0, 
    "count" : 15368219.0, 
    "avgObjSize" : 279.0, 
    ....
    "nindexes" : 8.0, 
    "totalIndexSize" : 2638647296.0, 
Почти во всех индексах учествует поле ip (бинарное, где хранятся ipv4 и v6 адреса). Будь оно текстовое, все это добро куда больше бы весило, особенно индексы.
Метафорами - "куда больше" требует уточнения.
Вы можете сейчас создать новый текстовое поле ip, перелить туда данные и перестроить все индексы?

Я хочу - цифры. Я привык оперировать цифрами.
...
Рейтинг: 0 / 0
String constants vs int
    #39818473
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если будет скучно, посмотрю на досуге. Особого смысла все равно не вижу в этом, тем более там бинарный поиск используется.
...
Рейтинг: 0 / 0
String constants vs int
    #39818474
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотрите. Всенепременно.
...
Рейтинг: 0 / 0
String constants vs int
    #39818501
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonНикто вас не похвалит за экономию 96 (128 - 32 = 96bit) бит информации за каждый документ.У нас похвалят. Правда, максимум, коллеги по команде. Но тем не менее.
У нас жесткий лимит на размер базы, в который мы скоро упремся. И нам не дадут увеличить его, пока не будет убедительно показано, что сжимать дальше уже некуда.
...
Рейтинг: 0 / 0
String constants vs int
    #39818505
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft,

Что за база такая? Какой-нибудь embeded?
...
Рейтинг: 0 / 0
String constants vs int
    #39818508
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hett,

ObjectId в монге опционален - требуется лишь уникальное поле "_id", его тип может быть любой. Говорят, что вроде бы монговский ObjectId как-то оптимизирован под шардинг, но это лучше у более специалистов чем я спрашивать.
...
Рейтинг: 0 / 0
String constants vs int
    #39818510
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatmiksoft,

Что за база такая? Какой-нибудь embeded?Наоборот, аналитическое хранилище.
...
Рейтинг: 0 / 0
String constants vs int
    #39818526
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наверное column-oriented storage. Для них разрядность данного конкретного поля важнее.
...
Рейтинг: 0 / 0
String constants vs int
    #39818556
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HettТак я делал всегда и думал, что это правильно. Но недавно в команде появился человек, которого очень смутило то, что константы числовые и анализировать базу данных ему не удобно (он не аналитик, он программист), типа с текстовыми было бы проще.он казёл, которого надо гнать.
потому что программист такое сказать не может.
вот слова программиста
HettЛично я считаю, что база данных в первую очередь для приложения, а не человека и должна быть оптимизирована под работу приложения.
...
Рейтинг: 0 / 0
String constants vs int
    #39818588
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatHett,

ObjectId в монге опционален - требуется лишь уникальное поле "_id", его тип может быть любой. Говорят, что вроде бы монговский ObjectId как-то оптимизирован под шардинг, но это лучше у более специалистов чем я спрашивать.
Вы это мейтону наверное хотели адресовать?
...
Рейтинг: 0 / 0
String constants vs int
    #39818598
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В топике никто так и не высказался почему 10,20,30 должны быть лучше чем 'a','u','r'.
...
Рейтинг: 0 / 0
String constants vs int
    #39818600
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonВ топике никто так и не высказался почему 10,20,30 должны быть лучше чем 'a','u','r'.

А чем буквы лучше? Если первый раз видишь базу, то они все равно ничем не помогут.
А если не первый, то скорее запутаешься рано или поздно из-за лени лишний раз проверить что какая буква означает.
Может оно выглядит читаемо пока коллекция одна, а когда их много и статусы похожи друг на друга - упомнить все будет сложно.

Если два состояния будут с одной буквы начинаться, нужно будет двух-буквенный код вводить. При этом изначально коллизии может и не быть, а добавится потом. Что делать?
...
Рейтинг: 0 / 0
String constants vs int
    #39818601
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В таком случе уж лучше использовать полные названия. На размер индекса это сильно не должно повлиять. На скорость поиска - сложно сказать.
...
Рейтинг: 0 / 0
String constants vs int
    #39818602
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Из личного опыта. Одной-двух букв тебе хватит надолго. На справочник до 1000 примерно.

Вспомни коды стран и валют https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes
...
Рейтинг: 0 / 0
String constants vs int
    #39818603
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
String constants vs int
    #39818605
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonВ топике никто так и не высказался почему 10,20,30 должны быть лучше чем 'a','u','r'.если это на всегда - то вопрос решается путём сравнения скорости обработки, если же это только начальный вариант - то цифры лучше - проще вкладывать новый смысл в цифру, не надо остальную логику передумывать.
на и с цифрами индексация быстрее
...
Рейтинг: 0 / 0
String constants vs int
    #39818606
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяmaytonВ топике никто так и не высказался почему 10,20,30 должны быть лучше чем 'a','u','r'.если это на всегда - то вопрос решается путём сравнения скорости обработки, если же это только начальный вариант - то цифры лучше - проще вкладывать новый смысл в цифру, не надо остальную логику передумывать.
на и с цифрами индексация быстрее
Почему быстрее?
...
Рейтинг: 0 / 0
String constants vs int
    #39818608
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonПочему быстрее?потому как числовое поле рассматривается как одно целое значение, а чаровское как набор отдельных значений.
...
Рейтинг: 0 / 0
String constants vs int
    #39818611
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мы говорим про Mongo?
...
Рейтинг: 0 / 0
String constants vs int
    #39818612
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonМы говорим про Mongo?неужели Mongo выбрало тормозной путь?
...
Рейтинг: 0 / 0
String constants vs int
    #39818614
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hettанализировать базу данных ему не удобно (он не аналитик, он программист)
пущай вьюер запргограммирует
...
Рейтинг: 0 / 0
String constants vs int
    #39818626
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonВ топике никто так и не высказался почему 10,20,30 должны быть лучше чем 'a','u','r'.
ИМХО все зависит от того как оно в базу пишется, точнее сколько места занимает. Т.к. в итоге все упрется в I/O, и на скорость выборки основное влияние окажет размер.
...
Рейтинг: 0 / 0
String constants vs int
    #39818627
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяmaytonМы говорим про Mongo?неужели Mongo выбрало тормозной путь?
Я не знаю. Не забывай что Mongo хранит не строки данных как в таблице а документы.

По бенчмарку. Безотносительно быстрых или медленных компараторов надо понимать что бенчмарк
должен быть не синтетический. А приближенный к реальным условиям. Тоесть базёнка из двух полей
которая улеглась - в оперативе - это не наш кейс. Потому-что - синтетический. Нужен - настоящий.
...
Рейтинг: 0 / 0
String constants vs int
    #39818630
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TmaytonВ топике никто так и не высказался почему 10,20,30 должны быть лучше чем 'a','u','r'.
ИМХО все зависит от того как оно в базу пишется, точнее сколько места занимает. Т.к. в итоге все упрется в I/O, и на скорость выборки основное влияние окажет размер.
Не знаю. Пишут что пухлое тело Mongo-базы лежит в формате BSON.
Вроде-бы он поддерживает бинарные числовые типы.

http://bsonspec.org/spec.html

Точно ли оно сохранит наши ключи - это тот еще вопрос. Я-бы после создания документа делал-бы дамп или экспорт и смотрел.
...
Рейтинг: 0 / 0
String constants vs int
    #39818660
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторТочно ли оно сохранит наши ключи
Какие ключи?
...
Рейтинг: 0 / 0
String constants vs int
    #39818687
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonВ топике никто так и не высказался почему 10,20,30 должны быть лучше чем 'a','u','r'.
Я сказал. 10, 20 и 30 не бывают прописными и строчными.
...
Рейтинг: 0 / 0
String constants vs int
    #39818689
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HettавторТочно ли оно сохранит наши ключи
Какие ключи?
А вы сударь изволили обещать сравнить текстовое и двоичное хранение адресов с индексами
и накладными расходами.

А ключи - это то с чего начался топик.
...
Рейтинг: 0 / 0
String constants vs int
    #39818693
alex55555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonВ топике никто так и не высказался почему 10,20,30 должны быть лучше чем 'a','u','r'.
Буквы хуже. Вместо букв тогда надо слова, а лучше фразы.

Собственно спич об оптимизации. Пока всего полно и ничего не жалко - можно хоть мегабайтный вордовский документ в качестве ключа использовать. Будет там и описание названий и зачем и почему и ещё сказка на ночь. Но когда возникает потребность в эффективности - вот тут все вордовские документы, и строки, и буквы - идут лесом.
...
Рейтинг: 0 / 0
String constants vs int
    #39818696
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonHettпропущено...

Какие ключи?
А вы сударь изволили обещать сравнить текстовое и двоичное хранение адресов с индексами
и накладными расходами.

А ключи - это то с чего начался топик.

Обещать? Может я еще клятву дал? :)

Hett Если будет скучно, посмотрю на досуге . Особого смысла все равно не вижу в этом, тем более там бинарный поиск используется.
...
Рейтинг: 0 / 0
String constants vs int
    #39818705
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonНе знаю. Пишут что пухлое тело Mongo-базы лежит в формате BSON.
Вроде-бы он поддерживает бинарные числовые типы.

http://bsonspec.org/spec.html



На счет пухлости, я бы не был так категоричен. В WireTiger довольно не плохое сжатие.

maytonТочно ли оно сохранит наши ключи - это тот еще вопрос. Я-бы после создания документа делал-бы дамп или экспорт и смотрел.


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

http://bsonspec.org/spec.html



На счет пухлости, я бы не был так категоричен. В WireTiger довольно не плохое сжатие.

maytonТочно ли оно сохранит наши ключи - это тот еще вопрос. Я-бы после создания документа делал-бы дамп или экспорт и смотрел.


Как понять "точно ли оно сохранит"?
Что вы хотите в дампе то увидеть?
А вы - ревностный адепт. Это приятно.

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


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