Ограничение размера идентификатора узла NodeJS Mongoose [дубликат]

PHP и ссылки несколько неинтуитивны. Если использовать соответствующие ссылки в правильных местах, это может обеспечить большие улучшения производительности или избежать очень уродливых обходных решений и необычного кода.

Следующее приведет к ошибке:

 function f(&$v){$v = true;}
 f(&$v);

 function f($v){$v = true;}
 f(&$v);

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

Если они действительно работали, оба включают избыточное преобразование в ссылку, а второе также включает в себя избыточное преобразование обратно в облачную содержащуюся переменную.

Второй вариант был возможен, позволяя передавать ссылку на код, который не предназначен для работы со ссылками. Это крайне уродливо для ремонтопригодности.

Это ничего не сделает:

 function f($v){$v = true;}
 $r = &$v;
 f($r);

В частности, он возвращает ссылку обратно в обычную переменную, поскольку вы не запрашивали ссылку.

Это будет работать:

 function f(&$v){$v = true;}
 f($v);

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

Что это означает, что вы не можете передать ссылку на функцию, в которой ссылка явно не указана для того, чтобы сделать ее одной из немногих областей, где PHP является строгим при передаче типов или в этом случае больше мета-типа.

Если вам нужно больше динамического поведения, это будет работать:

 function f(&$v){$v = true;}
 $v = array(false,false,false);
 $r = &$v[1];
 f($r);

Здесь он видит, что вы хотите ссылку и уже имеете ссылку, поэтому оставите ее в покое. Он может также связывать ссылку, но я в этом сомневаюсь.

6
задан pravdomil 1 April 2018 в 07:06
поделиться

2 ответа

Если у вас есть , существующий ID ( говорит из существующего набора данных ), то вполне нормально переопределять _id с тем, который у вас есть.

]

... keeo _id нетронутый, поскольку он помогает индексировать и т. д.

MongoDB по умолчанию индексирует поле _id. Если вы начнете вкладывать целые числа в поле _id, они будут индексироваться, как и все остальное.

Таким образом, большинство RDBM предоставляют идентификатор «auto-increment». Это хорошо для небольших наборов данных, но действительно плохо с точки зрения масштабируемости. Если вы пытаетесь вставить данные на 20 серверов одновременно, как вы сохраняете «автоматическое увеличение»?

Обычный ответ заключается в том, что вы этого не делаете. Вместо этого вы в конечном итоге используете такие же идентификаторы GUID для этих идентификаторов. В случае MongoDB ObjectId уже предоставлен.

Мне было интересно узнать о какой-либо лучшей стратегии, чтобы можно было использовать объект mongoIt как более удобный для пользователя и легко запоминающийся ключ

Таким образом, проблема в том, что идентификатор «легко запоминается» на самом деле не связан с «высоко масштабируемой базой данных». Когда у вас есть миллиард документов, идентификаторы на самом деле не «легко запоминаются».

Итак, вам нужно сделать компромисс здесь. Если у вас есть таблица, которая может стать действительно большой, я предлагаю использовать ObjectId. Если у вас есть относительно небольшая таблица и она часто не обновляется (например, таблица поиска), вы можете создать собственный автоинкремент.

Выбор действительно зависит от вас.

3
ответ дан Gates VP 15 August 2018 в 21:38
поделиться

Вы можете перезаписать _id самостоятельно . Нет никаких обязательств по использованию идентификатора объекта с автогенератором. В чем проблема с переопределением _id внутри вашего приложения в соответствии с вашими потребностями?

0
ответ дан Andreas Jung 15 August 2018 в 21:38
поделиться
  • 1
  • 2
    Традиционные базы данных часто используют монотонно увеличивающиеся порядковые номера для первичных ключей. В MongoDB предпочтительным подходом является использование Object ID. Идентификаторы объектов более синергетичны с очерчиванием и распределением. – bsr 25 April 2011 в 16:09
  • 3
    Я думаю, что он убирает некоторые преимущества, а также может индексировать и сортировать – bsr 25 April 2011 в 16:09
  • 4
    Какова ваша позиция? – Andreas Jung 25 April 2011 в 16:23
Другие вопросы по тегам:

Похожие вопросы: