2016-07-08 13 views
0

응용 프로그램을 구축하고 데이터베이스 계층을 구축하는 동안 여러 항목을 JSON으로 저장하거나 원하는 각 항목에 대한 열을 만들 수 있어야합니다. 저장 하시겠습니까?MYSQL에 JSON 데이터 저장 - 성능에 미치는 영향

언제 JSON을 데이터베이스에 저장해야합니까?

데이터베이스에 JSON을 저장하면 어떤 장단점이 있습니까?

예를 들어, 검색하거나 색인 할 필요가없는 모든 열의 경우 JSON 배열에 값을 저장하는 것이 더 좋을지, 아니면 여러 개가있는 정규화 된 데이터 테이블을 만들어야합니다. 열?

+1

json은 텍스트입니다. 다른 텍스트와 동일한 "비용"을가집니다. json 내에서 개별 데이터 덩어리를 다루지 않아도된다면 비용이 전혀 들지 않습니다. 그것은 단지 텍스트입니다. 개별 청크에 액세스해야한다면 비용이 많이 든다. mysql은 json이 무엇인지 알지 못한다. 즉, 문자열 연산을 사용하여 데이터 청크에 액세스하거나 json을 클라이언트로 가져 와서 거기에서 디코딩해야한다. –

+1

5.7을 사용하고 있지 않다면 [5.7]의 [this] (http://stackoverflow.com/a/33661590) 및 문서 유효성 확인을 참조하십시오. 공동체가 편향된 전형적인 비즈니스 시나리오를 json없이. 수백만 행. 측정 항목을 표시하십시오. – Drew

답변

0

예 : 검색하거나 색인 할 필요가없는 모든 열에 대해서는 MySQL에서 절대적으로 JSON 데이터를 사용할 수 있습니다.

논리적으로는 정규화 된 데이터 테이블보다는 저장 메모리를 절약 할 수 있습니다. 따라서 케이스에서 MySQL의 JSON 저장소를 잘 사용할 수 있습니다.

추가 할 수있는 가능한 저장 유형에 대한 자세한 내용은 JSON 또는 ARRAYS입니다. 필자는 보통 JSON 저장소 대신 직렬화 된 배열을 사용합니다. 배열, 개체 클래스/배열 unserialized에 대한 더 많은 performant지만 (PHP에서 serialize 된 함수는 & & PHP로만 사용) 제한된. 그래서 당신을위한 선택 :

PHP에서만 데이터를 사용하고 있습니까? 예인 경우 : 배열, 아니요 경우 : JSON.

자세한 내용은 JSON vs. Serialized Array in database을 참조하십시오. 행운을 빕니다 !

0

관계형 데이터베이스에서 항상 normalize을 시도해야합니다. 이 관점에서 볼 때 json 문자열을 저장하는 것은 간단합니다.

JSON의 내용을 조작하거나 쿼리하지 않으려는 경우 성능에 영향을주지 않습니다. 즉, 기본 키를 설정하고 가져 오는 것입니다.

일반적으로 개체를 저장하고 특별한 경우가 아니라면 MongoDB와 같은 NoSQL Database을 살펴 보시기 바랍니다. 그것은 객체를 저장하고 수신하기위한 것입니다. 어쩌면 그것은 당신을위한 무엇인가, 어쩌면 아닙니다.


은, 엄지 손가락의 제 규칙이 말했다 : 당신은 단지 하나의 행이있는 테이블로 끝날 경우

  • 는, XML/JSON을 사용 (ConfigID | XML/JSON)
  • 당신이 만약 여러 행으로 끝나면 정규화를 수행하십시오.
관련 문제