문제

내가 읽기에 대한 임시 데이터베이스 및 그들은 시간에 내장 된 측면이 있습니다.왜 우리는 그런 모델?

어떻게 다른가에서 정상적인 RDBMS?가 정상적인 데이터베이스에 즉RDBMS 고 말하는 트리거 연결하는 시간 스탬프와 함께하는 각 거래떻게 됩니까?수있을 것입 성능했다.하지만 나는 아직도 회의에서 시간적 데이터베이스는 강력한 경우에 시장이다.

은 모든 현재의 데이터베이스의 지원 등의 기능이?

도움이 되었습니까?

해결책

시간적 데이터베이스는 일반적으로 고정 된 시간 규모 (예 : 초 또는 밀리 초)를 갖고 측정 된 데이터의 변경 만 저장함으로써 시계열 데이터를 효율적으로 저장합니다. RDBMS의 타임 스탬프는 각 측정에 대해 그만 두어 저장된 값이며, 이는 매우 비효율적입니다. 시간 데이터베이스는 종종 SCADA와 같은 실시간 모니터링 애플리케이션에 사용됩니다. 잘 확립 된 시스템은 Osisoft의 PI 데이터베이스입니다.http://www.osisoft.com/).

다른 팁

고려의 약속/저널기-에서 월 1 일 월 31 일.이제 우리는 우리를 쿼리할 수 있습니다 일기 위한 약속을 저널에서 하는 여행객들에게 이상적입니다.이 순서가 불 시간 유효한.그러나,약속/항목이 있지 않은 일반적으로 삽입하기 위해서.

나는 무엇을 알고 싶 약속/항목에 내 일기 on April4th.는 모든 레코드에 존재하는 나의 일기장 on April4th.이 트랜잭션 시간.

주어진 것을 약속/항목을 만들 수 있습 및 삭제 등입니다.일반적인 레코드에는 시작과 끝에 유효한 시간을 커버하는 기간의 항목과 처음과 끝을 트랜잭션의 시간을 나타내는 기간 동안 입장에서 나타났 일기입니다.

이 배열은 필요한 때 일기를 받을 수 있습니다 사 개정.가정에서 월 5 나는 것을 깨닫게 약속을 했 월 14 일 실제로 발생 on February12th,즉나는에서 오류를 발견 내 일기-나는 오류를 수정할 수 있도록 시간 유효한 그림은 수정되었지만 지금은,나의 쿼리가 일기에 월 4 잘못된 것,지 않는 한,트랜잭션 시간은 약속에 대해/항목은 또한 저장된다.이 경우에는 경우 쿼리를 내기로 4 여 약속에 존재하는 월 14 그러나 내가 쿼리로 6 하여 약속에 월 12 일.

이번 여행의 기능에 현세적인 데이터베이스에 그것이 가능한 정보를 기록하는 방법에 대한 오류는 수정하는 데이터베이스에서.이것은 필요한 진정한 감사진의 데이터를 기록하는 경우 수정되었다고 할 수 있습 쿼리하는 방법에 관한 데이터를 걸쳐 수정되었습 시간입니다.

대부분의 비즈니스 정보를 저장해야에서 이 bitemporal 계획을 제공하기 위해서는 진정한 감사기록과를 극대화하는 비즈니스 인텔리전스-따라서 필요한 지원을 관계형 데이터베이스에서.통지는 각 데이터 항목을 차지(가능하게 결합하지 않은)광장에서 두 시간 차원 모델은 사람들이 왜 자주 사용하는 요점 인덱스 구현 bitemporal indexing.여기서 문제는 요지 인덱스는 정말로 설계된 지리적인 데이터와 요구 사항에 대한 임시 데이터는 다소 차이가 있습니다.

PostgreSQL9.0 제외 제약 조건을 제공해야 새로운 방법으로 조직의 시간적 데이터 예:트랜잭션이고 유효한 기간을 겹치지 않도록 해야 합 동일한 튜플입니다.

내가 이해할 때 (그리고 엄청나게 단순화), 시간적 데이터베이스는 데이터 자체뿐만 아니라 데이터 자체에 대한 사실을 기록하고 시간적 측면을 쿼리 할 수있게한다. 결국 '유효한 시간'및 '트랜잭션 시간'테이블, 또는 '유효한 시간'및 '트랜잭션 시간'측면을 모두 포함하는 '비밀 테이블'을 다루게됩니다. 이 두 권의 책 중 하나를 고려해야합니다.

