Introduction to Aiven Postgres Cloud Database

Aiven 포스트 그레스는 완벽하게 관리 클라우드 데이터베이스 서비스입니다 당신은 무료 평가판 https://aivenio에 가입 할 수 https://aiven

io의 시작하자 이것은 가입 페이지입니다, 당신의 이름을 입력 이메일 주소와 비밀번호 당신은에 로그인 할 때 이메일 주소와 비밀번호를 사용합니다 가입을 클릭하면 계정 확인 링크와 함께 저희에게 이메일을 전송 전자 메일 응용 프로그램으로 이동 Aiven에서 메일을 찾을 수 계정을 확인하는 이메일에있는 링크를 클릭 당신은 다음 Aiven 대시 보드로 진행할 수 있습니다 대시 보드는 현재 실행중인 서비스의 목록을 보여줍니다 뿐만 아니라 현재 결제 상태와 같은 이 새 계정이기 때문에 더 실행중인 서비스는 아직 없습니다 의 하나를 만들어 보자 작성 서비스 대화 우리는 새로운 서비스의 이름을 지정하고 유형을 선택할 수 있습니다 우리는 지금 포스트 그레스를 사용 하겠지만, 다른 데이터베이스와 서비스도 이용할 수 있습니다 우리는 또한에 취미 범위 서비스에 대한 계획을 선택할 수 있습니다 비즈니스와 프리미엄 계획에 시작 그래서 더 많은 노드 및 디스크 공간으로 우리는 지금은 취미 계획을 사용합니다 우리는 또한 데이터베이스가 실행됩니다 클라우드를 선택할 수 있습니다 여러 구름과 지역 지원 우리는이 데모에 대한 유럽 연합 (EU)에서 Google 클라우드를 사용합니다 만들기를 클릭하면 서비스 개발을 시작합니다 대시 보드는 현재 건설되고 서비스를 보여줍니다 서비스 이름을 클릭하면 개요 페이지를 서비스하기 위해 우리가 걸립니다 여기서 우리는 서비스의 현재 상태를 볼뿐만 아니라 수 있습니다 연결 매개 변수 및 기타 관련 정보 서비스를 만들기 분 정도 걸릴 것 또는 두 개의 이제 서비스가 실행되고 있는지 우리는 예제 PSQL 명령 행 도구를 사용하여 액세스 할 수 있습니다 우리는 서비스 URL 표시 줄을 클릭하고 URL을 복사거야, 그리고 우리는 우리가 psql의 실행 볼 수있는 곳 터미널을 열고 이제 우리는 psql의 콘솔에있어 우리는 데이터베이스가 비어있는 것을 볼 수 있습니다 의 테이블을 만들어 보자하고 일부 데이터 쓰기 이 자동 증가 기본 키를 사용하여 새 테이블 어떤 JSON 데이터 열 우리는 하나 개의 행을 입력 할 수 있습니다 이제 우리는 테이블이 존재하는 것을 알 수 있습니다 우리는 우리가 방금 입력 한 값을 읽을 수 있습니다 우리는 지금 콘솔로 돌아가서 쿼리 통계 살펴 보겠습니다 통계 탭은 우리가 실행 된 쿼리를 표시합니다 두 번 실행 된 긴 이상한 찾고 쿼리, 이 테이블을 나열 할 때이 psql 프로그램에 의해 실행 된 현재 쿼리를 실행하는 등 빈 될 것입니다 데이터베이스에 아무것도 실행 지금 거기 백업 탭은 데이터베이스에서 수행 된 전체 백업을 나열 이 전체 백업에 추가 Aiven 지속적으로 백업 실시간으로 모든 변경 사항을 포함하는 데이터베이스 미리 쓰기 – 로그 즉 우리의 소개를 완료 aivenio로 이동하여 서비스의 무료 평가판에 가입하세요

RailsConf 2016 – Multi-table Full Text Search with Postgres By Caleb Thompson

(낙관적, 신나는 음악) – 오늘 우리는 다소 약거야 말거야 검색 할 방법이 아닌 표준 응용 프로그램이다 종종, 검색 일종의에서 이루어집니다 외부 서비스의

죄송합니다 보다 나은? 보다 나은? 난 그냥 30 분 동안 같이 서 있습니다 내가 그 여분의 시간이 있었기 때문에, 이상부터, 우리는 다소 비표준에 대한거야 말거야 응용 프로그램에서 검색 방법 종종, 검색거야 어떤 종류로 할 수있다 외부 서비스의 오히려 것을하는 것보다, 우리는거야 사용하는 것 이미 저장에 대한 책임의 도구 데이터를 찾는

