YugabyteDB의 Directus
13373 단어 distributedsqlyugabytedbnocode
현재 YugabyteDB는 지원되는 데이터베이스 중 하나가 아니지만 PostgreSQL과 호환되기 때문에 시도해 볼 가치가 있지 않습니까?
Directus는 https://directus.io/에 다음과 같이 설명되어 있습니다.
Directus is the world's first Open Data Platform for instantly turning any SQL database into an API and beautiful no-code app
제 생각에는 Oracle Database로 많은 작업을 해왔기 때문에 이것은 개방형 APEX와 동등한 것으로 해석됩니다 😎
YugabyteDB에서 Directus 프로젝트를 직접 초기화하려고 하면 다음과 같은 오류가 발생할 수 있습니다.
alter table "directus_relations" alter column "sort_field" type varchar(64) using ("sort_field"::varchar(64))
- This ALTER TABLE command is not yet supported.
YugabyteDB(2.13)의 현재 버전에는 아직 지원되지 않는 일부 DDL이 있기 때문입니다. 지원 추적 위치: https://github.com/yugabyte/yugabyte-db/issues/1124
YugabyteDB는 SQL 처리 계층에 PostgreSQL 코드를 재사용하여 PostgreSQL과 호환됩니다. 그러나 분산 환경에서 카탈로그를 유지하려면 더 많은 고려 사항이 필요하며 ALTER TABLE에 대한 지원을 하나씩 고려해야 하는 이유입니다.
이 DDL은 Knex.js을 사용하는 Directus 데이터베이스 마이그레이션 스크립트에 의해 생성됩니다. 각 배포에 대한 데이터 모델의 수명을 재생하는 열렬한 팬은 아닙니다. DDL은 결코 저렴하지 않지만 민첩성을 이해합니다.
문제 없습니다. 일부 DDL이 아직 지원되지 않더라도 호환 가능할 때 한 데이터베이스에서 다른 데이터베이스로 쉽게 이동할 수 있습니다. PostreSQL에서 초기화하고 YugabyteDB로 옮기겠습니다. PostgreSQL에 머물지 않는 이유를 물을 수 있습니다. YugabyteDB는 분산되어 있습니다. 노드를 추가하여 확장할 수 있습니다. 연결, SQL 처리, 읽기 및 쓰기, 데이터가 자동으로 균형을 이룹니다. 그리고 애플리케이션 연속성과 함께 고가용성을 위해 복제됩니다.
PostgreSQL 데이터베이스를 시작합니다.
podman run --name pg -d \
-e POSTGRES_PASSWORD=secret \
-p 5432:5432 \
postgres
podman exec pg psql -h localhost -U postgres \
-c "create database directus"
Directus 프로젝트를 초기화합니다.
npm init directus-project example-project
데이터베이스 연결 정보를 입력합니다.
이것은 데이터베이스를 초기화하는 것 외에도 다음으로 이동하는 프로젝트 디렉토리를 생성합니다.
cd example-project
이제 YugabyteDB 데이터베이스를 시작합니다:
podman run --name yb -d \
-p 5433:5433 \
yugabytedb/yugabyte:latest \
bin/yugabyted start --daemon=false
podman exec yb ysqlsh -h localhost -U yugabyte \
-c "create database directus"
물론 Yugabyte 클라우드( free tier )와 같이 데이터베이스가 이미 있을 수 있으며 연결 정보만 사용할 수 있습니다.
pg_dump
를 사용하면 PostgreSQL에서 YugabyteDB로 스키마를 쉽게 복사할 수 있습니다.podman exec pg pg_dump -h localhost -U postgres -d directus |
podman exec -i yb bin/ysqlsh -h localhost -U yugabyte -d directus
프로젝트 디렉토리에서
.env
파일은 모든 연결 정보를 보유합니다. PostgreSQL 데이터베이스용으로 생성되었으므로 YugabyteDB로 변경합니다.sed \
-e '/DB_PORT=/s/5432/5433' \
-e '/DB_USER=/s/postgres/yugabyte'
-i .env
Directus 시작(나는 Quickstart Guide을 팔로우하고 있습니다):
npx directus start
다음을 시작할 때 http 포트가 언급됩니다.
이제 로그인할 수 있는 GUI에 오신 것을 환영합니다(초기화 중에 언급되고 데이터베이스에 저장된 자격 증명 사용).
실제로 데이터베이스의 테이블인 컬렉션을 만들 수 있습니다.
시퀀스 또는 UUID에 의해 생성된 기본 키를 선택할 수 있습니다. 둘 다 작동하고 확장 가능합니다. 기본적으로 HASH가 있는 YugabyteDB는 첫 번째 기본 키 열에 배포됩니다.
테이블의 행인 항목을 추가할 수 있습니다.
이 모든 것은 데이터베이스에서 볼 수 있습니다. 이것이 바로 그 아름다움입니다. 실제 SQL 항목, 여기서 인덱스, 트리거 또는 최적화에 필요한 모든 PostgreSQL 기능을 추가할 수 있습니다.
[opc@dev example-project]$ psql -h localhost -p 5433 -U yugabyte directus
psql (13.5, server 11.2-YB-2.13.0.0-b0)
Type "help" for help.
directus=# \d "Franck"
Table "public.Franck"
Column | Type | Collation | Nullable | Default
--------------+-----------------------------+-----------+----------+--------------------------------------
id | integer | | not null | nextval('"Franck_id_seq"'::regclass)
status | character varying(255) | | not null | 'draft'::character varying
sort | integer | | |
user_created | uuid | | |
date_created | timestamp with time zone | | |
date_updated | timestamp with time zone | | |
my_date | timestamp without time zone | | |
Indexes:
"Franck_pkey" PRIMARY KEY, lsm (id HASH)
Foreign-key constraints:
"franck_user_created_foreign" FOREIGN KEY (user_created) REFERENCES directus_users(id)
directus=# select * from "Franck";
id | status | sort | user_created | date_created | date_updated | my_date
----+--------+------+--------------------------------------+----------------------------+--------------+---------------------
1 | draft | | 05ba2305-d788-4a6b-af35-e75ee69b862c | 2022-04-01 15:12:54.236+00 | | 2022-04-01 17:12:00
(1 row)
directus=#
마지막으로 테이블을 기반으로 하는 간단한 대시보드는 다음과 같습니다.
이것이 No Code 데이터베이스 애플리케이션 개발의 장점입니다. 데이터의 일관성과 가용성은 SQL 데이터베이스에 의해 보장되며 그 위에 프레젠테이션 계층을 구축하는 것이 쉽고 좋습니다.
Reference
이 문제에 관하여(YugabyteDB의 Directus), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/yugabyte/directus-on-yugabytedb-4fpl텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)