2013-03-05 3 views
0

우리는 수백 개의 클래스/열거 형을 가진 커다란 애플리케이션을 가지고 있으며, 우리는 이들 중 일부를 저장하기 위해 MongoDB를 사용하고자합니다.MongoDB에 .NET 객체 삽입하기

상황에 따라 SQL 데이터베이스의 필드에 .NET 객체를 직렬화하고 요구에 따라 비 직렬화하는 현재 시스템이 있습니다. 우리가 원하는 것은 객체의 속성을 직접 쿼리 할 수있는 방법으로 객체를 Mongo에 집어 넣는 것입니다 (즉, 객체를 메모리에로드하거나 직렬화 해제 할 필요없이). 따라서 코드 기반을 대폭 변경하지 않고도 과거 데이터에서 일부 분석을 시작할 수 있습니다.

제 질문은 쉽게 가능합니다. 이 일을하기 위해 C# 드라이버에 내장 된 시리얼 라이저가 있습니까?

나는 또한 내가하려고하는 것이 본질적으로 잘못되면 더 좋은 방법을 제안하는 대답에 열려 있습니다.

업데이트 : 업데이트 : NHibernate를 사용하여로드 된 개체를 가져 와서 쿼리 가능한 개체로 Mongo에 삽입하는 것이 좋습니다. 궁극적으로, 나는 그것을 어떤 시점에서 다시 메모리에로드하기를 원할 것이다.

+2

은 여기 문서화 : http://docs.mongodb.org/ecosystem/tutorial/serialize-documents- with-the-csharp-driver/ – WiredPrairie

+0

코드에 엄청난 변화를주지 않고이 작업을 수행하려고합니다. 위의 링크는 각 엔티티 (및 그 자식)에 대한 ClassMap을 생성해야하는 것처럼 보입니다. 어셈블리에서 Hiberate Automap? – Martin

+0

새로운 DB로 전환하면서 새로운 기능을 추가하려고하면 ... 상당량의 코드 이탈이 예상됩니다. 죄송합니다, NHibernate의 Automap에 익숙하지 않습니다. C# 드라이버는 Mapper 기능과 속성,'IBsonSerializable'을 통한 커스텀 직렬화 (또는 원시/네이티브'BsonDocument'를 사용합니다)를 가지고 있습니다. MongoDB의 성능을 향상 시키려면 올바른 인덱스를 추가하거나 표준 데이터 유형에 매핑하는 등의 작업을 수행해야합니다. – WiredPrairie

답변

0

MongoDB는 기본적으로 JSON 문서의 저장소이므로 JSON 방식으로 개체를 직렬화 할 수 있다면 MongoDB에 개체를 저장할 수 있어야하며 .NET 용 JSON serializer가 많이 있다고 가정해야합니다. 하나를 쉽게 찾을 수 있습니다.

MongoDB에 모든 것이 JSON으로 저장되면 데이터베이스에 직접 쿼리하는 도구가 없어도 쿼리 할 수 ​​있습니다.

+0

응답 해 주셔서 감사합니다. 이보다 더 자세한 정보가 필요합니다. NHibernate를 사용하여 만든 개체를 serialize하고 deserialize하려고합니다. – Martin

+0

MongoDB는 BSON 형식으로 문서를 저장합니다 (http://bsonspec.org 참조). BSON은 "Binary JSON"의 약자이며 JSON과 유사한 데이터 구조를 직렬화하는 데 편리하지만 JSON과 동의어는 아니며 MongoDB는 "JSON 문서 저장소"가 아닙니다. – Stennie

관련 문제