포스트 그레스에서 멀티 포트 테이블 전체 텍스트 검색에 오신 것을 환영합니다 나는 우리가 수요일 포옹을하고 있지 갈렙 톰슨입니다 당신은 인터넷에이 장소에서 나를 찾을 수 있습니다 이야기하는 동안 나에게 트윗 주시기 바랍니다 내가 그 똥을 사랑 해요 당신은 트위터를하지 않는 경우에, 당신의 노트북을 닫으 마십시오

여기에 코드를 많이있을거야, 아무것도 구하기 힘든 될 것 이 이야기에서 당신이보고하지 않는 경우 지금은 당신이 종료해야한다고 말했으니 당신의 노트북, 나는 자격 증명에 뛰어 좋아하지 않는다 이야기의 시작 부분에서, 당신은 이미 여기있어, 그 요점이 무엇인지의 종류입니다 우리는 우리가 바이오했다, 추상 있었다 그래서 당신은 마지막에 나에 대해 조금 더 듣게 될 것입니다, 하지만 명성 한 주장을해야합니까, 즉 내 생일이 SimpleDelegator의 DOX에 있는지의 그 그래서 당신은 내가 전문가는 아니지만 알고있다 나는 실제 기능에 대해 얘기하겠습니다

우리는 다른 옵션을 반복,을거야 우리는 우리가있어 할 때처럼 최적화 우리의 응용 프로그램의 기능을 개발하고 있습니다 우리는 전체 텍스트 검색에 대한 거 얘기입니다 그것이 무엇인지, 그것은 우리를 도울 수있는 방법 바라건대, 당신은 제목에서 그것을 짐작 할 수있다 우리는 뷰에 대한 거 이야기하고 있으며, 아니, 하지 HTML보기, 우리는 데이터베이스 뷰에 대한 거 얘기입니다

당연히, 우리는 성능에 영향을 탐구 할 무엇이든 우리는 일을하고 있습니다 그래서 우리는 몇몇의 거보고있어 성능에 미치는 영향, 어떻게 우리가 그들을 완화 할 수 있습니다 그리고 우리는 물론 구체화 전망에 대한거야 말거야 하나의 방법으로 그렇게 할 수 있습니다 우리는 할 수는 우리를하는 데 도움이 보석의 몇 가지 살펴 보자 우리는이 재미있는 물건을하고있는 동안, 물론, 우리는 다른 모든 옵션에 거 봐있어 또는 우리가 무슨 일을하는지에 대한 몇 가지 다른 옵션 좋아, 고전적인 예를의 종류를 살펴 보자

의 우리의 applicaiton에서 문서를 검색 할 수 있습니다 우리가 가능하게 할 수있는 간단한 일이 그 작품 문자열을 검색하는 것입니다 그래서, 여기에 우리는 몸이 포함 기사를 가지고, 어떻게이 찾고? 무서운? 누군가가 거기에 불을 칠 수 있습니까? 그냥 괜찮아요, 계속 어떻게 더 나은 것을입니까? 즉, 더 나은 외모, 나는 그것을 볼 수 있습니다 우리는 기사에서 거보고있어 어디 몸 일부 문자열을 포함하는 쿼리를 고정합니다

당신은 아마 응용 프로그램에서 이것을 보았다 이 작동합니다 사용자가 정확히 알고있는 경우에 그것은 작동 그들이 찾으려 그래서 만약 그들이이 검색하는 말과 글, 그 단어 책, 그들은 소문자 될 것 알고, 어딘가 문장의 중간에, 그들은 다음과 같이 검색 할 수 있습니다, 당신은에서 해당 검색의 권리를 전달할 수 있습니다 내가 말했듯이, 그 정확한 문자열을하고있어 즉, 가장 유용한 것은 아니다

그래서, 앞으로 작은 작은 단계는 우리가 취할 수 ILIKE와 같은 문자를 구분 케이스를하는 것입니다 나는 이것을 좋아하지 않는다 그러나 약간 더 좋다 좋아, 음, 떠날 수 있습니다 그것은 일종의 우리가 지금 필요하지 않습니다

우리는 문장의 위치를 ​​알 필요가 없습니다 당신이 검색하는 단어는 멋지다입니다 좋아요, 자연스럽게, 기능 확장합니다 우리는 타이틀을 기반으로 검색 할 필요가 우리의 기사 우리는 아마 오는 것을 본 적이해야 때 우리가 검색되었습니다 우리도이 문제를 처리 할 수 ​​있습니다

우리는 그저 우리가 이미 한 일을 확장 할 수 있습니다 우리는 두 번 대신 한 번 그 쿼리에 거 패스있어 우리는 여전히 같은 그 사례를 구분을 다하겠습니다 여기에서 퍼센트 기호는 그것이거야 그래서 어느 곳에서나 쿼리에 표시됩니다 어느 곳 단어입니다 그래서 당신은 문자열의 모든 종류의 하위를 가질 수 텍스트이다 그래서 지금 우리는 저자의 이름으로 검색 싶어요

