준비: 작업 백엔드로 BigQuery 사용
4397 단어 sqlgoogleclouddatabase
BigQuery 를 백엔드로 사용하시겠습니까?세계 태권도 연맹?
BigQuery는 데이터 분석 솔루션 분야의 주요 참여자가 되었습니다.그것은 간단하고 효율적이며 경제적인 방식으로 하나를 제공했다ever-growing list of powerful features.그러나 BigQuery는 절대로OLAP, while the sensible option for an application backend is OLTP.
따라서 BigQuery를 백엔드로 사용하는 것은 이상하게 보일 수도 있고...확실히 이와 같다!단지 발생할 수 있는 많은 문제의 표면을 벗기기 위해서이다.
그러나 어떤 경우 이런 디자인은 약간의 흥미를 불러일으킬 수 있다...
빅쿼리를 둘러싼 거대한 분석 데이터 플랫폼을 상상해 보세요.이제 플랫폼의 한 구석을 상상해 보십시오. 그 중 일부 설정은 반드시 관계식으로 저장되어야 하며, 이러한 설정 데이터는 데이터의 접근 방식에 영향을 미칠 것입니다.구성을 업데이트하기 위해 API가 공개되었습니다.구성 값을 저장하는 두 가지 옵션이 있습니다.
집에서 하지 마!이 특기는 전문가가 공연한다
BigQuery 테이블의 고유성 제약 조건 적용
모든 경고가 폭로되었으니 계속 집행합시다.구글이 다양한 언어에 빅쿼리 클라이언트 라이브러리를 제공했기 때문에 어렵지 않다.사용REST Api도 가능합니다.
문제는 OLTP 데이터베이스를 적절하게 제공하지 않음으로써 비용을 절감하는 데 동의하더라도 여전히 제약이 필요할 수 있다는 것입니다.
구성 테이블이 다음 모드에 포함되어 있다고 가정합니다.
| Id (STRING) | Attribute (STRING) | Value (STRING) |
강제 집행 Id
값이 유일하다.일반적으로 이것은 OLTP 데이터베이스에 있는 간단한 문장UNIQUE(Id)
이다.그러나 이러한 주장은 BigQuery에 존재하지 않습니다.다행히도 BigQuery의 새로운 기능은 다음과 같습니다. Transactions
BigQuery 트랜잭션
이 문서를 작성할 때 여러 쌍의 장부 거래 기능은 이미 GA 이전 제품에 포함되었다.표준 SQL 스크립트를 원자 트랜잭션으로 포장할 수 있습니다.
따라서 기존의 고유한 구속조건의 결함을 보완하기 위해 테이블에서 항목을 저장하거나 수정할 때 다음과 같은 순서를 수행할 수 있습니다.
-- 1
BEGIN TRANSACTION;
-- 2
SELECT * FROM (
SELECT COUNT(1) AS conflict
FROM `configds.configtable`
WHERE Id=@input_id
) WHERE
IF (conflict=0, TRUE, ERROR("Id already exists));
-- 3
INSERT INTO `configds.configtable`
VALUES(@input_id,@input_attribute,@input_value);
-- 4
COMMIT TRANSACTION;
2단계ERROR()
에서는 자동으로 트랜잭션이 롤백되므로 3단계가 발생하지 않습니다.SQL 주입을 방지하려면 여기에 명명된 매개변수를 사용합니다.설정을 저장할 때 프로그램 백엔드에서 이 스크립트를 호출합니다. 이것은 프로그램 클라이언트가 동시에 삽입하는 영향을 받지 않도록 보호합니다.
제한성
앞에서 말한 바와 같이 이런 구속을 실현하는 방법은 보급될 수 없다.가장 두드러진 제한 사항은 다음과 같습니다.
결론
새로운 BigQuery 멀티 문장 사무 기능은 BigQuery를 실행 가능한 응용 프로그램의 백엔드로 사용할 수 있도록 합니다. 만약 매우 조심스럽게 사용하면 사용할 수 있습니다.그럼에도 불구하고 전통적인 OLTP 데이터베이스와의 균형을 꼼꼼히 고려해야 합니다. 만약에 이 길을 따른다면 당신의 선택을 지켜야 합니다!
표지 사진 작성자Domi Nemeth가 Unsplash
Reference
이 문제에 관하여(준비: 작업 백엔드로 BigQuery 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/stack-labs/brace-yourself-using-bigquery-as-an-operational-backend-3e1i텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)