문서 만료(때때로 '유효 기간'이라고도 함) 또는 TTL의 기능으로 카우치베이스 서버 를 한동안 사용할 수 있었습니다. 버전 1.3의 새 릴리스에서는 다음과 같은 기능이 추가되었습니다. 카우치베이스 모바일. 조금 더 자세히 살펴보겠습니다.
문서 및 수정본
카우치베이스는 다음과 같은 형태로 데이터를 저장합니다. JSON 문서에 저장합니다. 더 정확히 말하면, Couchbase는 문서의 수정본을 저장합니다. 자세한 내용은 여기서 다루고자 하는 범위를 벗어나지만 수정본은 이해해야 할 중요한 사항입니다. 이에 대한 자세한 내용은 다음에서 확인할 수 있습니다. 이 가이드.
삭제와 제거
로컬 데이터베이스에는 꼭 필요한 것만 저장하고 싶을 것입니다. 어떤 이유로 특정 문서가 더 이상 관련이 없다고 가정해 봅시다. 예를 들어 거래가 완료되었는데 사용자가 더 이상 세부 정보를 보관하고 싶지 않다고 가정해 보겠습니다.
문서를 삭제할 수 있습니다. 이렇게 하면 두 가지 효과가 있습니다. 첫째, 문서가 로컬에서 완전히 사라지지 않습니다. 카우치베이스 라이트는 일부 수정본 정보를 유지하고 문서를 "툼스톤" 항목으로 대체합니다. 둘째, 문서가 삭제되었다는 사실이 모든 복제본에 전파됩니다.
따라서 문서를 삭제한다고 해서 장치의 공간이 완전히 확보되는 것은 아닙니다. 그리고 데이터베이스의 다른 복사본에 있는 문서를 삭제하고 싶지 않을 수도 있습니다. 이 예에서는 사용자가 현재 장치에서 거래 세부 정보를 원하지 않지만 나중에 다시 검색하고 싶을 수 있다고 가정할 수 있습니다.
문서 삭제는 완전히 다른 작업을 수행합니다. 문서를 삭제하면 문서의 모든 흔적이 제거됩니다, 하지만 로컬 데이터베이스에서만. 데이터베이스를 동기화하는 경우, 삭제된 문서는 처음부터 로컬로 복제되지 않은 문서로 생각하면 도움이 될 수 있습니다. 문서는 여전히 원격으로 존재합니다. 실제로 원격 버전이 변경되면 문서가 복제 피드에 표시될 수 있으므로 로컬 사본을 다시 만들 수 있습니다.
이것은 우리의 예와 잘 맞습니다. 사용자는 더 이상 트랜잭션의 세부 사항에 신경 쓰지 않으므로 레코드가 로컬에서 제거되어 공간을 확보할 수 있습니다. 트랜잭션 세부 정보에 변경 사항이 있는 경우 앱은 복제에서 전달된 변경 사항을 확인하고 사용자에게 알릴 수 있습니다.
만료 = 자동 제거
이제 문서 만료에 대해 다시 설명하겠습니다. 만료와 관련된 다른 정보에 대해 말씀드렸습니다. 문서가 만료되면 자동으로 문서가 삭제된 것처럼 처리됩니다.
문서에 만료일을 설정하면 문서가 만료됩니다. 다음은 Java에서 이를 수행하는 방법을 보여주는 코드 스니펫입니다.
1 2 3 4 5 6 7 8 9 10 11 |
날짜 ttl = new 날짜(시스템.currentTimeMillis() + 5000); 문서 doc = 데이터베이스.createDocument(); 지도<문자열, 개체> 속성 = new 해시맵<문자열, 개체>(); 속성.put("foo", "bar"); 시도 { doc.putProperties(속성); } catch (카우치베이스 라이트 예외 e) { e.프린트스택트레이스(); } doc.만료일 설정(ttl); |
상대적인 시간이 아닌 절대적인 시간을 설정하고 있음을 알 수 있습니다. 해당 시간이 지나면 문서가 삭제된 것처럼 작동합니다.
마치 삭제된 것처럼 행동합니다. 백그라운드에서 처리하는 데 약간의 시간이 걸릴 수 있습니다. 실제로 문서가 삭제되기는 하지만 여러 가지 이유로 잠시 지연될 수 있습니다. 밀리초 단위의 정확성을 기대하지 마세요.