이것은 당신이 알고, 좀 더 복잡해지고되지만, 다시, 아마 우리가 오는 것을 본 적이 있습니다 우리는 가서 우리의 사용자 모델에 참여합니다 나는 우리가 사용자 거 사용에있어, 사과 및 상호 교환이 이야기에서 저자의 테이블 사용자 테이블 이것은 기본적으로 같은 질문이지만, 우리는 일을하는지, 우리는 레일, arell, 조인을 처리시키는 것 그리고 우리는 당신이 알고,하고있는 사용자의 이름과 같은 두 개의 필드를 당겨 것을 우리는 이미 철수했다

즉, 쿼리, 쿼리, 쿼리는 더듬 거리는 시작 이는 우리가 정말 우리의 코드에서 원하지 않는 무언가이다 그래서 하나의 방법 우리는 다음과 같이 리팩토링 수 질의 객체에 그것을 할 것입니다 그리고이 덜 확대됨에, 그러나 틀림없이 쉽게 당신이 그것을 찾을 때 이해합니다 그것이 아래로 올 때, 우리는 여전히있어 정말 가난한 결과 우리는이 대소 문자를 구분 문자열을 검색하고, 그리고, 당신은 알고있다, 그 위대한 아니다

단어거야 복수 무엇을 할 경우, 우리는 단수가 우리가 유일한 것들에 대한 검색하는 경우 쿼리 또는 무엇 Google은 이러한 일을하는 방법을 알고, 그것은 우리의 사용자가 우리에게서 기대려고하고있는 무슨이다 우리는이 검색 기능을 구축 할 때 전체 텍스트 검색을 입력합니다 전체 텍스트 검색은 우리가 행을 조회 할 수 있습니다 자연어 검색을 기반으로 이봐, 갈렙, 자연 언어는 무엇을 찾고 있는가? 나는 당신이 물어 기뻐요

자연어 검색은 우리를 수 쿼리에서 정지 작업을 제거합니다 그래서이 모든 종류의에 나타나는 단어는 문장, 그들이 우리에게 의미 론적 의미하지 많이있다, 우리는 정말 그들을 포함되지하려면 검색 결과입니다 우리는 단어를 포함하는 모든 검색을 원하지 않는, 또는 단어를 반환 모든 기사, 우리의 검색 결과에 표시합니다 다시 말하지만, 단지 ILIKE 대 등을 좋아한다, 우리는 케이스를 제거거야 매우 간단합니다

우리는 동의어가 보여주고 싶은 그래서 우리의 사용자가 마음에 종류의 개념이있는 경우 그들은 검색하는하지만 기억하지 않습니다 정확히 무엇인지, 다음, 당신이 알고, 이들 모두는 동일한 결과를 반환해야합니다 그리고 우리는 형태소 통합하는거야, 자연 언어 검색의 또 다른 특징이며, 어떤 의미가 관련 단어, 시도, tyring 및 시도와 같은, 이들은 모두 다른 버전입니다 동일한 루트 단어, 그래서 우리는 아래를 기록 동일한 개념 우리는 우리의 검색을하고있는 후드 아래, 우리는 실제로 검색하는 대신에 그 어원 에 전달 된 특정 단어 그래서 여기에 같은 쿼리를 만드는 예입니다 우리는이 코드에서 줌거야 종류의 주변에있어 조금 우리는 더 중요한 부분을 강조합니다 그래서 여기에 우리는 텍스트를 찾고 우리가 싶은 것을 가입 할 수 있습니다

우리는, 제목, 빈 공간 있음을 사슬로 잇다 수 없다는 것 다음 몸 우리는 우리가 필요해서, 텍스트 것을 전화 할게 포스트 그레스는 행복하기 위해 이름을 지정하고, 그래서 그게 무슨, 두 개의 파이프 사업자의 을 덧붙인 있습니다 그리고 우리는 또한 저자의 이름으로 끌어거야 텍스트로 우리가 당기는 때 그리고, 당연히, 우리는 ID를 원하는 기사와 기사의 ID에서 밖으로 때 우리는 저자의 철수하고 있습니다 우리가 원하지 않기 때문에 우리는 독특한 결과를 원하는 같은 기사는 시간의 무리를 표시합니다 우리의 쿼리에서, 경우가 여러 번 나타난다 본문에, 또는이 모두를 표시하는 경우 저자 테이블과 제목이다

우리 몸에있어 좋아, 그래서는 SQL의 많은입니다 우리는 어디에서이 모든 배치해야합니까? 우리는 우리의 쿼리 객체로 그것을 다시 던질 수 우리가 마지막에서 본 우리는 몇 가지 코드를했다 기본적으로, 그냥 인라인 SQL 실행 어디서 통해 되었

