MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Справяне с това как MongoDB съхранява DateTime, когато се използва с модел на локатор на услуги

Защо не съхранявате UTC в DB на първо място? В повечето случаи DateTime трябва да се съхранява в UTC, тъй като обикновено се отнася до момент от време. Това е вярно за всичко, което се отнася до времето във физически смисъл и всичко, което предполага, че времето е монотонно, нарастващо и уникално, нито едно от които не е вярно за повечето местни времена.

От време на време използването на местно време има смисъл:да предположим, че автобус тръгва всеки ден в 9 сутринта. Това означава, че между две последователни събития минават 24 часа. Ако обаче часовата зона има лятно часово време, това ще бъде 23-часов, съответно 25-часов интервал веднъж годишно.

Въпреки това, ако трябва да преборите този вид данни, просто DateTime не върши работа; Правилата за DST могат да се променят, часовите зони могат да се променят и т.н. В C# правилата за DST, които ще се прилагат, са тези, които са текущи валидни, дори ако датата е „историческа“. Така аритметиката на датите с исторически дати може да предизвика хаос. Ако наистина трябва да се справите с това, най-малкото трябва да съхраните кой часова зона, в която е времето (не само отместването или дори само isLocal флаг).

Съхраняването на текстова информация в базата данни, която може да се съхранява двоично, не ми се струва много елегантно, нито промяната на стойността в някакъв среден слой. Първото е неефективнои страда от споменатите по-горе особености на местното време, последното има само втория проблем.

Между другото, за да постигнете последното, можете да украсите свойството с [BsonDateTimeOptions(Kind=DateTimeKind.Local)] , който ще направи преобразуването вместо вас, но страда от същите проблеми, разбира се.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Премахнете вградения документ във вложен масив от документи

  2. Как най-добре да създадете RESTful API в Node.js

  3. Частична актуализация на поддокумент с nodejs/mongoose

  4. Филтриране на масиви в mongodb

  5. Премахване на обект с ObjectId от масив в Mongoose/MongoDB