DenoGres를 사용한 ProGress
Deno에 대한 간략한 개요
Deno는 Chrome의 V8 엔진 위에 Rust로 구축된 빠르게 떠오르는 JavaScript, TypeScript 및 WebAssembly 런타임으로, 안전한 기본값, 내장 도구 및 종속성 관리를 위한 URL 가져오기를 제공합니다. 2018년 JSconf EU에서 Node를 만든 Ryan Dahl이 " Node에 대해 내가 후회하는 10가지"라는 유명한 강연에서 소개했습니다 . ”
왜 ORM인가?
익숙하지 않은 사람들을 위해 ORM은 Object-Relational Mapper를 나타냅니다. "그게 무슨 뜻이야?" 당신은 물어볼 수 있습니다. 간단히 말해서 ORM을 사용하면 개발자가 쿼리 문자열이 아닌 객체를 통해 관계형 데이터베이스로 작업할 수 있습니다. 개체 지향 프로그래밍과 SQL의 선언적 구문 간 전환은 지루할 수 있으며 개발 중에 워크플로를 방해할 수 있습니다. ORM을 사용하면 개발자가 데이터베이스와 클래스 및 인스턴스로 상호 작용할 수 있습니다. 우리의 이익을 위해 세상에는 수많은 ORM 도구가 있습니다. 안타깝게도 일류 TypeScript 지원으로 설계된 오픈 소스 옵션은 제한적이며 Deno 런타임용으로 설계된 것은 훨씬 더 적습니다.
DenoGres, 솔루션
DenoGres는 Deno 런타임에서 PostgreSQL로 작업하는 개발자를 위해 TypeScript ORM을 제공합니다. 이 도구는 레이블, 유형 및 제약 조건을 포함하여 사용자의 데이터베이스를 검사하고 각 테이블을 추상 "모델" 클래스를 확장하는 클래스로 바꾸는 방식으로 작동합니다. 이를 통해 이러한 테이블 클래스는 내부적으로 데이터베이스 쿼리를 안전하게 처리하는 일련의 정적 속성 및 메서드에 액세스할 수 있으며 사용자는 친숙한 OOP 메커니즘을 통해 데이터베이스 상호 작용을 경험할 수 있습니다.
Deno 프로젝트에서 DenoGres 작업을 시작하려면 다음 명령줄 프롬프트를 따르십시오.
DenoGres를 프로젝트로 가져옵니다.
deno install --allow-read --allow-write --allow-net --allow-env
--allow-run --name denogres https://deno.land/x/denogres/mod.ts
denogres --init
데이터베이스를 검사하고 모델을 생성합니다.
denogres --db-pull
denogres --gui
데노그레스 4.0 기능
DenoGres 4.0은 이미 강력한 ORM에 다양한 업데이트를 제공합니다. 아마도 가장 흥미롭게도 트랜잭션 및 롤백 기능을 추가하여 사용자가 트랜잭션 무결성 및 ACID 준수를 유지하면서 여러 쿼리를 일괄 처리할 수 있습니다.
ACID 약어의 첫 번째 원칙인 원자성은 본질적으로 데이터베이스에 대한 여러 쿼리를 일괄 처리할 때 모든 변경 사항을 커밋하거나 전혀 커밋하지 않는 규칙입니다. 이는 충돌, 연결 문제 또는 실패한 쿼리의 경우 원치 않는 변경으로부터 데이터베이스의 중요한 테이블을 보호합니다.
DenoGres에서 트랜잭션을 사용하려면 사용자가 .transaction()을 다른 쿼리 메서드 끝에 연결하여 트랜잭션을 생성하거나 계속할 수 있습니다. 여러 모델에서 트랜잭션을 사용하여 쿼리를 일괄 처리할 수 있습니다. 이렇게 하면 한 테이블의 조작이 다른 테이블에 의존할 때 중요한 테이블이 동기화된 상태로 유지되도록 할 수 있습니다. 트랜잭션을 종료하려면 마지막 쿼리에 .endTransaction()을 연결합니다. 트랜잭션의 쿼리가 실패하면 이전 쿼리가 모두 롤백되고 해당 테이블이 원래 상태로 돌아갑니다.
예를 들면 다음과 같습니다.
await Person.insert('name = Alex').transaction();
await Animal.delete().where('name = Spot').transaction();
await Person.insert('nae = Rachel').endTransaction();
// throws an error since 'nae' isn't a column, rolls back all previous queries and returns the error for the query that failed
DenoGres 4.0은 또한 사용자와 개발자 모두에게 간소화된 경험을 보장하기 위해 코드 적용 범위를 크게 늘립니다. 잠재적인 사용 사례에 엄격한 주의를 기울였습니다. 즉, 사용자는 데이터가 손상될 것을 걱정하지 않고 보다 정교한 쿼리를 위해 DenoGres를 사용할 수 있습니다.
데노그레스의 미래
DenoGres는 OSLabs에서 개발한 오픈 소스 제품이므로 이 도구는 계속 개선되고 있으며 앞으로 기대할 수 있는 여러 기능이 있습니다.
- SavePoint 기능을 통해 사용자는 섹션으로 나눌 수 있는 더 큰 트랜잭션을 가질 수 있고 부분 트랜잭션을 저장점으로 롤백할 수 있습니다. 이는 복잡한 오류 복구를 구현하는 데 유용합니다.
- 관련 행에 빠르게 추가할 수 있도록 다른 모델과 연결이 설정될 때 모델에 추가할 수 있는 setter 메서드입니다.
- manyToMany 함수는 ORM 사용자가 테이블 간의 보다 복잡한 관계를 시작할 수 있도록 새로운 접합 테이블을 생성합니다.
DenoGres 4.0 기여자:
- 레이첼 체먼 | 링크드인 | GitHub
- 제이콥 마틴 | 링크드인 | GitHub
- 미아 구센 | 링크드인 | GitHub
- 알렉산더 린 | 링크드인 | GitHub

![연결된 목록이란 무엇입니까? [1 부]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