범위와 같은 것 거기에 던져, 그냥 쿼리 전달 그래서, 보간,하지만, 정직하게 SQL은 RV 파일에 속하지 않는 것을 우리는 대한 확장을 가지고있다 그래서 포스트 그레스는 실제로 우리의 답이있다 뷰의 형태로 사용될 수있다 보기는 데이터베이스에 저장된 일부 쿼리입니다 즉, 선택 될 수있다 그것은 할 수 있습니다 열 집합을 반환 나중에에 대한 검색

그들이이기 때문에 뷰의 본질은,이다 기본적으로 그냥 쿼리, 그들은 여러 소스 테이블을 가질 수 있습니다 그래서 지금 우리는 사용자 / 저자 테이블을 가지고있다 우리는 기사의 테이블을 가지고, 그래서이보기 우리를 수 초록의 거리에 그냥 말을 정렬하려면 이것은 우리가 걱정하는 텍스트입니다 그리고 우리는 어디를 수행 할 수 있습니다 나중에, 우리는 우리가해야 할 무엇이든 할 수 있습니다 는 의미입니다 수 있도록 해당 쿼리를 완료 우리의 사용자에게 그들은 실제로 수행 할 때 나중에 길 아래 검색 그래서, 우리가 건설하려고한다면, 여기 예를 들어보기의 단지 종류입니다

우리는이 뷰를 생성 구문을 가지고있다 그냥 당신이 테이블 것 같은, 이름을 지정 우리는 서로 다른 사용자 ID를 선택할 수 있습니다 그래서 지금, 분명 우리가 당기는있어 사용자 최근 활동 그래서 우리는 다른 테이블의 커플거야 모양이야

우리는 사용자에 대한 모든 정보를보고 싶어 또한 마지막으로 그들은 활동했다 그래서, 우리는 각 사용자의 인스턴스를 원하는 내가 말했듯이, 우리는 사용자 테이블에서 해당 행을 모두 원하는, 우리는이 개념을 만들려고 에서 당겨 사용자의 마지막 활성 시간 활동은 열을 만들었습니다 그리고 우리는 단지, 활동이 제한거야 또는 지난 7 일 동안 활약 한 사용자 그래서, 우리는이보기를 통해 찾을 때, 그것은 테이블을 통해 무엇을 검색에 꽤 비슷 과 같을 것이다 당신은, 사용자의 모든 선택 어떤 선택 최근 활동, 순서, 당신이 무엇을 할 필요가있다

그리고, 사실, 액티브 있도록 유사 모델에 대한 백엔드로 뷰를 사용할 수 있습니다 그래서 우리가 할 수있는 것은 상당히 바닐라 모델을 만드는 것입니다, 아주 익숙하고, 우리는 그와 상호 작용할 수 있습니다 마치 우리의 데이터베이스의 테이블이었다 그래서 우리는 최근의 활동 모델이 사용자를 가지고있다 당신이 볼 수 있듯이, 그것은 액티브 서브 클래스입니다 우리는 단지 때문에, 그것을 테이블 이름을 지정거야 해당 테이블의 우리의 이름은하지 않았다 레일이 때 예상 한 것과 일치 클래스 이름을 부여하고, 우린 그에게있어 그것은 읽기 전용 있다고

그리고 이것은 엄격하게, 진실 말하기되지 않는다 하지만 그것은 단지보기 가정하는 가장 쉬운 방법 읽기 전용 것입니다 당신이 읽기 전용되지 않도록해야하는 경우, 그 몇 가지 특별한 규칙이 있습니다 즉 관객을위한 운동입니다 그러나,이 말씀, 그것은 레일을 알 수있다 아무 것도 삭제 될 수 없다, 아무것도 할 수 없다 이 표에 기록 그래서, 읽기 전용, 당신은 단지 그것에 대해 조회 할 수 있습니다

이 작품 것이다 전체 텍스트 검색을 할 것인가? 다행히, 예 우리는 우리의 첫 번째 보석, Textacular에 대해 지금 이야기하는 것입니다 Textacular는 원래 아론 패터슨에 의해 작성되었습니다 및 GitHub의에서 여기에서 살고있다 Textacular 전체 텍스트 검색 부분을 담당 쿼리의, 그리고 당신이 싶어한다고 가정 이 호출하기 때문에, 모든 텍스트 필드를 통해 검색 전체 텍스트 검색은 전체 텍스트 전체 텍스트 검색, 그래서 나는 테이블에, 기록에 같아요 그리고 그것은 당신에게 약간 변형 검색 옵션을 제공합니다 basic_search 및 퍼지 검색 및 고급 검색과 같은

