본문 바로가기
백엔드/데이터베이스

JSON 데이터 BLOB 으로 저장하면서 느낀점

by 1005ptr 2019. 5. 7.
반응형

JSON 파일을 BLOB으로 넣자고 했었는데

 

클래스를 하나 더만들어서 객체 직렬화 시켜놨더라~

 

그래서 JSON으로 바꿔서 디비에 BLOB으로 저장하는 방식으로 바꾸는 중에 느낀 점

 

1. JSON을 저장하는 방법

 - Varchar2에 저장한다. 4000자가 넘지 않는 경우

 - VARCHAR2(32767)을 사용하라는데 이건 내 버전에서 안되는 방법인걸로 판단됨. 12C 공식문서니까.

 - 넘는 경우 BLOB이나 CLOB에 넣는다.

 

2. 문자열을 바이너리로 캐스팅하는 함수는 2천자 글자 제한이 있다.

 - UTL_RAW.CAST_TO_RAW

 - UTL_RAW.CAST_TO_VARCHAR2

 - 뜨는 버그는 ORA-06502, 그전에 문자열을 BLOB에 그대로 쓰니 뜨는 버그는 ORA-01465

 - 아래 링크중에서 보면 CLOB가 있는데 BLOB을 사용하는 이유도 설명되있는데 읽어보면 된다.

 - 사용한 방법은, JSON 파싱한 문자열을 Binary로 바꾸고 쿼리에 넣는다.

3. JSON.Net에는 JsonIgnore 어트리뷰트가 있다.

 - 가리고싶은 속성이 있는데 어떻게하지 하다가 보니 속성 위에 [JsonIgnore] 를 붙이면 됐다.

 - 가리고 싶은 이유는 순환참조때문

 

4. 부모 클래스에 JsonIgnore를 했는데 동작하지 않는다.

 - 위쪽 아이템클래스에 BackupItem이 있어서 JsonIgnore를 했는데 동작하지 않는다.

 - 단순히 부모 클래스여서 안되는건지, 다른 어노테이션 때문인지는 불확실하다.

 

참고 링크

 - https://blogs.oracle.com/jsondb/storing-json-in-blob-columns

 

Storing JSON in BLOB columns

In previous postings we have shown examples of JSON data stored in a VARCHAR2 and CLOB columns. VARCHAR2 values have a maximum length of is 32767 bytes whereas CLOB has no such limitation. Both are textual data types so any selected value (if displayed in

blogs.oracle.com

 - https://docs.oracle.com/en/database/oracle/oracle-database/12.2/adjsn/overview-of-storage-and-management-of-JSON-data.html#GUID-26AB85D2-3277-451B-BFAA-9DD45355FCC7

 

JSON Developer's Guide

This overview describes: (1) data types for JSON columns, (2) LOB storage considerations for JSON data, and (3) ensuring that JSON columns contain well-formed JSON data.

docs.oracle.com

 - https://docs.oracle.com/en/database/oracle/oracle-database/12.2/adjsn/overview-of-inserting-updating-loading-JSON-data.html#GUID-94E37619-C242-44F0-B1C3-9A63859AD0C5

 

JSON Developer's Guide

You can use standard database APIs to insert or update JSON data in Oracle Database. You can work directly with JSON data contained in file-system files by creating an external table that exposes it to the database. For better performance, you can load the

docs.oracle.com

https://www.newtonsoft.com/json/help/html/PropertyJsonIgnore.htm

 

JsonIgnoreAttribute

 

www.newtonsoft.com

 - https://blog.aliencube.org/ko/2015/03/24/tips-for-json-net-when-serialising-objects/

 

Json.NET을 이용한 객체 Serialisation에 쓰이는 소소한 팁들

Json.NET은 닷넷 어플리케이션 개발시 가장 자주 쓰이는 라이브러리들 중 하나이다. 심지어 MS도 ASP.NET MVC 라이브러리를 만들 때 자체 JavaScriptSerializer를 쓰지 않고 Json.NET 라이브러리를 이용할 정도니 말 다 했지. 그런데, JSON 객체는 굉장히 유연해서 어떤 타입을 정의하기가 힘들다. 하려면야 할 수 있겠지…

blog.aliencube.org

 - 이 글은 나랑 같은 질문 상속받은 속성에 JsonIgnore가 동작안한다

 https://stackoverflow.com/questions/37545629/use-jsonignore-on-certain-inherited-properties

 

Use JsonIgnore on certain inherited properties

I have a base class like this-ish: public class Baseclass { public string Id { get; set; } public string Type { get; set; } public string Name { get; set; } } ...and many classes that i...

stackoverflow.com

 

반응형

'백엔드 > 데이터베이스' 카테고리의 다른 글

타입  (0) 2020.12.05
IBatis Inline Parameter  (0) 2019.05.10
오라클 유저에 테이블 다 날리기  (0) 2019.04.16
DB 테이블 값 복사할때는 INSERT-SELECT  (0) 2019.01.15
make password not expire  (0) 2018.11.01

댓글