| 롤 토토 : 문서 : 9.5 : 롤 토토 | |||
|---|---|---|---|
| PostgreSQL : 문서 : 9.5 : 토토 사이트 추천 유형 | PostgreSQL : 문서 : 9.5 : 데이터 토토 커뮤니티 | 8장. 데이터 유형 | PostgreSQL : 문서 : 9.5 : 배트맨 토토 | 
무지개 토토 데이터 유형은 다음에 지정된 대로 무지개 토토(JavaScript Object Notation) 데이터를 저장하기 위한 것입니다.RFC 7159. 이러한 데이터는 다음과 같이 저장할 수도 있습니다.텍스트, 그러나 무지개 토토 데이터 유형은 저장된 각 값이 무지개 토토 규칙에 따라 유효하도록 강제하는 이점이 있습니다. 또한 이러한 데이터 유형에 저장된 데이터에 사용할 수 있는 다양한 무지개 토토 관련 함수와 연산자도 있습니다. 참조섹션 9.15.
무지개 토토 데이터 유형에는 두 가지가 있습니다:무지개 토토그리고무지개 토토b. 그들은 받아들인다거의입력과 동일한 값 세트. 실질적인 주요 차이점은 효율성 중 하나입니다.무지개 토토데이터 유형은 입력 텍스트의 정확한 복사본을 저장하며, 처리 기능은 각 실행 시 재분석해야 합니다. 동안무지개 토토b데이터는 분해된 바이너리 형식으로 저장되어 추가된 변환 오버헤드로 인해 입력 속도가 약간 느려지지만 재분석이 필요하지 않으므로 처리 속도가 훨씬 빠릅니다.무지개 토토b또한 색인 생성을 지원하는데 이는 상당한 이점이 될 수 있습니다.
왜냐하면무지개 토토유형은 입력 텍스트의 정확한 사본을 저장하며, 무지개 토토 객체 내의 키 순서뿐만 아니라 토큰 사이의 의미상 중요하지 않은 공백도 보존합니다. 또한 값 내의 무지개 토토 객체에 동일한 키가 두 번 이상 포함되어 있으면 모든 키/값 쌍이 유지됩니다. (처리 함수는 마지막 값을 작동 값으로 간주합니다.) 대조적으로,무지개 토토b공백을 보존하지 않고, 객체 키의 순서를 보존하지 않으며, 중복된 객체 키를 유지하지 않습니다. 입력에 중복 키가 지정된 경우 마지막 값만 유지됩니다.
일반적으로 대부분의 애플리케이션은 무지개 토토 데이터를 다음과 같이 저장하는 것을 선호합니다.무지개 토토b, 객체 키 순서에 대한 기존 가정과 같이 매우 특수한 요구 사항이 없는 한.
포스트그레SQL데이터베이스당 하나의 문자 세트 인코딩만 허용합니다. 따라서 데이터베이스 인코딩이 UTF8이 아닌 이상 무지개 토토 유형이 무지개 토토 사양을 엄격하게 준수하는 것은 불가능합니다. 데이터베이스 인코딩으로 표현할 수 없는 문자를 직접 포함하려는 시도는 실패합니다. 반대로, 데이터베이스 인코딩에서는 표현할 수 있지만 UTF8에서는 표현할 수 없는 문자는 허용됩니다.
RFC 7159는 무지개 토토 문자열에 다음으로 표시된 유니코드 이스케이프 시퀀스를 포함하도록 허용합니다.\uXXXX. 에 대한 입력 함수에서무지개 토토유형, 유니코드 이스케이프는 데이터베이스 인코딩에 관계없이 허용되며 구문의 정확성(즉, 4개의 16진수 뒤에 오는지)만 확인합니다.\u). 그러나에 대한 입력 기능은무지개 토토b더 엄격함: ASCII가 아닌 문자(위의 문자)에 대한 유니코드 이스케이프를 허용하지 않습니다.U+007F) 데이터베이스 인코딩이 UTF8이 아닌 경우.무지개 토토b유형도 거부함\u0000(그것은 표현할 수 없기 때문에포스트그레SQL's텍스트type), 그리고 유니코드 기본 다국어 평면 외부의 문자를 지정하기 위해 유니코드 서로게이트 쌍을 사용하는 것이 정확하다고 주장합니다. 유효한 유니코드 이스케이프는 저장을 위해 동등한 ASCII 또는 UTF8 문자로 변환됩니다. 여기에는 서로게이트 쌍을 단일 문자로 접는 것이 포함됩니다.
참고:다음에 설명된 다양한 무지개 토토 처리 함수9.15항유니코드 이스케이프를 일반 문자로 변환하므로 입력이 유형인 경우에도 방금 설명한 것과 동일한 유형의 오류가 발생합니다.무지개 토토아님무지개 토토b. 사실은무지개 토토입력 함수는 비UTF8 데이터베이스 인코딩에서 무지개 토토 유니코드 이스케이프의 간단한 저장(처리 없이)을 허용하지만 이러한 검사를 역사적 아티팩트로 간주할 수 없도록 만들지 않습니다. 일반적으로 가능하면 무지개 토토의 유니코드 이스케이프와 UTF8이 아닌 데이터베이스 인코딩을 혼합하지 않는 것이 가장 좋습니다.
텍스트 무지개 토토 입력을 다음으로 변환할 때무지개 토토b, 다음에서 설명하는 기본 유형RFC7159는 네이티브에 효과적으로 매핑됩니다.PostgreSQL유형, 다음과 같이표 8-23. 따라서 무엇이 유효한지에는 몇 가지 사소한 추가 제약이 있습니다.무지개 토토b다음에 적용되지 않는 데이터무지개 토토유형은 기본 데이터 유형으로 표현할 수 있는 항목에 대한 제한에 해당하는 추상적인 무지개 토토도 아닙니다. 특히,무지개 토토b범위를 벗어난 숫자는 거부합니다PostgreSQL 숫자데이터 유형, while무지개 토토그렇지 않습니다. 이러한 구현 정의 제한은 다음에서 허용됩니다.RFC7159. 그러나 실제로 이러한 문제는 무지개 토토을 나타내는 것이 일반적이므로 다른 구현에서 발생할 가능성이 훨씬 더 높습니다.번호IEEE 754 배정밀도 부동 소수점인 기본 유형(이것은RFC7159는 명시적으로 예상하고 허용합니다). 이러한 시스템과의 교환 형식으로 무지개 토토을 사용하면 원래 저장된 데이터와 비교하여 숫자 정밀도가 손실될 위험이 있습니다.포스트그레SQL고려되어야 합니다.
반대로, 표에 명시된 바와 같이 무지개 토토 기본 유형의 입력 형식에는 해당에 적용되지 않는 몇 가지 사소한 제한이 있습니다.PostgreSQL유형.
표 8-23. 무지개 토토 기본 유형 및 해당PostgreSQL유형
| 무지개 토토 기본 유형 | PostgreSQL유형 | 참고 | 
|---|---|---|
| 문자열 | 텍스트 | \u0000데이터베이스 인코딩이 UTF8이 아닌 경우 ASCII가 아닌 유니코드 이스케이프와 마찬가지로 허용되지 않습니다. | 
| 번호 | 숫자 | NaN그리고무한대값이 허용되지 않습니다. | 
| 부울 | 부울 | 소문자만참그리고거짓철자가 허용됩니다. | 
| 널 | (없음) | SQLNULL다른 개념입니다 | 
무지개 토토 데이터 유형의 입력/출력 구문은 다음에 지정되어 있습니다.RFC 7159.
다음은 모두 유효합니다.무지개 토토(또는무지개 토토b) 식:
-- 단순 스칼라/원시 값 -- 기본 값은 숫자, 따옴표 붙은 문자열, true, false 또는 null일 수 있습니다. 선택 '5'::무지개 토토; -- 0개 이상의 요소 배열(요소가 동일한 유형일 필요는 없음) SELECT '[1, 2, "foo", null]'::무지개 토토; -- 키와 값의 쌍을 포함하는 객체 -- 객체 키는 항상 따옴표로 묶인 문자열이어야 합니다. SELECT '"bar": "baz", "balance": 7.77, "active": false'::무지개 토토; -- 배열과 객체는 임의로 중첩될 수 있습니다. SELECT '"foo": [true, "bar"], "tags": "a": 1, "b": null'::무지개 토토;
앞서 언급한 바와 같이 무지개 토토 값을 입력한 후 별도의 처리 없이 출력하면,무지개 토토입력된 것과 동일한 텍스트를 출력하는 반면무지개 토토b공백과 같이 의미상 중요하지 않은 세부정보는 보존하지 않습니다. 예를 들어, 여기서 차이점을 확인하세요.
SELECT '"bar": "baz", "balance": 7.77, "active":false'::무지개 토토;
                      무지개 토토                       
-------------------------------------------------
 "bar": "baz", "balance": 7.77, "active":false
의미론적으로 중요하지 않은 한 가지 주목할 만한 세부사항은 다음과 같습니다.무지개 토토b, 기본 동작에 따라 숫자가 인쇄됩니다.숫자유형. 실제로 이는 숫자를 다음과 같이 입력했음을 의미합니다.E주석은 없이 인쇄됩니다. 예를 들면 다음과 같습니다:
SELECT '"읽기": 1.230e-5'::무지개 토토, '"읽기": 1.230e-5'::무지개 토토b;
         무지개 토토 |          무지개 토토B          
----------+------------
 "읽기": 1.230e-5 | "읽기": 0.00001230
그러나,무지개 토토b동등성 검사와 같은 목적으로 의미상 중요하지 않더라도 이 예에서 볼 수 있듯이 후행 분수 0을 보존합니다.
데이터를 무지개 토토으로 표현하는 것은 기존 관계형 데이터 모델보다 훨씬 더 유연할 수 있으며 이는 요구 사항이 유동적인 환경에서 매력적입니다. 동일한 애플리케이션 내에서 두 가지 접근 방식이 공존하고 서로 보완하는 것이 가능합니다. 그러나 최대한의 유연성이 필요한 애플리케이션의 경우에도 무지개 토토 문서가 어느 정도 고정된 구조를 갖는 것이 좋습니다. 구조는 일반적으로 적용되지 않지만(일부 비즈니스 규칙을 선언적으로 적용하는 것은 가능함) 예측 가능한 구조를 사용하면 일련의 유용하게 요약하는 쿼리를 더 쉽게 작성할 수 있습니다."문서"(데이텀)이 테이블에 있습니다.
무지개 토토 데이터는 테이블에 저장될 때 다른 데이터 유형과 동일한 동시성 제어 고려사항을 따릅니다. 큰 문서를 저장하는 것이 가능하더라도 모든 업데이트는 전체 행에 대해 행 수준 잠금을 획득한다는 점을 명심하십시오. 트랜잭션 업데이트 중 잠금 경합을 줄이려면 무지개 토토 문서를 관리 가능한 크기로 제한하는 것이 좋습니다. 이상적으로 무지개 토토 문서는 각각 비즈니스 규칙에 따라 독립적으로 수정될 수 있는 더 작은 데이터로 더 이상 세분화될 수 없는 원자 데이터를 나타내야 합니다.
테스트 중격리다음의 중요한 기능입니다.무지개 토토b. 에 대한 병렬 기능 집합이 없습니다.무지개 토토유형. 격리 테스트는 다음 중 하나를 수행합니다.무지개 토토b문서에 다른 문서가 포함되어 있습니다. 다음 예는 명시된 경우를 제외하고 true를 반환합니다.
-- 단순 스칼라/기본 값에는 동일한 값만 포함됩니다. SELECT '"foo"'::무지개 토토b @ '"foo"'::무지개 토토b; -- 오른쪽 배열은 왼쪽 배열 내에 포함됩니다. SELECT '[1, 2, 3]'::무지개 토토b @ '[1, 3]'::무지개 토토b; -- 배열 요소의 순서는 중요하지 않으므로 다음도 마찬가지입니다. SELECT '[1, 2, 3]'::무지개 토토b @ '[3, 1]'::무지개 토토b; -- 중복된 배열 요소도 중요하지 않습니다. SELECT '[1, 2, 3]'::무지개 토토b @ '[1, 2, 2]'::무지개 토토b; -- 오른쪽에 한 쌍의 객체가 포함됩니다. -- 왼쪽 개체 내에서: SELECT '"제품": "PostgreSQL", "버전": 9.4, "무지개 토토b": true'::무지개 토토b @ '"version": 9.4'::무지개 토토b; -- 오른쪽 배열은아님다음에 포함된 것으로 간주됩니다. -- 유사한 배열이 내부에 중첩되어 있어도 왼쪽에 배열: SELECT '[1, 2, [1, 3]]'::무지개 토토b @ '[1, 3]'::무지개 토토b; -- 거짓 결과가 나옵니다 -- 그러나 중첩 레이어를 사용하면 다음이 포함됩니다. SELECT '[1, 2, [1, 3]]'::무지개 토토b @ '[[1, 3]]'::무지개 토토b; -- 마찬가지로 여기에는 격리가 보고되지 않습니다. SELECT '"foo": "bar": "baz"'::무지개 토토b @ '"bar": "baz"'::무지개 토토b; -- 거짓 결과가 나옵니다 -- 최상위 키와 빈 객체가 포함되어 있습니다. SELECT '"foo": "bar": "baz"'::무지개 토토b @ '"foo": '::무지개 토토b;
일반적인 원칙은 포함된 객체가 구조 및 데이터 내용에 있어서 포함하는 객체와 일치해야 한다는 것입니다. 아마도 일치하지 않는 일부 배열 요소나 객체 키/값 쌍을 포함하는 객체에서 삭제한 후에 가능합니다. 그러나 포함 일치를 수행할 때 배열 요소의 순서는 중요하지 않으며 중복된 배열 요소는 효과적으로 한 번만 고려된다는 점을 기억하세요.
구조가 일치해야 한다는 일반 원칙에 대한 특별한 예외로서 배열에는 기본 값이 포함될 수 있습니다.
-- 이 배열에는 기본 문자열 값이 포함되어 있습니다. SELECT '["foo", "bar"]'::무지개 토토b @ '"bar"'::무지개 토토b; -- 이 예외는 상호적이지 않습니다. -- 비포함은 여기에 보고됩니다. SELECT '"bar"'::무지개 토토b @ '["bar"]'::무지개 토토b; -- 거짓 결과가 나옵니다.
무지개 토토b또한존재연산자, 이는 격리 테마의 변형입니다. 문자열(a로 제공됨)인지 여부를 테스트합니다.텍스트값)은의 최상위 수준에 객체 키 또는 배열 요소로 표시됩니다.무지개 토토b값. 다음 예는 명시된 경우를 제외하고 true를 반환합니다.
-- 문자열이 배열 요소로 존재합니다: SELECT '["foo", "bar", "baz"]'::무지개 토토b ? '술집'; -- 문자열이 객체 키로 존재합니다. SELECT '"foo": "bar"'::무지개 토토b ? '푸'; -- 개체 값은 고려되지 않습니다. SELECT '"foo": "bar"'::무지개 토토b ? '술집'; -- 거짓 결과가 나옵니다 -- 격리와 마찬가지로 존재 여부도 최상위 수준에서 일치해야 합니다. SELECT '"foo": "bar": "baz"'::무지개 토토b ? '술집'; -- 거짓 결과가 나옵니다 -- 기본 무지개 토토 문자열과 일치하면 문자열이 존재하는 것으로 간주됩니다. SELECT '"foo"'::무지개 토토b ? '푸';
무지개 토토 객체는 관련된 키나 요소가 많을 때 포함 또는 존재를 테스트하는 데 배열보다 더 적합합니다. 왜냐하면 배열과 달리 내부적으로 검색에 최적화되어 있고 선형적으로 검색할 필요가 없기 때문입니다.
팁:무지개 토토 포함이 중첩되어 있기 때문에 적절한 쿼리는 하위 개체의 명시적인 선택을 건너뛸 수 있습니다. 예를 들어, 다음이 있다고 가정해 보겠습니다.문서최상위 수준의 개체를 포함하는 열, 대부분의 개체 포함태그하위 객체의 배열을 포함하는 필드. 이 쿼리는 두 항목을 모두 포함하는 하위 개체를 찾습니다."기간":"파리"그리고"용어":"음식"나타나며 외부의 키는 무시합니다.태그배열:
웹사이트에서 문서-'site_name' 선택 어디에 문서 @ '"tags":["term":"paris", "term":"food"]';예를 들어 다음과 같은 방법으로 동일한 작업을 수행할 수 있습니다.
웹사이트에서 문서-'site_name' 선택 WHERE doc-'tags' @ '["term":"paris", "term":"food"]';그러나 그 접근 방식은 유연성이 떨어지고 효율성도 떨어지는 경우가 많습니다.
반면에 무지개 토토 존재 연산자는 중첩되지 않습니다. 무지개 토토 값의 최상위 수준에서 지정된 키 또는 배열 요소만 찾습니다.
다양한 포함 및 존재 연산자는 기타 모든 무지개 토토 연산자 및 함수와 함께 문서화되어 있습니다.섹션 9.15.
GIN 인덱스는 많은 수 내에서 발생하는 키 또는 키/값 쌍을 효율적으로 검색하는 데 사용할 수 있습니다.무지개 토토b문서(데이텀). 두 진"연산자 클래스"다양한 성능과 유연성의 절충안을 제공합니다.
다음에 대한 기본 GIN 연산자 클래스무지개 토토b최상위 키 존재 연산자를 사용한 쿼리 지원?, ?&그리고?|연산자 및 경로/값-존재 연산자@. (이러한 연산자가 구현하는 의미에 대한 자세한 내용은 다음을 참조하세요.표 9-41.) 이 연산자 클래스를 사용하여 인덱스를 생성하는 예는 다음과 같습니다.
GIN(jdoc)을 사용하여 API에서 idxgin 인덱스 생성;
기본이 아닌 GIN 연산자 클래스무지개 토토b_path_ops인덱싱을 지원합니다@연산자 전용. 이 연산자 클래스를 사용하여 인덱스를 생성하는 예는 다음과 같습니다.
GIN을 사용하여 API에서 idxginp 인덱스 생성(jdoc 무지개 토토b_path_ops);
문서화된 스키마 정의와 함께 타사 웹 서비스에서 검색된 무지개 토토 문서를 저장하는 테이블의 예를 고려하십시오. 일반적인 문서는 다음과 같습니다.
"guid": "9c36adc1-7fb5-4d5b-83b4-90356a46061a",
    "name": "안젤라 바튼",
    "is_active": 사실,
    "회사": "마그나폰",
    "주소": "178 Howard Place, Gulf, Washington, 702",
    "등록됨": "2009-11-07T08:53:22 +08:00",
    "위도": 19.793713,
    "경도": 86.513373,
    "태그": [
        "에님",
        "알리퀴프",
        "퀴"
    ]