우리의 목적을 위해, 우리 모두가 정말 걱정 이 basic_search이다 그리고 그것은 될거야 무엇을 가장 일반적으로 유용 당신은 하나의 필드의 종류를 구축 할 때 사용자가 다시 결과를 얻기 위해 사용하는 입력 그래서,는 다음과 같습니다 게임은 게임을 검색하는 경우, 모든 종류의 즉, 소닉, 소닉 더 헤지 호그를 포함 또는 슈퍼 소닉, 어떤, 나도 몰라 그리고 당신은 조금 더 복잡 얻을 수 있습니다 심지어 기본 검색으로, 말하기 제목 마리오, 시스템 요구 사항을 포함해야 닌텐도를 포함하지만 나는 어떤 마리오 타이틀을하려는 어떤 닌텐도 플랫폼에서

그래서 다음 간단한 유용한 물건의 일종이다 당신은 Textaculars로 할 수있다 그들을 섞는다 좋아, 그래서 다시 가서 해당 검색을 살펴 보자 우리는 썼다 이것은 이전과 같은 속편이다 어느 기사의 이름을 기반으로 제품을 얻으려면, 본문 또는 저자의 이름을 입력합니다

그래서 우리의 검색 결과는 레일 측면에 정말 간단합니다 우리는이 세 가지 라인 클래스를 만들 것입니다 우리는 Textacular을 거 포함하고 있으며, 우리는거야 ,이 기사에 속한다는 것을 그에게 우리는 그 분야의 문서 ID라는 이름 때문이다 그리고 우리가 실제로 사용 싶어 할 때, 우리 싶다면, 말, 쓴 기사를 찾아 샌디에 의해, 또는 그 샌디을 언급, 우리는 단지 샌디이 기본 검색을 수행 그리고 기사에 그 매핑합니다 당신이 조금 미친 싶었다면, 당신이 할 수있는, 당신은 셀 수를 포함 할 수있다 귀하의 기록에

셀 수는 매우 중요하고 매우 유용합니다 표준 라이브러리에 내장 된 루비의 기능, 그리고 당신이 그것에 대해 모르는 경우, 와서 나중에 나 한테 물어 주시기 바랍니다 그러나, 기본적으로는거야 당신에게 멋진 사람들을 모두 줄거야 각각의지도와 다른 모든 것들 그래서, 당신은이 클래스를 사용할 수있을 것 검색 새로운 점 결과, 쿼리, 다음 각 도트 그것이 어떤 종류 것처럼 그래서, 기본적으로, 당신은 그것을 치료할 수 다른 컬렉션 어레이 형상 컬렉션 그래서,이 뷰를 생성, 나는 지금 확신했는지 확인 해요 것을보기는 사용하기 좋은이며, 당신이 그들을 사용하고 싶습니다

을 사용하는 방법을 알고 싶으십니까? 그래서,을 만드는 것은 매우 간단합니다 당신은 액티브베이스 연결을 가지고 및 실행했습니다 그래서 이것은 이전에 당신이 할 수 실제로 바로 실행이 단축, 우리가보기 SQL을 만들 거 사용에있어 우리는 단지 화면에 있다고 그리고 그것을 드롭, 우리는 단지 말 다음 뷰의 이름을 뷰를 삭제하고 이 방법 내성을 변경하는 것입니다? 좋아, 잘, 찾아보기로 하죠

의 일부 기능 크리프를 살펴 보자, 우리는 항상 우리의 기능에 가지고 프로젝트 관리자가 다시 와서 말했다, 댓글이 기사는 쿼리와 일치 또한 결과에 표시해야한다 누군가는 코멘트에 샌디을 언급 한 경우 기사에 대한, 우리는 그에 표시하려면, 그 기사도 검색 결과에 표시합니다 그래서, 요약하자면, 우리는 지금 기사의에 검색하는 제목과 본문, 저자의 이름 및 주석 몸 그리고 이러한 것들 중 하나가에 관련된 모든 기사 검색 결과에 표시해야한다

따라서, 업데이트 된 SQL은 다음과 같습니다 업데이트 된 쿼리 그리고 새 부품이 새로운 조합이다, 매우 간단한 선택으로 우리는 본문에 당기있는 경우 및 가입 그리고 주석에서 문서 ID 그래서,이 업데이트보기 마이그레이션에 대해 알아 보겠습니다 우리가 할 수있는 일은 새로운 SQL을 던져 그 uprecord로, 단지 우리가 전에했던 좋아한다

그리고, 불행하게도, 우리는 무엇을해야 할 아래로 마이그레이션 넣어됩니다 그에보기 오래된 텍스트 마이그레이션 아래로 우리가 롤백 할 때 그래서, 레일에 데이터베이스를 넣어 어떤 상태 알고있다 즉 고통의 일종이지만, 우리는 그것을 처리 할 수 ​​있습니다 그것도 나쁘지 않다 그리고, 불행하게도, 우리는 항상 업데이트 할 수 없습니다 당신은 실제로 뷰에서 모든 열을 제거 할 수 없습니다 우리는 우리가 롤백 할 때 일을 할 일이있는 이 마이그레이션, 우리는 더 이상이 없기 때문입니다

