Facebook user_id как MongoDB BSON ObjectId? - PullRequest
4 голосов
/ 09 января 2011

Я перестраиваю Влюбленных на Facebook с Синатрой и Рэдисом. Мне нравится Redis, потому что он не имеет длинных (12-байтовых) BSON ObjectIds , и я храню наборы идентификаторов user_ids для каждого пользователя. Эти наборы представляют собой запросы_отправки, запросы_полученные и отношения, и все они содержат идентификаторы пользователей Facebook.

Я думаю о переходе на MongoDB, потому что хочу использовать его геопространственную индексацию. Если я это сделаю, я бы хотел использовать идентификаторы пользователя FB в качестве поля _id, потому что я хочу, чтобы наборы были маленькими, и я хочу, чтобы ответы JSON были маленькими. Но лучше ли использовать BSON ObjectId (более эффективный для MongoDB), чем целое число (fb user_id)?

1 Ответ

2 голосов
/ 09 января 2011

Насколько я знаю, нет существенных различий в эффективности , за исключением в некоторых случаях, например, при упорядочении по дате (поскольку в ObjectId есть дата и время и т. Д.)

Например, вы потеряете возможность простого заказа по _id , вы также потеряете преимущества для шардинга и распространения .Кроме этого, , хотя я все равно лично буду использовать ObjectId ... до тех пор, пока int не вызывает сомнений (конечно) ... с вами все будет в порядке.

Поскольку _id всегда «возвращается» в запросе, я полагаю, вы сэкономите немного времени и передачу данных (немного).

Вы даже можете сделатьваш _id массив, если вы хотите, и он будет все индексировать, хорошо видеть этот ответ (не то, чтобы я рекомендовал это большую часть времени.)

Также см .: Оптимизация идентификаторов объектов

...