source

MongoDB에서 날짜를 저장하는 가장 좋은 방법은 무엇입니까?

ittop 2023. 5. 2. 22:59
반응형

MongoDB에서 날짜를 저장하는 가장 좋은 방법은 무엇입니까?

저는 이제 막 MongoDB에 대해 배우기 시작했고 MySQL에서 천천히 마이그레이션하기를 희망합니다.

에는 두 . MySQL 두 가 다 데 이 있 습 니 다 이 형 유 터 른 지 는 에 ▁types 니 다 습 있 ▁my ▁in ▁- ▁different ▁my 이 ▁data ▁there 형 유▁two ▁areDATE ('0000-00-00')그리고.DATETIME ('0000-00-00 00:00:00')MySQL을 합니다.DATEtype으로 을 잘 .MongoDB가 .Date 수있객체는에 DATETIME사용하는 것이 가장 적합할 것 같습니다.Date시간, 분, 초를 사용하지 않기 때문에 공간이 낭비됩니다.반면에 날짜를 문자열로 저장하는 것은 잘못된 것 같습니다.

날짜 요?('0000-00-00')몽고DB?

Date MongoDB yyyy-mm-dd왜, 다른 모든 대답자들이 이것이 끔찍한 생각이라고 말하는 것을 고려하면요?간단히 말해서, 저는 (실제) 시간대 개념이 없는 자바스크립트에서 날짜를 작업하려고 노력하면서 끝없는 고통을 겪고 있습니다.MongoDB에 UTC 날짜, 즉 원하는 날짜와 시간이 자정 UTC로 설정된 날짜() 개체를 저장해 왔으나 사용자가 제출한 날짜를 시간대에 상관없이 정확하게 변환하는 것은 의외로 복잡하고 오류가 발생하기 쉽습니다.제 JavaScript 로컬 UTC까지" 위해 Moment). 그리고 저는 을 "UTC"와 같이 그리고 저는 좋은 오래된 MySQL 표준과 같은 간단한 문자열을 결정했습니다.yyyy-mm-dd이 방법을 사용하면 클라이언트 측에서 런타임에 필요에 따라 Date() 개체로 구문 분석할 수 있습니다.

덧붙여서, 저는 또한 이 MongoDB 데이터베이스를 시간대 개념이 없는 FileMaker 데이터베이스와 동기화하려고 합니다.특히 UTC 자정과 같이 의미가 없는 시간 데이터를 저장하지 않는 단순성은 때때로 문자열 날짜를 구문 분석해야 하는 경우에도 덜 버그가 있는 코드를 보장하는 데 도움이 됩니다.

BSON(mongo에서 기본적으로 사용하는 스토리지 데이터 형식)에는 Unix 시간 이후 밀리초를 나타내는 64비트(따라서 8바이트) 부호 정수인 전용 날짜 유형 UTC 날짜 시간이 있습니다.날짜와 타임스탬프를 저장하는 데 다른 유형을 사용하는 이유는 거의 없습니다.

만약 당신이 날짜당 몇 바이트를 절약하고 싶다면 (다시 말하지만, 몽고의 패딩과 최소 블록 크기, 그리고 이것은 매우 드문 경우에만 문제가 될 만한 가치가 있는 모든 것이다) YYYMMDD 형식의 부호 없는 정수로 저장함으로써 날짜를 3바이트 이진 블로브로 저장할 수 있습니다.또는 "X년 1월 1일 이후의 일"을 나타내는 2바이트 이진 블롭을 사용합니다. 여기서 X는 179년의 날짜 범위만 지원하므로 적절히 선택해야 합니다.

편집: 아래 논의에서 보여주듯이 이 방법은 매우 드문 상황에서만 실행 가능한 방법입니다.기본적으로; mongo의 네이티브 날짜 유형을 사용합니다 ;)

필드당 4바이트를 절약하는 데 정말 신경을 쓴다면 (여러 개가 있는 경우)DATE문서당 필드) 날짜를 저장할 수 있습니다.int32형식의 필드20110720(MySQL 참고)DATE3바이트를 차지하므로 어떤 경우에도 스토리지가 더 클 것입니다.)그렇지 않으면 표준 날짜 유형을 고수하는 것이 좋겠습니다.

언급URL : https://stackoverflow.com/questions/6764821/what-is-the-best-way-to-store-dates-in-mongodb

반응형