아, 아니, 미안 해요, 아니 우리는하지 않습니다 하지만 당신이보기에 새 열을 추가 한 경우 그래서 더 많은 정보를 가지고, 말 이전부터 칼럼에서 그 활성 당신이 말한다면, 우리가 정말 필요가 없습니다 더 이상 열에서 그 활성의 그를 제거 할 수 사용자 최근 활동에서, 당신은 그냥 업데이트 그렇게 할 수 없었다 그래서, 당신은 그냥 먼저 그 볼을 드롭한다 무엇을해야, 후 다시보기를 만들 수 있습니다 그리고 다시, 우리는 전체 SQL 덤프 필요 마이그레이션에

그게 안됐다 또한, dB / schemarb에보기를 덤프 할 수 없습니다 그래서 그것의 해결책은 레일을 얘기하는 것입니다 데이터베이스 형식 거 구조 할 수 있는지, 다음은 structuresql에 거 덤프입니다 그것은거야 실제, 포스트 그레스 SQL 버전을 덤프 것 전체 데이터베이스

죄송합니다 다행히, 우리는, 관광 번째 보석을 가지고 이는 마이그레이션에 몇 가지 방법을 추가, 그리고, 뷰 dB / schemerv으로 덤프 될 수 있도록 그냥 일반적으로 기대하고, 무엇 인 함께 일할 조금 더 쉽게 볼 수 있습니다 물론,이에 작은 손을 가지고 있었다 나는 두 테이너 중 하나입니다, 다른 하나는이 보석으로,이 방에있다

그래서,이 경치 마이그레이션을 생성 매우 간단합니다 중동이 넘어 읽을 수 있지만 당신은거야 는 SQL 파일 기본적으로 그냥 쿼리 부분에 쓰기 보기의 그래서 당신이보기 구문을 만들에 대해 걱정할 필요가 없습니다, dropview 구문, 그것은 당신을 위해 처리 할 수 ​​있습니다 그리고 당신은 그것을로 쓰고 있기 때문에 당신이 실제로하는 SQL 파일로 쓰기 그래서 당신은 편집기 지원의 어떤 종류가 있어요 당신의, 당신도 알다시피, 빔 또는 TeamUp 또는 고상 사람들이 요즘 사용하는 어떤 또는, 내가하지 않습니다

당신은 당신을 제공하는 어떤 혜택을 얻을 그래서 광산은 나에게 들여 쓰기와 멋진을 제공합니다 구문 SQL에서 강조 그리고 마이그레이션의 구문, 당신은 실제로 단지,이보기를 만들 수 있습니다 가역적 인 단지 테이블을 만들 좋아 그리고 당신은 그 변화의 방법을 사용하여 다시 갈 수 있습니다 그리고 당신이보기를 변경해야하는 경우, 당신은 실제로 단지이 업데이트보기를 할 수 있습니다 , 당신은 어떤 버전 번호를 얘기하고, 알고 이름 지정 규칙에 따라 어떻게 새를 찾을 수 그리고 SQL의 이전 버전, 뷰의 SQL의

그것도 조금 기억하기 힘든, 그래서 우리는 약간의 발전기를 만들 않았다 우리는 실제로 monogenerator을 가지고, 즉, 저를 읽거나 읽기 전용 당신을 제공합니다 그리고 이름을 유추 뷰의 이름을 기준으로 모델, 그 이름이 일치 할 정도로, 그래서 당신은 세 가지 라인의 방법으로 끝낼 아니면 한 줄 방법과 같은, 파일에 다섯 줄의 총 그리고 당신은 그 SQL 파일로 작성하는 경우 그것의 첫번째적인 버전, 그래서 바로 다음과 같습니다 검색어, 우리는 그냥 쓰기 이것은 앞에서 같은 SQL이다

매우 간단하고, 그는 SQL 파일에 살고, 이 훨씬 쉽게하도록 읽고보고 당신은 당신의 편집기에있을 때 우리는 또한에 대한 뷰 생성을 해당보기를 업데이트해야합니다, 그래서 당신은 다만 수 오히려 관광 모델보다, 당신은 경치를 볼 할 수 있습니다 나는 노트를 필요가 없습니다 그리고 그것은 당신에게의 다음 버전을 줄 것이다 뷰의 다음 숫자 버전 그리고는 SQL의 이전 버전에서 덤프 당신은으로 업데이트 할 수있는 어떤 당신은 추가 할 필요가 있었다