시간 데이터베이스는 종종 금융 서비스 산업에서 사용됩니다. 한 가지 이유는 데이터를 거의 삭제할 수 없기 때문에 레코드에 대한 유효한 필드를 사용하여 레코드가 올바른시기를 표시하는 데 사용됩니다.

읽는 것 외에도 위키 백과 기사? "감사 로그"또는 유사한 트랜잭션 로그를 유지하는 데이터베이스에는 "시간적"이라는 속성이 있습니다. 질문에 대한 답변이 필요한 경우 누가 누구와 언제 무엇을했는지 그런 다음 시간 데이터베이스에 대한 좋은 후보자가 있습니다.

몇 초마다 GPS 위치를 기록하는 간단한 시간적 데이터베이스를 상상할 수 있습니다. 이 데이터를 압축 할 수있는 기회는 훌륭합니다. 모든 행에 타임 스탬프를 저장하는 데 필요한 일반 데이터베이스입니다. 많은 처리량이 필요한 경우, 데이터가 시간적이며 행으로 업데이트되고 삭제되는 것을 아는 것은 절대 필요하지 않습니다.

그럼에도 불구하고 시간적 데이터는 일반적으로 정상적인 RDBM에 저장됩니다. 예를 들어 PostgreSQL에는 일부가 있습니다 시간적 확장, 이것은 이것을 조금 더 쉽게 만듭니다.

두 가지 이유가 있습니다.

  1. 일부는 삽입 및 읽기에 최적화되어 있으며 극적인 성능 개선을 제공 할 수 있습니다.
  2. 일부는 전통적인 SQL보다 시간에 대한 더 나은 이해를 가지고 있습니다. 두 번째, 분, 시간 등으로 그룹화 작업을 허용합니다.

단지 업데이트, 시간 데이터베이스는 SQL Server 2016에 제공됩니다.

사용자 정의 메소드로 구성하기보다는 시간 데이터베이스가 필요한 이유와 SQL Server가 얼마나 효율적이고 원활하게 구성되는지, Channel9.msdn에서 심층적 인 비디오를 확인하고 데모를 확인하십시오. https://channel9.msdn.com/shows/data-exposed/temporal-in-sql-server-2016

MSDN 링크 : https://msdn.microsoft.com/en-us/library/dn935015(v=sql.130).aspx

현재 SQL Server 2016의 CTP2 (베타 2) 릴리스를 사용하면 플레이 할 수 있습니다.

확인하다 이 비디오 SQL Server 2016에서 시간 테이블을 사용하는 방법.

"어떤 새로운 일을 할 수 있습니까?"외에도 "어떤 오래된 것들이 통일 되는가?"를 고려하는 것이 유용 할 것입니다. 시간 데이터베이스는 "정상"SQL 데이터베이스의 특정 일반화를 나타냅니다. 따라서 이전에는 관련이없는 문제에 대한 통일 된 솔루션을 제공 할 수 있습니다. 예를 들어:

  • 웹 동시성 데이터베이스에 여러 사용자가 표준 작성/업데이트/삭제 (CRUD) 수정을 수행 할 수있는 웹 UI가있는 경우 동시 웹이 문제가됩니다. 기본적으로, 들어오는 데이터 수정이 해당 사용자가 해당 레코드를 마지막으로 본 이후로 변경된 레코드에 영향을 미치지 않는지 확인해야합니다. 그러나 시간 데이터베이스가 있다면 이미 "개정 ID"와 같은 것을 각 레코드와 연관시킬 수 있습니다 (타임 스탬프를 독특하고 단조로운 오름차순으로 만들기가 어렵 기 때문에). 그렇다면 데이터베이스 업데이트 중에 다른 사용자의 데이터가 막히는 것을 방지하기위한 자연스러운 "이미 내장 된"메커니즘이됩니다.
  • 법적/세금 기록 법률 시스템 (세금 포함)은 대부분의 프로그래머보다 역사적 데이터에 더 중점을 둡니다. 따라서, 당신은 종종 찾을 것입니다 조언 송장에 대한 스키마 및 자연스럽게 기록을 삭제하거나 정규화 할 것을 조심 해야하는 경고를 받는다. "현재 주소를 잊어 버린 기본 법적 질문에 답할 수 없을 정도로 2001 년 에이 송장을 우편으로 우송 했습니까? ? " 시간적 프레임 워크베이스를 사용하면 해당 문제에 대한 모든 가공 (일반적으로 시간 데이터베이스를 갖는 중간 단계)가 사라집니다. 당신은 가장 자연스러운 스키마를 사용하고, 항상 돌아가서 역사적 질문에 정확하게 대답 할 수 있다는 것을 알고, 의미가있을 때 삭제하십시오.

