Mongodb NoRM и POCO - PullRequest
       3

Mongodb NoRM и POCO

2 голосов
/ 08 ноября 2010

Я экспериментирую с Mongodb и NoRM в C #.

Из того, что я прочитал, ObjectId, который однозначно идентифицирует документ в Mongodb, является своего рода «специальным» Guid (в том смысле, что он уникален), носодержит несколько важных частей, которые позволяют более легко сортировать и индексировать (отметка времени, машинный хэш, processId и приращение).

Я бы хотел, чтобы мои объекты были действительно POCO с автоматически сгенерированным Guid в качестве Id, так чтобез внешних типов, таких как ObjectId, которые не позволили бы мне перейти на другую технологию или вернуться к классическим Ado.net или Nhibernate.

Другой вариант - использовать в POCO Id в качестве строки и использовать * 1007.*

Каковы лучшие практики для этого?

Ответы [ 2 ]

2 голосов
/ 08 ноября 2010

ObjectId не являются направляющими.Guid - это имя, которое MS дает для версии UUID, которую они используют.ObjectIds - это совершенно другой алгоритм.

При этом в mongo вы можете использовать все, что захотите, в качестве идентификатора, и у него не будет штрафов за производительность (в мире рельсов некоторые ORM используютstrings)

ObjectId используется в монго в основном для сохранения размера.Если это так важно, просто используйте что-то другое, просто поймите, что использование слишком больших полей идентификаторов приведет к потере оперативной памяти.Но если это имеет большое значение, тогда идите за Guids.

0 голосов
/ 08 декабря 2011

Вы можете использовать любой понравившийся вам тип _id, как сказал Мэтт, при условии, что он уникален в своей коллекции.

Хранение UUID в типе [DOC: BSON] является наиболее эффективным, но вы также можете использоватьшестнадцатеричная строка, если пространство и скорость не являются проблемой.

...