포스트그레스

소개

이 문서는 포스트그레스 데이터의 파이썬 페이지 매김에 대한 자습서입니다. 여러 가지 이유로 레코드 집합의 반환을 작은 청크로 제한할 수 있습니다. 우리의 방법론:

  • 무엇을 왜? 파이썬 페이지 매김은 무엇입니까? 왜 우리는 포스트그레스 데이터를 파이썬으로 그리고 어떤 상황에서 페이지 매기기를 원할까요?
  • 어떻게? 파이썬으로 포스트 그레 클 결과를 어떻게 페이지 매김합니까? 소규모 데이터 세트에 대해 이를 수행하는 가장 빠르고 쉬운 방법은 무엇이며 서버 또는 클라이언트 리소스가 제한적이고 정확성이 가장 중요한 대규모 데이터베이스 및/또는 상황에 대해보다 강력하고 효율적인 방법은 무엇입니까?

전제조건

  • 우리는 때문에 용이성과 기능의 수의 디비버를 사용합니다.
  • 선택:이 문서의”선택”명령을 자유롭게 사용하여 파이썬 응용 프로그램으로 포스트그레스 데이터베이스를 쿼리합니다.
  • 변수,열 이름,테이블 이름 등에 접두사를 붙일 이유를 보여주는 명명 규칙에 대한 자습서 이 문서에서 수행 참조. 예를 들어,”티”접두사로”티”를 지정하여”텍스트”(문자열)객체로 정의하고 테이블 이름 앞에”티블_”을 지정하면 이러한 객체를 테이블로 명확하게 구별 할 수 있습니다. 튜토리얼은 계층 시스템을 기반으로 변수의 이름을 지정하는 방법에 대해 이야기뿐만 아니라,조금 더 깊이 간다.

포스트그레스 테이블 만들기

포스트그레스 테이블 만들기

1
2
3
4
5
6
7
8
9
10
테이블 공개 만들기.2569>제약 조건 페이지 내용 기본 키(아이디)

(#);
공개에 고유 인덱스 페이지를 만듭니다.페이지 내용:페이지 내용:페이지 내용:페이지 내용:페이지 내용:페이지 내용:페이지 내용:페이지 내용);

그래서 우리는 테스트 할 것이 있습니다:

1
2
3
4
5
6
7
8
9
10
11
페이지 내용

