JSON 문서 저장 검토
Couchbase에서 JSON 문서를 저장하는 방법을 간단히 살펴봅니다. 버킷이 있으면, 그냥 삽입
/Upsert
를 사용하여 문서를 생성/업데이트한 다음 Get
를 사용하여 문서를 다시 가져올 수 있습니다. .NET SDK를 사용하면 지정한 유형으로 직렬화가 자동으로 처리됩니다.
1 2 3 4 5 |
// 문서 삽입 버킷.삽입("JSON_" + guid, new MyType { Foo = "BarJSON"}); // 문서를 다시 꺼내서 표시합니다. var jsonBackOut = 버킷.Get("JSON_" + guid).가치; 콘솔.WriteLine($"JSON 문서: {jsonBackOut.Foo}"); |
XML 저장
XML을 저장하려면 조금 더 많은 작업이 필요합니다. 먼저, 객체를 XML 문자열로 직렬화합니다. XmlSerializer
. 그런 다음 삽입
해당 값을 문자열로 저장합니다. 이를 다시 꺼내려면 XmlSeralizer
를 다시 입력하면 문자열에서 유형으로 전환됩니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
var xmlo = new MyType {Foo = "BarXML"}; var xml = new XmlSerializer(xmlo.GetType()); 사용 (var textWriter = new StringWriter()) { xml.직렬화(textWriter, xmlo); 버킷.삽입("XML_" + guid, textWriter.ToString()); } // XML을 다시 가져와 역직렬화하여 객체를 표시합니다. var xmlBackOut = 버킷.Get("XML_" + guid).가치; 사용 (var reader = new StringReader(xmlBackOut)) { var xmlObject = (MyType)xml.역직렬화(reader); 콘솔.WriteLine($"XML: {xmlObject.Foo}"); } |
바이트 배열 직렬화 저장
다음으로, 객체를 객체를 바이트
배열로 저장합니다. JSON 및 XML과 달리 바이트 배열로 저장하면 개체를 다시 .NET 개체로만 직렬화할 수 있습니다.
프로세스는 다음과 같은 점을 제외하면 XML과 유사합니다. 삽입
그리고 Get
는 다음을 지정합니다. byte[]
대신 문자열
를 사용하고 있으며 바이너리포맷터
대신 XmlSerializer
.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
var 포맷터 = new 바이너리포맷터(); 사용 (var ms = new 메모리스트림()) { 포맷터.직렬화(ms, new MyType { Foo = "BarDotNET"}); 버킷.삽입("byte_" + guid, ms.ToArray()); } // 바이트열을 다시 가져와 역직렬화하여 객체를 표시합니다. var bytesBackOut = 버킷.Get("byte_" + guid).가치; 사용 (var 스트림 = new 메모리스트림(bytesBackOut)) { var bytesObject = (MyType)포맷터.역직렬화(스트림); 콘솔.WriteLine($".NET: {bytesObject.Foo}"); } |
요약
비 JSON 문서는 JSON 문서와 동일한 버킷에 존재합니다. 하지만 보시다시피, Couchbase Server는 이를 해석하는 방법을 모릅니다. 따라서 이러한 문서에 대해 대부분의 N1QL 작업을 수행할 수 없습니다. JSON 문서처럼 값을 색인할 수 없습니다. 그리고 .NET 바이트 배열의 경우, .NET이 아닌 프로그램은 이를 전혀 해석할 수 없습니다.
값을 JSON으로 저장할 수 있다면 이 방법을 추천합니다. 하지만 카우치베이스 서버는 다른 유형의 값을 저장할 수 있는 유연성을 제공합니다.
질문이 있으신가요? 카우치베이스 서버에 대한 도움이 필요하신가요? 다음을 확인하세요. 카우치베이스 포럼 또는 트위터에서 팔로우하기.