우리는 이 문서를 이름이 붙은 테이블에 저장합니다.API, 에서무지개 토토b열 이름jdoc. 이 열에 GIN 인덱스가 생성되면 다음과 같은 쿼리가 인덱스를 사용할 수 있습니다.
-- "회사" 키의 값이 "Magnafone"인 문서를 찾습니다. SELECT jdoc-'guid', jdoc-'name' FROM api WHERE jdoc @ '"company": "Magnafone"';
그러나 다음과 같은 쿼리에는 색인을 사용할 수 없습니다.?인덱싱 가능하며 인덱싱된 열에 직접 적용되지 않습니다.jdoc:
-- "tags" 키에 "qui" 키 또는 배열 요소가 포함된 문서를 찾습니다. api에서 jdoc-'guid', jdoc-'name'을 선택하세요. jdoc - 'tags'는 어디입니까? 'qui';
그래도 표현식 인덱스를 적절하게 사용하면 위 쿼리는 인덱스를 사용할 수 있습니다. 내의 특정 항목을 쿼리하는 경우"태그"키는 일반적이므로 이와 같은 색인을 정의하는 것이 좋습니다.
GIN을 사용하여 API에서 idxgintags 인덱스 생성((jdoc - 'tags'));
이제,어디절jdoc - '태그' ? 'qui'인덱싱 가능한 연산자의 응용으로 인식됩니다?인덱싱된 표현식에jdoc - '태그'. (표현식 인덱스에 대한 자세한 내용은 다음에서 확인할 수 있습니다.PostgreSQL : 문서 : 9.5 : 와이즈 토토 색인.)
질의에 대한 또 다른 접근 방식은 격리를 이용하는 것입니다. 예를 들면 다음과 같습니다.
-- "tags" 키에 배열 요소 "qui"가 포함된 문서를 찾습니다. jdoc-'guid', jdoc-'name' FROM api WHERE jdoc @ '"tags": ["qui"]';
다음의 간단한 GIN 색인jdoc열은 이 쿼리를 지원할 수 있습니다. 그러나 이러한 인덱스는 모든 키와 값의 복사본을jdoc열에 비해 이전 예의 표현식 인덱스는태그키. 단순 인덱스 접근 방식은 모든 키에 대한 쿼리를 지원하므로 훨씬 더 유연하지만 대상 표현식 인덱스는 단순 인덱스보다 검색 속도가 더 작고 빠릅니다.
비록무지개 토토b_path_ops연산자 클래스는 다음이 포함된 쿼리만 지원합니다.@연산자, 기본 연산자 클래스에 비해 눈에 띄는 성능 이점이 있습니다무지개 토토b_ops. 갑무지개 토토b_path_ops색인은 일반적으로 a보다 훨씬 작습니다.무지개 토토b_ops동일한 데이터에 대한 색인을 생성하며 특히 쿼리에 데이터에 자주 나타나는 키가 포함된 경우 검색의 특이성이 더 좋습니다. 따라서 검색 작업은 일반적으로 기본 연산자 클래스보다 더 나은 성능을 발휘합니다.
a 사이의 기술적 차이무지개 토토b_ops그리고무지개 토토b_path_opsGIN 인덱스는 전자는 데이터의 각 키와 값에 대해 독립적인 인덱스 항목을 생성하는 반면, 후자는 데이터의 각 값에 대해서만 인덱스 항목을 생성하는 것입니다.[1]기본적으로 각무지개 토토b_path_ops색인 항목은 값과 해당 값으로 이어지는 키의 해시입니다. 예를 들어 색인을 생성합니다"foo": "bar": "baz", 세 가지 모두를 통합하는 단일 색인 항목이 생성됩니다.foo, 바및바즈해시 값에 넣습니다. 따라서 이 구조를 찾는 포함 쿼리는 매우 구체적인 인덱스 검색을 초래합니다. 하지만 여부를 알 수 있는 방법은 전혀 없습니다foo키로 나타납니다. 반면에, 가무지개 토토b_ops색인은 다음을 나타내는 세 개의 색인 항목을 생성합니다.foo, 바및바즈별도로; 그런 다음 포함 쿼리를 수행하기 위해 이러한 세 가지 항목이 모두 포함된 행을 찾습니다. GIN 인덱스는 이러한 AND 검색을 상당히 효율적으로 수행할 수 있지만 여전히 동등한 검색보다 덜 구체적이고 느립니다.무지개 토토b_path_ops특히 세 가지 색인 항목 중 하나를 포함하는 행이 매우 많은 경우 검색합니다.
의 단점무지개 토토b_path_ops접근 방식은 다음과 같은 값을 포함하지 않는 무지개 토토 구조에 대한 색인 항목을 생성하지 않는다는 것입니다."a":. 이러한 구조를 포함하는 문서 검색을 요청하는 경우 전체 인덱스 스캔이 필요하며 이는 상당히 느립니다.무지개 토토b_path_ops따라서 이러한 검색을 자주 수행하는 애플리케이션에는 적합하지 않습니다.
무지개 토토b또한 지원합니다브트리그리고해시색인. 이는 일반적으로 전체 무지개 토토 문서의 동등성을 확인하는 것이 중요한 경우에만 유용합니다.브트리주문무지개 토토bdatums는 별로 관심이 없지만 완전성을 위해 다음과 같습니다.
개체 배열 부울 번호 문자열 널 n개 쌍의 개체 n - 1 쌍의 객체 n개 요소가 있는 배열 n - 1개 요소가 있는 배열
동일한 수의 쌍을 가진 객체는 순서대로 비교됩니다:
키-1, 값-1, 키-2 ...
객체 키는 저장 순서에 따라 비교됩니다. 특히 짧은 키가 긴 키보다 먼저 저장되므로 다음과 같이 직관적이지 않은 결과가 발생할 수 있습니다.
"aa": 1, "c": 1 "b": 1, "d": 1
마찬가지로, 동일한 수의 요소를 가진 배열은 순서대로 비교됩니다:
요소-1, 요소-2 ...
기본 무지개 토토 값은 기본 무지개 토토 값과 동일한 비교 규칙을 사용하여 비교됩니다.포스트그레SQL데이터 유형. 문자열은 기본 데이터베이스 데이터 정렬을 사용하여 비교됩니다.
| [1] | 
 이 목적을 위해 용어"값"배열 요소를 포함하지만 무지개 토토 용어에서는 때때로 배열 요소를 객체 내의 값과 구별되는 것으로 간주합니다.  |