MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Ekspozycja MongoDB ObjectIds

Wersja skrócona:tak, wszędzie używaj String.

Jeśli nie masz nic przeciwko adnotacjom, użyj :

[BsonId]
[BsonRepresentation(BsonType.ObjectId)]
public string Id { get; set; }

W przeciwnym razie możesz użyć mapy klasowej :

BsonClassMap.RegisterClassMap<i_YourModel>(cm =>
 {
  cm.AutoMap();
  cm.SetIdMember(cm.GetMemberMap(x => x.Id)
    .SetIdGenerator(StringObjectIdGenerator.Instance));
 }
);

Wersja długa :

Wskazane jest użycie czegoś nieprzejrzystego, co nie jest bezpośrednio związane z podstawową implementacją bazy danych, w twoim modelu i warstwie usług tak bardzo, jak to możliwe (jeśli to możliwe).

Wcześniej identyfikatory kluczy podstawowych były zwykle dużymi liczbami, które były następnie mapowane do kolumny klucza podstawowego liczby w bazie danych. Jednak podczas przypisywania nowego identyfikatora do nowej jednostki, należało sprawdzić bazę danych, aby upewnić się, że ma unikalny identyfikator. Istnieje wiele technik, od generatorów identyfikatorów LO-HI, przez kolumny auto_increment, sekwencje itp.

Dzięki NoSQL i potrzebie większej równoległości większość aplikacji używa teraz identyfikatorów UUID lub ich odmian, ponieważ identyfikator może zostać wygenerowany z rozsądnym prawdopodobieństwem, że będzie unikalny bez konieczności pytania bazy danych, czy jest naprawdę unikalny, lub używania sekwencji lub tym podobne, które są wąskimi gardłami w aplikacji, które skalują się w poziomie.

MongoDB nie ma różnicy i używa ObjectId, które są rodzajem identyfikatorów UUID.

Te identyfikatory (zarówno mongo, jak i inne) zawsze mogą być reprezentowane jako ciągi, zwykle reprezentacja HEX bajtów tworzących klucz. Tak więc w swoim modelu użyj String jako identyfikatorów, w warstwie usług tak samo, w warstwie danych przekonwertuj go na format, który jest lepszy dla podstawowej implementacji bazy danych, w tym przypadku MongoDB.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB $in Operator potoku agregacji

  2. Wiele operacji grupowych przy użyciu platformy agregacji Mongo

  3. MongoDB $tan

  4. 5 najważniejszych zalet współdzielonego hostingu MongoDB

  5. Łączenie się z bazami danych MongoDB