0123456789′,((랜덤()*(36-1)+1)::나는 이것이 내가 원하는 것을 가지고 있다고 생각하지 않는다.(1,10000);

개요:”페이지 내용”테이블에 10000 개의 레코드를 삽입하고 있습니다. 각 레코드에 대해 이 두 숫자를 포함하여 1 에서 100 사이의 난수로”아이디 _저자”필드를 채우고 있습니다. 우리는 또한 알파벳에서 32 자의 임의의 문자열로”제목”필드를 채우고 있습니다.

참고:더 큰 데이터 집합이 필요한 경우 위에 표시된”10000″을 더 큰 숫자로 늘리기만 하면 됩니다.

분석

  • ::1 과 100 사이에 있고”저자”열에 배치하기에 충분한 데이터 형식이 되도록”1″을 추가합니다.
  • 배열 문자열:36 자 길이의 문자열에서 32 번(“시리즈 생성(1,32)”)을 무작위로 선택하고 0 에서 9 까지 선택하여”제목”필드에 삽입되는 문자열을 만듭니다.10,000 개의 행을 생성하도록 지정합니다.

이제 우리가 작업 할 수있는 큰 데이터 세트를 가지고,의 파이썬을 사용하여이 테이블에서 데이터를 검색하는 두 가지 방법을 살펴 보자.

포스트그레스의 파이썬 페이지 매김 빠르고 더러운 방법

가장 효율적이지는 않지만 가장 자주 사용되는 것은 일반적으로”제한 오프셋”페이지 매김을 사용하는 객체 또는 라이브러리입니다. 데이터베이스가 작거나 중간 크기인 경우,이 기능은 제대로 작동해야 하며,단점도 거의 없습니다. 나중에 더 강력한 방법을 사용할 때 차이점에 대해 이야기하겠습니다.

첫째,페이지 매김 방법의 장점:

  • 데이터의 첫 페이지가 더 빨리 로드됩니다. 앱이 얼마나 빨리의 사용자 인식을 위해,이 매우 중요합니다!
  • 대규모 데이터 세트를 보다 빠르게 볼 수 있습니다.
  • 비즈니스 로직 캡슐화 가능성(수행 방법에 따라 다름).
  • 클라이언트는 한 번에 더 적은 데이터를 수신하고 있으며,이는 특정 환경에서 요구 사항이 아니라면 매우 유용 할 수 있습니다.

다음으로 사용할 방법에는 합계,제한,오프셋 및 건너 뛰기가 포함됩니다.

이제 몇 가지 코드를 살펴 보겠습니다.:

1
2
3
4
5
6
7
8
9
10
11
12
13
2015 년 11 월 1 일,2015 년 11 월 15 일,2015 년 11 월 15 일,2015 년 11 월 15 일,2015 년 12 월 15 일,2015 년 12 월 15 일,2015 년 12 월 15 일,2015 년 12 월 15 일,2015 년 12 월 15 일,2015 년 12 월 15 일,2015 년 12 월 15 일,2015 년 12 월 15 일,2015 년 12 월 15 일,2015 년 12 월 15 일,2015 년”오프셋”+오프셋
#쿼리의 결과”제한”부분:”제한 10″
#쿼리의 결과”오프셋”부분: “오프셋 20”

분석

  • 페이지_전류:테스트 목적으로 현재 페이지를 3 으로 설정했습니다.페이지 당 10 개의 레코드 만 반환하려고합니다.
  • 오프셋:이 매개 변수는 포스트그레스가 테이블에서”점프”할 거리를 알려주는 매개 변수입니다. 기본적으로”이 많은 레코드를 건너 뜁니다.”
  • 에스:실행을 위해 포스트 스크립트에 보낼 쿼리 문자열을 만듭니다.

위의”한계 오프셋”페이지 매김 방법의 가장 큰 문제점은”커버 아래”포스트 그레스가 총 레코드 양을 합산하고 그 수를 기반으로 페이지를 계산하고 인덱스를 스캔하여 행 수를 세는 것입니다. 처음 몇 페이지를 사용하면이 비용이 분명하지 않을 수 있습니다. 그러나 더 큰 레코드 세트와 심지어 중간 크기의 레코드 세트를 사용하면”페이지_전류”가 높아질수록 느린 것을 얻을 수 있습니다. 다행히도 포스트 그레스 데이터의 페이지 매김을 수행 할 수있는 많은 방법이 있습니다.

더 나은 방법: 위의 메서드를 사용 하 여 관련 된 단점 중 일부를 완화 하는 솔루션 이전 페이지에서 마지막 레코드의 고유 아이디를 전달 하는 것입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
200 페이지 이전=200
페이지 현재=3
레코드 당 페이지=10
제한 옵션 오프셋이 더 이상 필요하지 않습니다.2015 년 11 월 1 일,서울시 강남구 테헤란로 15 길 16(역삼동),서울시 강남구 테헤란로 15(역삼동),서울시 강남구 테헤란로 15(역삼동),서울시 강남구 테헤란로 15(역삼동),서울시 강남구 테헤란로 15(역삼동),서울시 강남구 테헤란로 15(역삼동),서울시 강남구 테헤란로 15(역삼동),서울시 강남구 테헤란로 15(역삼동),서울시 강남구 테헤란로 15(역삼동),서울시 강남구 테헤란로 15(역삼동),서울시 강남구 테헤란로 15(역삼동),서울시 강남구 테헤란로 15(역삼동),서울시 강남구 테헤란로 15(역삼동),서울시 강남구 테헤란로 15(역삼동)”오프셋”+오프셋
#결과”제한”쿼리의 일부:”제한 10″

이 방법을 사용하면 더 이상 오프셋 명령이 필요하지 않습니다. 이전 레코드를 제외하도록”위치”절을 추가하여 레코드를 표시 할 위치를 알 수 있으므로 반환 할 레코드 수를 명령하기 위해 제한을 계속 사용합니다.

포스트그레스 테이블을 페이지 매기는데 더 효율적인 방법이 있지만,위의 방법은 속도와 효율성면에서 엄청난 이점을 얻습니다. 매우 중요한 고려 사항은”아이디”가 색인화되어야한다는 것입니다.

결론

이 튜토리얼에서 우리는 포스트 그레스 데이터의 페이지 매김에 파이썬을 사용하는 두 가지 방법을 배웠습니다. 그래서 우리는 테스트를 기반으로 할 것이 있었고,파이썬에서 두 가지 페이지 매김 방법을 비교했고,마지막으로 두 방법의 장단점을 분석했습니다. 이 과정에서 우리는 포스트그레 스의”무작위”함수,포스트그레 스에 보낼 빌드를위한 파이썬 문자열 연결 및 변수 생성을 사용했습니다.

답글 남기기

이메일 주소는 공개되지 않습니다.