반면에, 시간 모델 자체는 개정 제어를 완료하기 위해 절반 정도이며, 이는 추가 응용 프로그램에 영감을 줄 수 있습니다. 예를 들어, 수정 제어 시스템에서와 같이 SQL 위에 자신의 시간 시설을 굴려서 분기를 허용한다고 가정 해 봅시다. 제한된 분기조차도 "샌드 박스"를 쉽게 제공 할 수 있습니다. 다른 사용자에게 눈에 띄는 변경을 유발하지 않고 포기하여 데이터베이스를 재생하고 수정할 수 있습니다. 따라서 복잡한 데이터베이스에 매우 현실적인 사용자 교육을 쉽게 제공 할 수 있습니다.

간단한 병합 시설을 갖춘 간단한 분기는 일부 일반적인 워크 플로 문제를 단순화 할 수 있습니다. 예를 들어, 비영리 단체에는 자원 봉사자 또는 저임금 근로자가 데이터 입력을하는 데 도움이 될 수 있습니다. 각 작업자에게 자신의 지점을 제공하면 감독자가 자신의 작업을 검토하거나 "정상적인"사용자에게 볼 수있는 메인 브랜치로 병합하기 전에 쉽게 감독자가 자신의 작업을 검토하거나 (예를 들어, 대체화되지 않음) 쉽게 할 수 있습니다. 지점은 또한 권한을 단순화 할 수 있습니다. 사용자가 고유 한 지점을 사용/볼 수있는 권한 만 부여받는 경우 원치 않는 모든 수정을 방지하는 것에 대해 걱정할 필요가 없습니다. 어쨌든 의미가있는 변경 사항 만 병합 할 것입니다.

시간 데이터베이스에 대한 나의 이해는 특정 유형의 시간 정보를 저장하기위한 것입니다. 표준 RDBMS를 사용하면 시뮬레이션 할 수 있지만 지원하는 데이터베이스를 사용하면 많은 개념을 위해 내장 된 관용구가 있으며 쿼리 언어는 이러한 종류의 쿼리에 최적화 될 수 있습니다.

나에게 이것은 RDBM이 아닌 GIS 별 데이터베이스 작업과 비슷합니다. 밀링 RDBM에서 좌표를 밀어 넣을 수 있지만 적절한 표현 (예 : 그리드 파일을 통해)을 갖는 것이 더 빠를 수 있으며 토폴로지와 같은 것들에 대한 SQL 프리미티브가 유용합니다.

학업 데이터베이스와 일부 상업 데이터베이스가 있습니다. Timecenter에는 몇 가지 링크가 있습니다.

시간 데이터베이스가 유용한 위치의 또 다른 예는 시간이 지남에 따라 데이터가 변하는 위치입니다. 나는 몇 년 동안 전기 소매 업체에서 일하면서 30 분 동안 미터 판독 값을 저장했습니다. 이러한 미터 판독 값은 언제라도 개정 될 수 있지만 여전히 읽기 변화의 역사를 되돌아 볼 수 있어야했습니다.

따라서 우리는 최신 독서 (30 분 동안 소비에 대한 '현재의 이해')를 가지고 있었지만 소비에 대한 역사적 이해를 되돌아 볼 수 있습니다. 시간적 데이터베이스가 잘 작동하는 방식으로 조정할 수있는 데이터가있는 경우.

(우리는 수작업을 SQL로 조각했다고 말했지만, 그것은 전혀 공평했습니다. 요즘에는 그 결정을 내리지 않을 것입니다.)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top