2011-10-14 13 views
22

Tworzę interfejs API wykorzystujący Codeigniter i MongoDB. W tym systemie zapisuję pełną nazwę i _ID użytkowników wybranych przez użytkownika .Przechowuj _Id jako obiekt lub ciąg w MongoDB?

Co najlepiej zrobić w związku z _IDem? Przechowuj go jako obiekt lub jako ciąg? Jeśli przechowuję go jako obiekt, muszę przekonwertować go na ciąg, gdy wypisuje się następców w inny sposób: dane wyjściowe wyglądają dziwnie.

Moje pytanie jest naprawdę. Czy można zapisać _ID jako ciąg, a nie obiekt? Co to jest wadą przechowywania jako ciąg?

Dziękuję za wszystkie dane wejściowe!

Odpowiedz

18

Wydajność zgłoszeń (i aktualizacji) jest znacznie lepsza w przypadku objectid. Co więcej, objectid są dość małe w kosmosie.

Od oficjalnego dokumentu:

BSON zawiera binarny typ danych do przechowywania danych tablic bajtowych. Dzięki temu wartości id i odpowiadające im klucze w indeksie _id są dwa razy mniejsze.

oto 2 linki, które mogą pomóc: - http://www.mongodb.org/display/DOCS/Optimizing+Object+IDs - http://www.mongodb.org/display/DOCS/Object+IDs

2

Podczas korzystania z ObjectId generuje ona _id jako unikalną wartość we wszystkich komputerach. Więc jeśli użyjesz Sharding, nie będziesz się martwił o twoje konflikty. Zobacz, jak ObjectId generuje w specification
Ale jeśli używasz łańcucha, powinieneś generować go ostrożnie.

Powiązane problemy