이제, 일부 성능에 영향이 확실히있다 이 방법 내가 언급 한 바와 같이,이 쿼리는 매우 느립니다 그것은 세 가지 서로 다른 테이블을 통해 검색 할 수있다 과 열 몇은 우리에게 모든 결과를 얻을 수 있습니다 우리는 필요 그럼,이 내려 온다 위해, 실제로 크기, 속도가 느린 이러한 결과를 얻을 수 있습니다 그리고, 불행하게도, 뷰는 인덱싱 할 수 없습니다

다행히, 기본 테이블이 있습니다 그래서, 여기에 권장 사항은 인덱스를 추가 할 수 있습니다 인덱스의 몇 가지 종류가 있습니다 당신이 가장 잘 알고있는 사람은 BTREE입니다 BTREE는 열에 정확히 일치에 좋은 곳입니다 그래서 텍스트 또는 중도 같은, 문자열 일치는 BTREE와 괜찮아

당신은 그와 함께 히트 인덱스를 얻을 수 있습니다, 확실히 당신은 그냥있어 기본 키에 대한 아이디 또는 UUID를 찾고 사람들은 중대하다 전체 텍스트 검색의 경우, 우리가 관심있는 사람 GIN와 GIST 있습니다 일반화 된 역 색인을위한 GIN 스탠드, 및 GIST는 일반화 된 반전 검색 트리를 의미합니다 다시 사용하지 않을거야 몇 가지 정보가있다

GIN 조회는 일반적으로 빠른 약 3 배 GIST보다, 그들은 또한 걸릴에 대한 세 번 구축 할 이상 GIN 인덱스는 적당히 느린 GIST 인덱스보다 업데이트하려면 그들은 디스크에 두 ~ 3 배입니다 그게 무슨 뜻 이죠? 누가 무슨 상관이야? 이것은 무엇을 의미입니다 당신이없는 경우에는 GIN를 사용해야합니다 데이터베이스의 행 수십만 이상 차단 기록에 대해 걱정하지 않은 DB를, 당신은 인덱스를 추가하는 늦게 게임에서, 당신은 디스크 공간에 대해 걱정하지 않는다

아마 2016 년을 왜냐하면 그리고 당신은 우리가 최적화하고, 매우 빠른 조회를 원하므로 에 대한 읽기 무거운 우리가 같은 로그 관리자 또는 무언가를 구축한다면, 우리가 쓰기 무거운 최적화 할 것이다, 어쩌면 GIN은 올바른 해결책이 아니다 그래서 만약 당신이, 다른 한편으로는, 당신은 GIST를 사용해야합니다 매우 큰 테이블, 수백만, 기록의 수십억 거기에 당신이 인 경우에 크기 순서가있다 그 둘 사이에, 그것을 알아 내기 위해 당신에게 달려 있습니다

나는 컨설팅에서 일하고, 당신은 저를 지불 할 수 있습니다 성능에 문제가 있으면 당신은 그것을 사용해야합니다 지금, 나는 그 말을 할 때, 난 당신이 현재 성능 문제가 있다는 것을 의미, 당신이 그 미래에 우려하지 않는 것이, 당신은 성능 문제가됩니다 경우, 어떤 이유로, 그것을 사용한다 디스크 공간이 중요하다, 그것은 1994입니다 테이블은 매우 쓰기 무거운 경우 그리고 당신은 그것을 사용해야합니다 내가 말했듯이, 로그 aggravators이의 좋은 예입니다

그래서, GIN로 그 인덱스를 추가하는 것은 매우 간단합니다 다음은 우리가 사용하고 네 개의 필드입니다, 당신은 단지 GIN를 사용하여 레일이 그것을 처리하는 방법을 알고 말한다 구체화 된 뷰는 우리가 할 수있는 또 다른 방법입니다 이 성능을 향상시킬 수 있습니다 구체화 된 뷰는 도구를 미리 채울 수 있습니다 뷰의 결과 그래서, 그것은 거 실행입니다 그 전체 검색 쿼리 우리가 가진 것을, 그리고 그 모두를 저장하는 것 임시 테이블에 발생합니다

그래서 우리는 여전히, 말하자면, 400 밀리 초를 지불 때마다 우리는 테이블을 만드는,하지만 우리는 할 수 임시 테이블에 대해 쿼리, 이미에서 결과를 가지고있는, 그것은 훨씬 더 빨리, 많이입니다 그래서 우리는 그 결과 집합에 대해 쿼리, 오히려 전체 쿼리를 수행하는 것보다, 그것은 크기의 다른 순서는이다 빨리 ILIKE가에도보다 이 인덱스없이 그리고 구체화 된 뷰의 단점 , 항상 업데이트되지 점이다 그것은 그 임시 테이블에 저장되어 있기 때문이다 당신은 당신이 원하는 때 말할 필요 400 밀리 초이 업데이트가 일어나고받을 것을 지불 또는 그러나 긴 쿼리가 소요됩니다

