AKS 및 GKE에서 실행되는 분산 SQL의 Hasura GraphQL 원격 연결
12176 단어 postgreskubernetesgraphqlyugabyte
분산 SQL 또는 YugabyteDB의 초보자?계속 읽어 주세요.
분산 SQL이란 무엇입니까?
분포식 SQL 데이터베이스는 데이터 인프라를 클라우드나 클라우드 네이티브 환경으로 이동하려는 조직에서 점점 유행하고 있다.이는 일반적으로 Oracle, MySQL 및 SQL Server와 같은 단일 관계형 데이터베이스에서 TCO를 절감하거나 확장을 제한하려는 의도에서 비롯됩니다.분산 SQL의 기본 특징은 다음과 같습니다.
분산 SQL에 대한 자세한 내용은 "분산 SQL이란?"을 참조하십시오.
Yugabyte DB가 뭐예요?
YugabyteDB는 오픈소스, 고성능의 분포식 SQL 데이터베이스로 구글 스패너의 계발을 바탕으로 확장과 용량 오류 설계를 구축한다.YugabyteDB는 PostgreSQL wire와 호환되며 저장 프로세스, 트리거, UDF 등 고급 RDBMS 기능을 지원합니다.
네, 계속 보여주세요.
1단계: GKE에 YugabyteDB 설치
다음은 install a 3 node YugabyteDB cluster on Google Kubernetes Engine 의 전체 절차입니다.GKE에서 YugabyteDB 클러스터를 실행한 후 다음 명령을 실행하여 클러스터의 상태를 확인합니다.
$ kubectl get services --namespace yb-demo
NAME EXTERNAL-IP PORT(S)
yb-tserver-service 35.224.XX.XX 5433:3067/TCP
참고yb-tserver-service
의 외부 IP는 YugabyteDB와 Hasura GraphQL 엔진 간에 연결됩니다.위의 출력에서 알 수 있듯이 IP는35.224.XX.XX
, YSQL 포트는5433
이다.
단계 2: Northwind 샘플 데이터베이스 만들기
저희 문서에서 YugabyteDB와 호환되는 여러 가지sample databases를 찾을 수 있습니다.이 강좌에서 우리는 Northwind 예시 데이터베이스를 사용할 것이다.Northwind 데이터베이스에는'Northwind Traders'라는 허구의 회사의 판매 데이터가 포함되어 있으며, 이 회사는 세계 각지에서 특색 있는 식품을 수입하고 수출한다.Northwind 데이터베이스는 중소기업ERP의 우수한 강좌 모델로 고객, 주문, 재고, 구매, 공급업체, 출하, 직원과 단일 항목 회계를 포함한다.
다음 명령을 실행하여 에 연결합니다yb-tserver-pod
.
$ kubectl exec -n yb-demo -it yb-tserver-0 /bin/bash
스키마 및 데이터 파일을 다운로드하려면 다음 명령을 실행합니다.
$ wget https://raw.githubusercontent.com/yugabyte/yugabyte-db/master/sample/northwind_ddl.sql
$ wget https://raw.githubusercontent.com/yugabyte/yugabyte-db/master/sample/northwind_data.sql
YSQL 서비스에 연결하려면 Pod 케이스를 종료하고 다음 명령을 실행합니다.
$ exit
$ kubectl exec -n yb-demo -it yb-tserver-0 -- ysqlsh -h yb-tserver-0.yb-tservers.yb-demo
데이터베이스를 만들고 다음 명령을 사용하여 데이터베이스에 연결합니다.
yugabyte=# CREATE DATABASE northwind;
northwind=# \c northwind;
이제 데이터베이스 객체를 만들고 다운로드된 파일을 사용하여 다음 명령을 사용하여 데이터를 로드할 수 있습니다.
northwind=# \i 'northwind_ddl.sql';
northwind=# \i 'northwind_data.sql';
기본적으로 YugabyteDB 설치에는 기본 암호 설정이 없습니다yb-tserver-pod
.하나를 지정하는 방법은 PostgreSQL에 있는 방식과 같습니다.
northwind=# ALTER ROLE yugabyte WITH PASSWORD 'password';
3단계: GKE에서 YugabyteDB를 사용하도록 Hasura 설정
우리는 지금 GKE에 Hasura GraphQL 엔진을 설치하려고 한다.다음 명령을 실행하여 YSQL 셸을 종료하고 Hasura-Kubernetes 배치 및 서비스 파일을 가져옵니다.
$ wget https://raw.githubusercontent.com/hasura/graphql-engine/master/install-manifests/kubernetes/deployment.yaml
$ wget https://raw.githubusercontent.com/hasura/graphql-engine/master/install-manifests/kubernetes/svc.yaml
배포에서 데이터베이스 URL을 수정합니다.yaml 파일에는 YugabyteDB의 IP가 포함되어 있습니다.이 강좌에서는 다음과 같이 수정해야 합니다.
value: postgres://yugabyte:[email protected]:5433/northwind
참고 모든 컨텐트가 yugabyte user
네임스페이스에서 실행되도록 하려면 yb-demo
및 deployment.yaml
파일의 네임스페이스 값을 수정해야 합니다.이것은 내가 이 시범을 위해 선택한 설정이다.
파일을 저장한 후 svc.yaml
명령을 사용하여 Hasura 배포를 만듭니다.
$ kubectl create -f deployment.yaml
deployment.apps/hasura created
$ kubectl create -f svc.yaml
service/hasura created
외부 IP를 찾아 Hasura 콘솔을 열려면 다음 명령을 수행합니다.
$ kubectl get services --namespace yb-demo
NAME EXTERNAL-IP PORT(S)
hasura 35.192.XX.XX 80:30546/TCP
현재kubectl
를 사용하여 Hasura 콘솔에 액세스합니다.이 예에서는 http://<EXTERNAL-IP>/console
입니다.지금 Hasura 콘솔을 보셔야 합니다.
4단계: Hasura에서 북풍 물체 추적
상단 탐색에서 데이터를 클릭하고 테이블, 보기, 키 관계의 모든 추적을 클릭합니다.브라우저 새로 고침 상단 탐색에서 GraphQL을 클릭하면 왼쪽 브라우저 트리35.192.XX.XX
테이블이 표시됩니다.
5단계: AKS에 YugabyteDB 설치
다음은 install a 3 node YugabyteDB cluster on Azure Kubernetes Service 의 전체 절차입니다.AKS에서 YugabyteDB 클러스터를 실행한 후 다음 명령을 실행하여 클러스터의 상태를 확인합니다.
$ kubectl get services --namespace yb-demo
NAME EXTERNAL-IP PORT(S)
yb-tserver-service 20.190.XX.XX 5433:3067/TCP
참고northwind
의 외부 IP는 YugabyteDB와 Hasura GraphQL 엔진 간에 연결됩니다.위의 출력에서 알 수 있듯이 IP는yb-tserver-service
, YSQL 포트는20.190.XX.XX
이다.
단계 6: 프로모션 데이터베이스 설치
이 단계에서, 우리는promotions라는 데이터베이스와 promotions라는 테이블을 만들 것입니다.그리고 우리는 판촉 유형, 협찬 회사와 판촉 지속 시간에 관한 데이터를 불러올 것이다.
YSQL 셸 로그인:
$ kubectl exec -n yb-demo -it yb-tserver-0 -- ysqlsh -h yb-tserver-0.yb-tservers.yb-demo
데이터베이스를 만들고 다음 명령을 사용하여 데이터베이스에 연결합니다.
yugabyte=# CREATE DATABASE promotions;
yugabyte=# \c promotions;
기본적으로 YugabyteDB 설치에는 기본5433
사용자의 암호 설정이 없습니다.하나를 지정하는 방법은 PostgreSQL에 있는 방식과 같습니다.
promotions=# ALTER ROLE yugabyte WITH PASSWORD 'password';
판촉 데이터베이스에서 다음 표를 만듭니다.
CREATE TABLE promotions (
promotion_id serial PRIMARY KEY,
supplier_id int2 NOT NULL,
promotion_name VARCHAR ( 50 ) NOT NULL,
company_name VARCHAR ( 40 ) NOT NULL,
start_date DATE NOT NULL,
stop_date DATE NOT NULL,
created_on DATE NOT NULL DEFAULT CURRENT_DATE );
다음 데이터로 판촉표를 채웁니다.
INSERT INTO promotions
(supplier_id, promotion_name, company_name, start_date, stop_date, created_on)
VALUES
('28','Buy One Get One Free', 'Gai pâturage', '1996-08-15', '1996-08-30', CURRENT_DATE),
('19', 'Free Shipping', 'New England Seafood Cannery', '1996-10-15', '1996-10-30', CURRENT_DATE),
('16', 'Free T-Shirt With Every Purchase', 'Bigfoot Breweries', '1996-12-15', '1996-12-30', CURRENT_DATE),
('20','10% Off', 'Gula Malacca', '1996-11-15', '1996-11-30', CURRENT_DATE),
('8', '20% Off', 'Specialty Biscuits, Ltd.', '1996-09-15', '1996-09-30', CURRENT_DATE);
단계 7: YugabyteDB를 사용하도록 AKS에 Hasura 설정
우리는 지금 Azure Kubernetes 서비스에 Hasura GraphQL 엔진을 설치할 준비를 하고 있다.다행히도 Hasura는 AKS에서 시작하고 실행하기 쉬우며, 간단한 마법사로 우리의 YugabyteDB 집단을 가리킨다.이 “one-click deployment” 를 사용하여 세부 정보를 설정합니다.기존 데이터베이스에 연결하는 옵션을 선택하면 다음과 같은 내용을 볼 수 있습니다.
YugabyteDB 클러스터의 외부 IP 및 포트를 지정하고 있습니다.이 경우 yugabyte
및 20.189.XX.XX
.우리는 또한 설정에서 지정한 5433
사용자와 yugabyte
데이터베이스를 설정합니다.
AKS에 Hasura를 성공적으로 배포한 후 콘솔의 외부 IP를 찾습니다.제 예에서 저는 Azure 포털의'모든 서비스'>'자원 그룹'>'자원 그룹'>'하수라 판촉 용기 그룹'에서 보았는데 promotions
저에게 분배된 하수라 GraphQL 엔진의 공공 IP입니다.이 정보가 있으면 Hasura 컨트롤러를 열고 추적52.137.XX.XX
표를 열 수 있을 것입니다.완성되면 브라우저에서 다음과 같은 표를 볼 수 있을 것입니다.
8단계: 원격 구조 및 원격 관계 설정
GKE에서 실행되는 Hasura 콘솔에서 Remote Schemas 탭으로 이동하여 Add를 클릭하고 AKS에서 실행되는 Hasura 서버에 필요한 정보를 제공합니다.
다음은 promotions
표promotions
표와 supplier_id
표 사이에 원격 관계를 추가합니다. 우리는 원격suppliers
에서 이를 이용할 수 있습니다.네비게이션 promotions
을 통해 관계를 지정할 수 있습니다.
단계 9: 두 데이터베이스에 걸쳐 원격 연결
현재 우리는 JOIN
데이터베이스에 원격 모드를 설정하고 Data > suppliers > Relationships > Remote Schema Relationships
에 원격 관계를 설정했다.우리는 현재 두 개의 서로 다른 YugabyteDB 데이터베이스에 있는 데이터를 처리하기 위해 조회를 보낼 수 있다. 이 데이터베이스들은 두 개의 서로 다른 클라우드에 위탁되어 있다.이 프레젠테이션에서 우리는 원격 연결 GraphQL 조회를 보내기를 희망합니다. 이 조회는 "주요"북풍 데이터베이스에 있는 공급업체가 "원격"판촉 데이터베이스에 판촉을 안배했는지 확인할 수 있도록 합니다.
예를 들어 아래 조회에서 공급업체 "16"이 어떤 판촉을 진행하고 있는지, 만약 그렇다면 판촉의 명칭이 무엇인지, 판촉 활동의 날짜가 무엇인지 알고 싶습니다.
GraphQL 질의는 다음 결과를 반환해야 합니다.
GraphQL 질의를 분해하면 다음과 같은 상황이 발생합니다.
GKE에서 실행되는 YugabyteDB 클러스터의 promotions
테이블에서 다음을 반환합니다.
다음은 install a 3 node YugabyteDB cluster on Google Kubernetes Engine 의 전체 절차입니다.GKE에서 YugabyteDB 클러스터를 실행한 후 다음 명령을 실행하여 클러스터의 상태를 확인합니다.
$ kubectl get services --namespace yb-demo
NAME EXTERNAL-IP PORT(S)
yb-tserver-service 35.224.XX.XX 5433:3067/TCP
참고yb-tserver-service
의 외부 IP는 YugabyteDB와 Hasura GraphQL 엔진 간에 연결됩니다.위의 출력에서 알 수 있듯이 IP는35.224.XX.XX
, YSQL 포트는5433
이다.단계 2: Northwind 샘플 데이터베이스 만들기
저희 문서에서 YugabyteDB와 호환되는 여러 가지sample databases를 찾을 수 있습니다.이 강좌에서 우리는 Northwind 예시 데이터베이스를 사용할 것이다.Northwind 데이터베이스에는'Northwind Traders'라는 허구의 회사의 판매 데이터가 포함되어 있으며, 이 회사는 세계 각지에서 특색 있는 식품을 수입하고 수출한다.Northwind 데이터베이스는 중소기업ERP의 우수한 강좌 모델로 고객, 주문, 재고, 구매, 공급업체, 출하, 직원과 단일 항목 회계를 포함한다.
다음 명령을 실행하여 에 연결합니다yb-tserver-pod
.
$ kubectl exec -n yb-demo -it yb-tserver-0 /bin/bash
스키마 및 데이터 파일을 다운로드하려면 다음 명령을 실행합니다.
$ wget https://raw.githubusercontent.com/yugabyte/yugabyte-db/master/sample/northwind_ddl.sql
$ wget https://raw.githubusercontent.com/yugabyte/yugabyte-db/master/sample/northwind_data.sql
YSQL 서비스에 연결하려면 Pod 케이스를 종료하고 다음 명령을 실행합니다.
$ exit
$ kubectl exec -n yb-demo -it yb-tserver-0 -- ysqlsh -h yb-tserver-0.yb-tservers.yb-demo
데이터베이스를 만들고 다음 명령을 사용하여 데이터베이스에 연결합니다.
yugabyte=# CREATE DATABASE northwind;
northwind=# \c northwind;
이제 데이터베이스 객체를 만들고 다운로드된 파일을 사용하여 다음 명령을 사용하여 데이터를 로드할 수 있습니다.
northwind=# \i 'northwind_ddl.sql';
northwind=# \i 'northwind_data.sql';
기본적으로 YugabyteDB 설치에는 기본 암호 설정이 없습니다yb-tserver-pod
.하나를 지정하는 방법은 PostgreSQL에 있는 방식과 같습니다.
northwind=# ALTER ROLE yugabyte WITH PASSWORD 'password';
3단계: GKE에서 YugabyteDB를 사용하도록 Hasura 설정
우리는 지금 GKE에 Hasura GraphQL 엔진을 설치하려고 한다.다음 명령을 실행하여 YSQL 셸을 종료하고 Hasura-Kubernetes 배치 및 서비스 파일을 가져옵니다.
$ wget https://raw.githubusercontent.com/hasura/graphql-engine/master/install-manifests/kubernetes/deployment.yaml
$ wget https://raw.githubusercontent.com/hasura/graphql-engine/master/install-manifests/kubernetes/svc.yaml
배포에서 데이터베이스 URL을 수정합니다.yaml 파일에는 YugabyteDB의 IP가 포함되어 있습니다.이 강좌에서는 다음과 같이 수정해야 합니다.
value: postgres://yugabyte:[email protected]:5433/northwind
참고 모든 컨텐트가 yugabyte user
네임스페이스에서 실행되도록 하려면 yb-demo
및 deployment.yaml
파일의 네임스페이스 값을 수정해야 합니다.이것은 내가 이 시범을 위해 선택한 설정이다.
파일을 저장한 후 svc.yaml
명령을 사용하여 Hasura 배포를 만듭니다.
$ kubectl create -f deployment.yaml
deployment.apps/hasura created
$ kubectl create -f svc.yaml
service/hasura created
외부 IP를 찾아 Hasura 콘솔을 열려면 다음 명령을 수행합니다.
$ kubectl get services --namespace yb-demo
NAME EXTERNAL-IP PORT(S)
hasura 35.192.XX.XX 80:30546/TCP
현재kubectl
를 사용하여 Hasura 콘솔에 액세스합니다.이 예에서는 http://<EXTERNAL-IP>/console
입니다.지금 Hasura 콘솔을 보셔야 합니다.
4단계: Hasura에서 북풍 물체 추적
상단 탐색에서 데이터를 클릭하고 테이블, 보기, 키 관계의 모든 추적을 클릭합니다.브라우저 새로 고침 상단 탐색에서 GraphQL을 클릭하면 왼쪽 브라우저 트리35.192.XX.XX
테이블이 표시됩니다.
5단계: AKS에 YugabyteDB 설치
다음은 install a 3 node YugabyteDB cluster on Azure Kubernetes Service 의 전체 절차입니다.AKS에서 YugabyteDB 클러스터를 실행한 후 다음 명령을 실행하여 클러스터의 상태를 확인합니다.
$ kubectl get services --namespace yb-demo
NAME EXTERNAL-IP PORT(S)
yb-tserver-service 20.190.XX.XX 5433:3067/TCP
참고northwind
의 외부 IP는 YugabyteDB와 Hasura GraphQL 엔진 간에 연결됩니다.위의 출력에서 알 수 있듯이 IP는yb-tserver-service
, YSQL 포트는20.190.XX.XX
이다.
단계 6: 프로모션 데이터베이스 설치
이 단계에서, 우리는promotions라는 데이터베이스와 promotions라는 테이블을 만들 것입니다.그리고 우리는 판촉 유형, 협찬 회사와 판촉 지속 시간에 관한 데이터를 불러올 것이다.
YSQL 셸 로그인:
$ kubectl exec -n yb-demo -it yb-tserver-0 -- ysqlsh -h yb-tserver-0.yb-tservers.yb-demo
데이터베이스를 만들고 다음 명령을 사용하여 데이터베이스에 연결합니다.
yugabyte=# CREATE DATABASE promotions;
yugabyte=# \c promotions;
기본적으로 YugabyteDB 설치에는 기본5433
사용자의 암호 설정이 없습니다.하나를 지정하는 방법은 PostgreSQL에 있는 방식과 같습니다.
promotions=# ALTER ROLE yugabyte WITH PASSWORD 'password';
판촉 데이터베이스에서 다음 표를 만듭니다.
CREATE TABLE promotions (
promotion_id serial PRIMARY KEY,
supplier_id int2 NOT NULL,
promotion_name VARCHAR ( 50 ) NOT NULL,
company_name VARCHAR ( 40 ) NOT NULL,
start_date DATE NOT NULL,
stop_date DATE NOT NULL,
created_on DATE NOT NULL DEFAULT CURRENT_DATE );
다음 데이터로 판촉표를 채웁니다.
INSERT INTO promotions
(supplier_id, promotion_name, company_name, start_date, stop_date, created_on)
VALUES
('28','Buy One Get One Free', 'Gai pâturage', '1996-08-15', '1996-08-30', CURRENT_DATE),
('19', 'Free Shipping', 'New England Seafood Cannery', '1996-10-15', '1996-10-30', CURRENT_DATE),
('16', 'Free T-Shirt With Every Purchase', 'Bigfoot Breweries', '1996-12-15', '1996-12-30', CURRENT_DATE),
('20','10% Off', 'Gula Malacca', '1996-11-15', '1996-11-30', CURRENT_DATE),
('8', '20% Off', 'Specialty Biscuits, Ltd.', '1996-09-15', '1996-09-30', CURRENT_DATE);
단계 7: YugabyteDB를 사용하도록 AKS에 Hasura 설정
우리는 지금 Azure Kubernetes 서비스에 Hasura GraphQL 엔진을 설치할 준비를 하고 있다.다행히도 Hasura는 AKS에서 시작하고 실행하기 쉬우며, 간단한 마법사로 우리의 YugabyteDB 집단을 가리킨다.이 “one-click deployment” 를 사용하여 세부 정보를 설정합니다.기존 데이터베이스에 연결하는 옵션을 선택하면 다음과 같은 내용을 볼 수 있습니다.
YugabyteDB 클러스터의 외부 IP 및 포트를 지정하고 있습니다.이 경우 yugabyte
및 20.189.XX.XX
.우리는 또한 설정에서 지정한 5433
사용자와 yugabyte
데이터베이스를 설정합니다.
AKS에 Hasura를 성공적으로 배포한 후 콘솔의 외부 IP를 찾습니다.제 예에서 저는 Azure 포털의'모든 서비스'>'자원 그룹'>'자원 그룹'>'하수라 판촉 용기 그룹'에서 보았는데 promotions
저에게 분배된 하수라 GraphQL 엔진의 공공 IP입니다.이 정보가 있으면 Hasura 컨트롤러를 열고 추적52.137.XX.XX
표를 열 수 있을 것입니다.완성되면 브라우저에서 다음과 같은 표를 볼 수 있을 것입니다.
8단계: 원격 구조 및 원격 관계 설정
GKE에서 실행되는 Hasura 콘솔에서 Remote Schemas 탭으로 이동하여 Add를 클릭하고 AKS에서 실행되는 Hasura 서버에 필요한 정보를 제공합니다.
다음은 promotions
표promotions
표와 supplier_id
표 사이에 원격 관계를 추가합니다. 우리는 원격suppliers
에서 이를 이용할 수 있습니다.네비게이션 promotions
을 통해 관계를 지정할 수 있습니다.
단계 9: 두 데이터베이스에 걸쳐 원격 연결
현재 우리는 JOIN
데이터베이스에 원격 모드를 설정하고 Data > suppliers > Relationships > Remote Schema Relationships
에 원격 관계를 설정했다.우리는 현재 두 개의 서로 다른 YugabyteDB 데이터베이스에 있는 데이터를 처리하기 위해 조회를 보낼 수 있다. 이 데이터베이스들은 두 개의 서로 다른 클라우드에 위탁되어 있다.이 프레젠테이션에서 우리는 원격 연결 GraphQL 조회를 보내기를 희망합니다. 이 조회는 "주요"북풍 데이터베이스에 있는 공급업체가 "원격"판촉 데이터베이스에 판촉을 안배했는지 확인할 수 있도록 합니다.
예를 들어 아래 조회에서 공급업체 "16"이 어떤 판촉을 진행하고 있는지, 만약 그렇다면 판촉의 명칭이 무엇인지, 판촉 활동의 날짜가 무엇인지 알고 싶습니다.
GraphQL 질의는 다음 결과를 반환해야 합니다.
GraphQL 질의를 분해하면 다음과 같은 상황이 발생합니다.
GKE에서 실행되는 YugabyteDB 클러스터의 promotions
테이블에서 다음을 반환합니다.
$ kubectl exec -n yb-demo -it yb-tserver-0 /bin/bash
$ wget https://raw.githubusercontent.com/yugabyte/yugabyte-db/master/sample/northwind_ddl.sql
$ wget https://raw.githubusercontent.com/yugabyte/yugabyte-db/master/sample/northwind_data.sql
$ exit
$ kubectl exec -n yb-demo -it yb-tserver-0 -- ysqlsh -h yb-tserver-0.yb-tservers.yb-demo
yugabyte=# CREATE DATABASE northwind;
northwind=# \c northwind;
northwind=# \i 'northwind_ddl.sql';
northwind=# \i 'northwind_data.sql';
northwind=# ALTER ROLE yugabyte WITH PASSWORD 'password';
우리는 지금 GKE에 Hasura GraphQL 엔진을 설치하려고 한다.다음 명령을 실행하여 YSQL 셸을 종료하고 Hasura-Kubernetes 배치 및 서비스 파일을 가져옵니다.
$ wget https://raw.githubusercontent.com/hasura/graphql-engine/master/install-manifests/kubernetes/deployment.yaml
$ wget https://raw.githubusercontent.com/hasura/graphql-engine/master/install-manifests/kubernetes/svc.yaml
배포에서 데이터베이스 URL을 수정합니다.yaml 파일에는 YugabyteDB의 IP가 포함되어 있습니다.이 강좌에서는 다음과 같이 수정해야 합니다.value: postgres://yugabyte:[email protected]:5433/northwind
참고 모든 컨텐트가 yugabyte user
네임스페이스에서 실행되도록 하려면 yb-demo
및 deployment.yaml
파일의 네임스페이스 값을 수정해야 합니다.이것은 내가 이 시범을 위해 선택한 설정이다.파일을 저장한 후
svc.yaml
명령을 사용하여 Hasura 배포를 만듭니다.$ kubectl create -f deployment.yaml
deployment.apps/hasura created
$ kubectl create -f svc.yaml
service/hasura created
외부 IP를 찾아 Hasura 콘솔을 열려면 다음 명령을 수행합니다.$ kubectl get services --namespace yb-demo
NAME EXTERNAL-IP PORT(S)
hasura 35.192.XX.XX 80:30546/TCP
현재kubectl
를 사용하여 Hasura 콘솔에 액세스합니다.이 예에서는 http://<EXTERNAL-IP>/console
입니다.지금 Hasura 콘솔을 보셔야 합니다.4단계: Hasura에서 북풍 물체 추적
상단 탐색에서 데이터를 클릭하고 테이블, 보기, 키 관계의 모든 추적을 클릭합니다.브라우저 새로 고침 상단 탐색에서 GraphQL을 클릭하면 왼쪽 브라우저 트리35.192.XX.XX
테이블이 표시됩니다.
5단계: AKS에 YugabyteDB 설치
다음은 install a 3 node YugabyteDB cluster on Azure Kubernetes Service 의 전체 절차입니다.AKS에서 YugabyteDB 클러스터를 실행한 후 다음 명령을 실행하여 클러스터의 상태를 확인합니다.
$ kubectl get services --namespace yb-demo
NAME EXTERNAL-IP PORT(S)
yb-tserver-service 20.190.XX.XX 5433:3067/TCP
참고northwind
의 외부 IP는 YugabyteDB와 Hasura GraphQL 엔진 간에 연결됩니다.위의 출력에서 알 수 있듯이 IP는yb-tserver-service
, YSQL 포트는20.190.XX.XX
이다.
단계 6: 프로모션 데이터베이스 설치
이 단계에서, 우리는promotions라는 데이터베이스와 promotions라는 테이블을 만들 것입니다.그리고 우리는 판촉 유형, 협찬 회사와 판촉 지속 시간에 관한 데이터를 불러올 것이다.
YSQL 셸 로그인:
$ kubectl exec -n yb-demo -it yb-tserver-0 -- ysqlsh -h yb-tserver-0.yb-tservers.yb-demo
데이터베이스를 만들고 다음 명령을 사용하여 데이터베이스에 연결합니다.
yugabyte=# CREATE DATABASE promotions;
yugabyte=# \c promotions;
기본적으로 YugabyteDB 설치에는 기본5433
사용자의 암호 설정이 없습니다.하나를 지정하는 방법은 PostgreSQL에 있는 방식과 같습니다.
promotions=# ALTER ROLE yugabyte WITH PASSWORD 'password';
판촉 데이터베이스에서 다음 표를 만듭니다.
CREATE TABLE promotions (
promotion_id serial PRIMARY KEY,
supplier_id int2 NOT NULL,
promotion_name VARCHAR ( 50 ) NOT NULL,
company_name VARCHAR ( 40 ) NOT NULL,
start_date DATE NOT NULL,
stop_date DATE NOT NULL,
created_on DATE NOT NULL DEFAULT CURRENT_DATE );
다음 데이터로 판촉표를 채웁니다.
INSERT INTO promotions
(supplier_id, promotion_name, company_name, start_date, stop_date, created_on)
VALUES
('28','Buy One Get One Free', 'Gai pâturage', '1996-08-15', '1996-08-30', CURRENT_DATE),
('19', 'Free Shipping', 'New England Seafood Cannery', '1996-10-15', '1996-10-30', CURRENT_DATE),
('16', 'Free T-Shirt With Every Purchase', 'Bigfoot Breweries', '1996-12-15', '1996-12-30', CURRENT_DATE),
('20','10% Off', 'Gula Malacca', '1996-11-15', '1996-11-30', CURRENT_DATE),
('8', '20% Off', 'Specialty Biscuits, Ltd.', '1996-09-15', '1996-09-30', CURRENT_DATE);
단계 7: YugabyteDB를 사용하도록 AKS에 Hasura 설정
우리는 지금 Azure Kubernetes 서비스에 Hasura GraphQL 엔진을 설치할 준비를 하고 있다.다행히도 Hasura는 AKS에서 시작하고 실행하기 쉬우며, 간단한 마법사로 우리의 YugabyteDB 집단을 가리킨다.이 “one-click deployment” 를 사용하여 세부 정보를 설정합니다.기존 데이터베이스에 연결하는 옵션을 선택하면 다음과 같은 내용을 볼 수 있습니다.
YugabyteDB 클러스터의 외부 IP 및 포트를 지정하고 있습니다.이 경우 yugabyte
및 20.189.XX.XX
.우리는 또한 설정에서 지정한 5433
사용자와 yugabyte
데이터베이스를 설정합니다.
AKS에 Hasura를 성공적으로 배포한 후 콘솔의 외부 IP를 찾습니다.제 예에서 저는 Azure 포털의'모든 서비스'>'자원 그룹'>'자원 그룹'>'하수라 판촉 용기 그룹'에서 보았는데 promotions
저에게 분배된 하수라 GraphQL 엔진의 공공 IP입니다.이 정보가 있으면 Hasura 컨트롤러를 열고 추적52.137.XX.XX
표를 열 수 있을 것입니다.완성되면 브라우저에서 다음과 같은 표를 볼 수 있을 것입니다.
8단계: 원격 구조 및 원격 관계 설정
GKE에서 실행되는 Hasura 콘솔에서 Remote Schemas 탭으로 이동하여 Add를 클릭하고 AKS에서 실행되는 Hasura 서버에 필요한 정보를 제공합니다.
다음은 promotions
표promotions
표와 supplier_id
표 사이에 원격 관계를 추가합니다. 우리는 원격suppliers
에서 이를 이용할 수 있습니다.네비게이션 promotions
을 통해 관계를 지정할 수 있습니다.
단계 9: 두 데이터베이스에 걸쳐 원격 연결
현재 우리는 JOIN
데이터베이스에 원격 모드를 설정하고 Data > suppliers > Relationships > Remote Schema Relationships
에 원격 관계를 설정했다.우리는 현재 두 개의 서로 다른 YugabyteDB 데이터베이스에 있는 데이터를 처리하기 위해 조회를 보낼 수 있다. 이 데이터베이스들은 두 개의 서로 다른 클라우드에 위탁되어 있다.이 프레젠테이션에서 우리는 원격 연결 GraphQL 조회를 보내기를 희망합니다. 이 조회는 "주요"북풍 데이터베이스에 있는 공급업체가 "원격"판촉 데이터베이스에 판촉을 안배했는지 확인할 수 있도록 합니다.
예를 들어 아래 조회에서 공급업체 "16"이 어떤 판촉을 진행하고 있는지, 만약 그렇다면 판촉의 명칭이 무엇인지, 판촉 활동의 날짜가 무엇인지 알고 싶습니다.
GraphQL 질의는 다음 결과를 반환해야 합니다.
GraphQL 질의를 분해하면 다음과 같은 상황이 발생합니다.
GKE에서 실행되는 YugabyteDB 클러스터의 promotions
테이블에서 다음을 반환합니다.
다음은 install a 3 node YugabyteDB cluster on Azure Kubernetes Service 의 전체 절차입니다.AKS에서 YugabyteDB 클러스터를 실행한 후 다음 명령을 실행하여 클러스터의 상태를 확인합니다.
$ kubectl get services --namespace yb-demo
NAME EXTERNAL-IP PORT(S)
yb-tserver-service 20.190.XX.XX 5433:3067/TCP
참고northwind
의 외부 IP는 YugabyteDB와 Hasura GraphQL 엔진 간에 연결됩니다.위의 출력에서 알 수 있듯이 IP는yb-tserver-service
, YSQL 포트는20.190.XX.XX
이다.단계 6: 프로모션 데이터베이스 설치
이 단계에서, 우리는promotions라는 데이터베이스와 promotions라는 테이블을 만들 것입니다.그리고 우리는 판촉 유형, 협찬 회사와 판촉 지속 시간에 관한 데이터를 불러올 것이다.
YSQL 셸 로그인:
$ kubectl exec -n yb-demo -it yb-tserver-0 -- ysqlsh -h yb-tserver-0.yb-tservers.yb-demo
데이터베이스를 만들고 다음 명령을 사용하여 데이터베이스에 연결합니다.
yugabyte=# CREATE DATABASE promotions;
yugabyte=# \c promotions;
기본적으로 YugabyteDB 설치에는 기본5433
사용자의 암호 설정이 없습니다.하나를 지정하는 방법은 PostgreSQL에 있는 방식과 같습니다.
promotions=# ALTER ROLE yugabyte WITH PASSWORD 'password';
판촉 데이터베이스에서 다음 표를 만듭니다.
CREATE TABLE promotions (
promotion_id serial PRIMARY KEY,
supplier_id int2 NOT NULL,
promotion_name VARCHAR ( 50 ) NOT NULL,
company_name VARCHAR ( 40 ) NOT NULL,
start_date DATE NOT NULL,
stop_date DATE NOT NULL,
created_on DATE NOT NULL DEFAULT CURRENT_DATE );
다음 데이터로 판촉표를 채웁니다.
INSERT INTO promotions
(supplier_id, promotion_name, company_name, start_date, stop_date, created_on)
VALUES
('28','Buy One Get One Free', 'Gai pâturage', '1996-08-15', '1996-08-30', CURRENT_DATE),
('19', 'Free Shipping', 'New England Seafood Cannery', '1996-10-15', '1996-10-30', CURRENT_DATE),
('16', 'Free T-Shirt With Every Purchase', 'Bigfoot Breweries', '1996-12-15', '1996-12-30', CURRENT_DATE),
('20','10% Off', 'Gula Malacca', '1996-11-15', '1996-11-30', CURRENT_DATE),
('8', '20% Off', 'Specialty Biscuits, Ltd.', '1996-09-15', '1996-09-30', CURRENT_DATE);
단계 7: YugabyteDB를 사용하도록 AKS에 Hasura 설정
우리는 지금 Azure Kubernetes 서비스에 Hasura GraphQL 엔진을 설치할 준비를 하고 있다.다행히도 Hasura는 AKS에서 시작하고 실행하기 쉬우며, 간단한 마법사로 우리의 YugabyteDB 집단을 가리킨다.이 “one-click deployment” 를 사용하여 세부 정보를 설정합니다.기존 데이터베이스에 연결하는 옵션을 선택하면 다음과 같은 내용을 볼 수 있습니다.
YugabyteDB 클러스터의 외부 IP 및 포트를 지정하고 있습니다.이 경우 yugabyte
및 20.189.XX.XX
.우리는 또한 설정에서 지정한 5433
사용자와 yugabyte
데이터베이스를 설정합니다.
AKS에 Hasura를 성공적으로 배포한 후 콘솔의 외부 IP를 찾습니다.제 예에서 저는 Azure 포털의'모든 서비스'>'자원 그룹'>'자원 그룹'>'하수라 판촉 용기 그룹'에서 보았는데 promotions
저에게 분배된 하수라 GraphQL 엔진의 공공 IP입니다.이 정보가 있으면 Hasura 컨트롤러를 열고 추적52.137.XX.XX
표를 열 수 있을 것입니다.완성되면 브라우저에서 다음과 같은 표를 볼 수 있을 것입니다.
8단계: 원격 구조 및 원격 관계 설정
GKE에서 실행되는 Hasura 콘솔에서 Remote Schemas 탭으로 이동하여 Add를 클릭하고 AKS에서 실행되는 Hasura 서버에 필요한 정보를 제공합니다.
다음은 promotions
표promotions
표와 supplier_id
표 사이에 원격 관계를 추가합니다. 우리는 원격suppliers
에서 이를 이용할 수 있습니다.네비게이션 promotions
을 통해 관계를 지정할 수 있습니다.
단계 9: 두 데이터베이스에 걸쳐 원격 연결
현재 우리는 JOIN
데이터베이스에 원격 모드를 설정하고 Data > suppliers > Relationships > Remote Schema Relationships
에 원격 관계를 설정했다.우리는 현재 두 개의 서로 다른 YugabyteDB 데이터베이스에 있는 데이터를 처리하기 위해 조회를 보낼 수 있다. 이 데이터베이스들은 두 개의 서로 다른 클라우드에 위탁되어 있다.이 프레젠테이션에서 우리는 원격 연결 GraphQL 조회를 보내기를 희망합니다. 이 조회는 "주요"북풍 데이터베이스에 있는 공급업체가 "원격"판촉 데이터베이스에 판촉을 안배했는지 확인할 수 있도록 합니다.
예를 들어 아래 조회에서 공급업체 "16"이 어떤 판촉을 진행하고 있는지, 만약 그렇다면 판촉의 명칭이 무엇인지, 판촉 활동의 날짜가 무엇인지 알고 싶습니다.
GraphQL 질의는 다음 결과를 반환해야 합니다.
GraphQL 질의를 분해하면 다음과 같은 상황이 발생합니다.
GKE에서 실행되는 YugabyteDB 클러스터의 promotions
테이블에서 다음을 반환합니다.
$ kubectl exec -n yb-demo -it yb-tserver-0 -- ysqlsh -h yb-tserver-0.yb-tservers.yb-demo
yugabyte=# CREATE DATABASE promotions;
yugabyte=# \c promotions;
promotions=# ALTER ROLE yugabyte WITH PASSWORD 'password';
CREATE TABLE promotions (
promotion_id serial PRIMARY KEY,
supplier_id int2 NOT NULL,
promotion_name VARCHAR ( 50 ) NOT NULL,
company_name VARCHAR ( 40 ) NOT NULL,
start_date DATE NOT NULL,
stop_date DATE NOT NULL,
created_on DATE NOT NULL DEFAULT CURRENT_DATE );
INSERT INTO promotions
(supplier_id, promotion_name, company_name, start_date, stop_date, created_on)
VALUES
('28','Buy One Get One Free', 'Gai pâturage', '1996-08-15', '1996-08-30', CURRENT_DATE),
('19', 'Free Shipping', 'New England Seafood Cannery', '1996-10-15', '1996-10-30', CURRENT_DATE),
('16', 'Free T-Shirt With Every Purchase', 'Bigfoot Breweries', '1996-12-15', '1996-12-30', CURRENT_DATE),
('20','10% Off', 'Gula Malacca', '1996-11-15', '1996-11-30', CURRENT_DATE),
('8', '20% Off', 'Specialty Biscuits, Ltd.', '1996-09-15', '1996-09-30', CURRENT_DATE);
우리는 지금 Azure Kubernetes 서비스에 Hasura GraphQL 엔진을 설치할 준비를 하고 있다.다행히도 Hasura는 AKS에서 시작하고 실행하기 쉬우며, 간단한 마법사로 우리의 YugabyteDB 집단을 가리킨다.이 “one-click deployment” 를 사용하여 세부 정보를 설정합니다.기존 데이터베이스에 연결하는 옵션을 선택하면 다음과 같은 내용을 볼 수 있습니다.
YugabyteDB 클러스터의 외부 IP 및 포트를 지정하고 있습니다.이 경우
yugabyte
및 20.189.XX.XX
.우리는 또한 설정에서 지정한 5433
사용자와 yugabyte
데이터베이스를 설정합니다.AKS에 Hasura를 성공적으로 배포한 후 콘솔의 외부 IP를 찾습니다.제 예에서 저는 Azure 포털의'모든 서비스'>'자원 그룹'>'자원 그룹'>'하수라 판촉 용기 그룹'에서 보았는데
promotions
저에게 분배된 하수라 GraphQL 엔진의 공공 IP입니다.이 정보가 있으면 Hasura 컨트롤러를 열고 추적52.137.XX.XX
표를 열 수 있을 것입니다.완성되면 브라우저에서 다음과 같은 표를 볼 수 있을 것입니다.8단계: 원격 구조 및 원격 관계 설정
GKE에서 실행되는 Hasura 콘솔에서 Remote Schemas 탭으로 이동하여 Add를 클릭하고 AKS에서 실행되는 Hasura 서버에 필요한 정보를 제공합니다.
다음은 promotions
표promotions
표와 supplier_id
표 사이에 원격 관계를 추가합니다. 우리는 원격suppliers
에서 이를 이용할 수 있습니다.네비게이션 promotions
을 통해 관계를 지정할 수 있습니다.
단계 9: 두 데이터베이스에 걸쳐 원격 연결
현재 우리는 JOIN
데이터베이스에 원격 모드를 설정하고 Data > suppliers > Relationships > Remote Schema Relationships
에 원격 관계를 설정했다.우리는 현재 두 개의 서로 다른 YugabyteDB 데이터베이스에 있는 데이터를 처리하기 위해 조회를 보낼 수 있다. 이 데이터베이스들은 두 개의 서로 다른 클라우드에 위탁되어 있다.이 프레젠테이션에서 우리는 원격 연결 GraphQL 조회를 보내기를 희망합니다. 이 조회는 "주요"북풍 데이터베이스에 있는 공급업체가 "원격"판촉 데이터베이스에 판촉을 안배했는지 확인할 수 있도록 합니다.
예를 들어 아래 조회에서 공급업체 "16"이 어떤 판촉을 진행하고 있는지, 만약 그렇다면 판촉의 명칭이 무엇인지, 판촉 활동의 날짜가 무엇인지 알고 싶습니다.
GraphQL 질의는 다음 결과를 반환해야 합니다.
GraphQL 질의를 분해하면 다음과 같은 상황이 발생합니다.
GKE에서 실행되는 YugabyteDB 클러스터의 promotions
테이블에서 다음을 반환합니다.
현재 우리는
JOIN
데이터베이스에 원격 모드를 설정하고 Data > suppliers > Relationships > Remote Schema Relationships
에 원격 관계를 설정했다.우리는 현재 두 개의 서로 다른 YugabyteDB 데이터베이스에 있는 데이터를 처리하기 위해 조회를 보낼 수 있다. 이 데이터베이스들은 두 개의 서로 다른 클라우드에 위탁되어 있다.이 프레젠테이션에서 우리는 원격 연결 GraphQL 조회를 보내기를 희망합니다. 이 조회는 "주요"북풍 데이터베이스에 있는 공급업체가 "원격"판촉 데이터베이스에 판촉을 안배했는지 확인할 수 있도록 합니다.예를 들어 아래 조회에서 공급업체 "16"이 어떤 판촉을 진행하고 있는지, 만약 그렇다면 판촉의 명칭이 무엇인지, 판촉 활동의 날짜가 무엇인지 알고 싶습니다.
GraphQL 질의는 다음 결과를 반환해야 합니다.
GraphQL 질의를 분해하면 다음과 같은 상황이 발생합니다.
GKE에서 실행되는 YugabyteDB 클러스터의
promotions
테이블에서 다음을 반환합니다.supplier_id
에서 관계가 있는 원격 모드 suppliers
를 이용하여 promotions_remote
표에서 다음 데이터를 되돌릴 수 있습니다. 이 표는 AKS에서 실행되는 YugabyteDB 집단에 있습니다.결론
그렇습니다. 만약 당신이 이 블로그의 모든 설명을 따랐다면, 당신은 현재 다음과 같은 내용을 설정했습니다.
GraphQL 쿼리를 통해 서로 다른 두 데이터베이스의 데이터를 단일 결과 세트에 연결할 수 있음
Reference
이 문제에 관하여(AKS 및 GKE에서 실행되는 분산 SQL의 Hasura GraphQL 원격 연결), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/yugabyte/hasura-graphql-remote-joins-on-distributed-sql-running-on-aks-gke-1h3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)