그리고 당신은 원하는만큼 그렇게 할 수 있습니다, 당신은 SQL에서 트리거, 재 작성에 그렇게 할 수 또는 후 커밋 후크, 다음과 같습니다 또는 당신은 타이머, 아마, 그것을 할 수 있습니다 검색 결과는 항상 최신 상태로 할 필요가없는 경우, 당신이, 당신은 알고있을 수는 heropi 일정, 또는 10 분마다, 또는 시간, 또는 하루, 또는 무엇이든을한다 그래서 당신이 중 하나 포스트 그레스 트리거로 그렇게 할 수 있습니다, 독자, 또는 운동 후 후크를 저지 레일, 그것은 다음과 같습니다 음, 좋아, 무엇을 몇 가지 사전 구축 된 솔루션에 대한? 선택의 여지가 거기있다 그리고 나는 우리가 그들을 볼 것 말 했는가 우리는 어느 타이어와 elasticsearch있어 또는 질긴와 elasticsearch 레일, 당신의 모델에 얼마나 많이 알고있는 사람을 포함합니다

나는 많은입니다, 알고있다 당신은 태양 흑점하지만, 이런 젠장 통해 SOLR를 사용할 수 있습니다 ThinkingSphinx와 스핑크스 실제로 사용합니까 별도의 파일,하지만 여전히 같은, 나는이 중 하나가 무엇을 의미하는지 모른다 내가 왜 이것을 파악해야합니까? 나는 이미 내가 SQL을 알고, 일을 알고있다 좋아, 그래서 이러한 서비스에 큰 무엇 vacidid 검색입니다

검색은 하나의 상자처럼 보이지 않는 경우, 그것은 아마존의 사이드 바, 다음 전체 텍스트 검색과 같은 , 거 작업하기 좀 더 어려울 수있다 나는 인정한다 또는 포스트 그레스 '전체 텍스트 검색 이러한 다른 도구뿐만 아니라 당신을 위해 전체 텍스트 검색을한다 이 모든 것들이, 개발 컴퓨터에서 실행해야 그들은 생산 시스템에서 실행해야 그들이 실행해야 할 것을 의미한다 그들은 컴퓨터에 속도를 늦추고있어 당신은 이러한 종속성을 모두 처리해야 당신은 또한 그들과 거래해야 때마다 당신은 당신의 시스템에 업데이트를하고 있습니다

혹시 해당 버전을 변경하는 경우, 당신은 필요 확인하십시오 개발 및 produciton로 만들려면 혹시 다시 갈거야하는 경우, 모두 동일한 버전입니다, 당신은이 처리되고 있는지 확인해야합니다 엉덩이에 큰 고통 그들은 모두 테스트에서 위조 할 필요가, 당신은이를 사용하여 실제로되고 싶지 않기 때문에 가지 시험에 살고 있습니다 사실, 나는하고 있던 동료 몇이 있었다, SOLR, 내가 믿고, 훌륭한 기능을 사용하고 SOLR의 그것의 인덱스를 동기화한다는 것입니다 같은 서브맵에서 그들이 있었다 때문에 모두 작업에 앉아 자신의 작업 컴퓨터에서 같은 IP 주소를 가지고 외부 IP 주소, 자신의 테스트 인덱스 서로간에 동기화되고 있었다 그리고는 일주일 동안 많은 재미였다

이 모든 모델에 cruft에 많이 있습니다 나는 몇 가지를 말했지만, 그것은 전부입니다 그리고 데이터베이스에서 데이터 우려 제거 데이터베이스, 그래 그들은 모두 궁극적으로이 비밀의 구문을 가지고 있고, 그들은 나이 얼굴을 확인합니다

따라서, 결합하여,보기를 구체화 전체 텍스트 검색 및 레일의 마법, 우리는 정말 멋진 검색 기능이 그 새로운 종속성을 필요로하지 않습니다, 그리고 웃음이 나와 고맙습니다 (박수 갈채) (낙관적, 행복 음악)

내가 완전 굴 킬런데 시엄마가 굴김치 주신다 …

내가 완전 굴 킬런데 시엄마가 굴김치 주신다 해서 얼른 얻어와 평소에 저녁도 안먹는데 굴김치해서 먹을려니 엄마 이거 뮤야 굴김치 할무니가 방금 주시고 갔엉 장아찌는 거들떠도 안보고 굴김치에 볶음밥 뚝딱 김치 털림

고기국물과 라비올리 맛도 비쥬얼도 이탈리아식 …

고기국물과 라비올리 맛도 비쥬얼도 이탈리아식 만두국이다 소고기와 샐러리 당근 양파등을 넣고 국물을 내어 라비올리와 파르미지아노 치즈를 뿌려 먹는 겨울 이태리 가정식이다 갑자기 추워진 오늘같은 날씨에