Google Cloud Bigtable과 Google Cloud Datastore


124

Google Cloud Bigtable 과 Google Cloud Datastore / App Engine 데이터 저장소 의 차이점은 무엇이며 실질적인 주요 장점 / 단점은 무엇인가요? AFAIK Cloud Datastore는 Bigtable을 기반으로 빌드되었습니다.


8
닫지 마십시오. 현재 이것에 대한 공식 문서는 없으며 Google은 여기에 주석을 달 것입니다.
Zig Mandel

이것을 확인하십시오 terrenceryan.com/blog/index.php/…
Zig Mandel

답변:


97

Datastore 사용 경험과 Bigtable 문서 읽기를 기반으로 할 때 주요 차이점은 다음과 같습니다.

  • Bigtable은 원래 HBase 호환성을 위해 설계되었지만 이제는 여러 언어로 된 클라이언트 라이브러리가 있습니다 . Datastore는 원래 Python / 자바 / Go 웹 앱 개발자 (원래 App Engine)에 더 적합했습니다.
  • Bigtable은 '그냥 거기'가 아니라 클러스터를 구성 해야한다는 점에서 Datastore보다 '조금 더 IaaS' 입니다.
  • Bigtable은 'row key'(Datastore의 항목 키)라는 하나의 색인 만 지원합니다.
    • 즉, Datastore의 색인이 생성 된 속성과 달리 쿼리가 키에 있음을 의미합니다.
  • Bigtable은 단일 행에서만 원 자성을 지원합니다. 트랜잭션이 없습니다.
  • Bigtable에서는 변형 및 삭제가 원 자성이 아닌 것으로 보이지만 Datastore는 읽기 / 쿼리 방법에 따라 최종적이고 강력한 일관성을 제공합니다.
  • 청구 모델은 매우 다릅니다.
    • 읽기 / 쓰기 작업, 스토리지 및 대역폭에 대한 데이터 스토어 요금
    • '노드' , 스토리지 및 대역폭에 대한 Bigtable 요금

98

Bigtable은 대량의 데이터 및 분석에 최적화되어 있습니다.

  • Cloud Bigtable 은 영역 또는 지역간에 데이터를 복제하지 않습니다 (단일 클러스터 내의 데이터는 복제되고 내구성이 있음). 즉, Bigtable이 더 빠르고 효율적이며 비용이 훨씬 낮지 만 내구성이 떨어지고 기본 구성에서 사용할 수 있음을 의미합니다.
  • HBase API를 사용합니다. 학습에 종속되거나 새로운 패러다임의 위험이 없습니다.
  • 오픈 소스 빅 데이터 도구와 통합되어 고객이 사용하는 대부분의 분석 도구 (Hadoop, Spark 등)에서 Bigtable에 저장된 데이터를 분석 할 수 있습니다.
  • Bigtable은 단일 행 키로 인덱싱됩니다.
  • Bigtable은 단일 영역에 있습니다.

Cloud Bigtable은 복잡한 백엔드 워크로드와 함께 더 큰 데이터가 필요한 경우가 많은 대기업 및 대기업을 위해 설계되었습니다.

Datastore는 애플리케이션에 고 가치 트랜잭션 데이터를 제공하도록 최적화되었습니다.

  • Cloud Datastore 는 복제 및 데이터 동기화를 통해 매우 높은 가용성을 제공합니다.
  • 다용 성과 고 가용성으로 인해 데이터 저장소가 더 비쌉니다.
  • 데이터 저장소는 동기식 복제로 인해 데이터 쓰기 속도가 느립니다.
  • Datastore는 트랜잭션 및 쿼리에 대해 훨씬 더 나은 기능을 제공합니다 (보조 색인이 존재하므로).

3
Bigtable은 이제 영역 중단시 가용성을 제공하기 위해 영역간에
Brandon DuRette

저는 거래가 데이터 스토어의 강력한 판매 포인트가 아니라고 생각했습니다. 그것의 [doc | cloud.google.com/datastore/docs/concepts/transactions] "트랜잭션은 최대 25 개 항목 그룹에있는 하나 이상의 항목에 대한 Google Cloud Datastore 작업 집합입니다."또한 데이터 저장소는 Bigtable 위에 구축됩니다.
zyxue

19

Bigtable과 Datastore는 매우 다릅니다. 예, 데이터 저장소는 Bigtable을 기반으로 구축되었지만 그와 비슷한 것은 아닙니다. 그것은 마치 자동차가 바퀴 위에 만들어 졌다고 말하는 것과 같습니다. 그래서 자동차는 바퀴와 크게 다르지 않습니다.

Bigtable과 Datastore는 데이터가 변경되는 방식에서 매우 다른 데이터 모델과 의미 체계를 제공합니다.

가장 큰 차이점은 Datastore가 항목 그룹으로 알려진 데이터의 하위 집합에 SQL 데이터베이스와 유사한 ACID 트랜잭션을 제공한다는 것입니다 (쿼리 언어 GQL은 SQL보다 훨씬 더 제한적 임). Bigtable은 엄격히 NoSQL이며 훨씬 더 약한 보증을 제공합니다.


4
당신은 마지막 단락까지 잘하고있었습니다. 데이터 저장소는 트랜잭션을 제공하지만 SQL과는 다르며 ACID가 아닙니다.
Daniel Roseman 2015 년

4
@DanielRoseman 사실, 그것은 매우 많이합니다. 다음은 Megastore (Datastore가 구축 된)에 대한 논문의 인용문입니다. "각 Megastore 항목 그룹은 직렬화 가능한 ACID 의미 체계를 제공하는 미니 데이터베이스 역할을합니다." "데이터 저장소를 분할하고 각 파티션을 개별적으로 복제하여 파티션 내에서 전체 ACID 의미 체계를 제공합니다." (research.google.com/pubs/pub36971.html)
user2771609

나는 그것을 Sql이라고 부르는 오해의 소지가 있다고 생각합니다. 기껏해야 하위 집합. 효율적인 개수 / 그룹이 없으며 모든 쿼리는 인덱스 등을 사용해야합니다
Zig Mandel

4
쿼리 언어와 트랜잭션 격리는 서로 다른 것이므로 혼합 된 것 같습니다. 후자 (ACID 거래 ) 에 대해 주장하고 있습니다. 귀하의 의견에서 귀하는 내가 전자에 대해 이야기하고 있다고 가정하고 있습니다. 아마도 일부 하이픈이 명확해질 것입니까? 의심을 없애기 위해 쿼리 언어 문제를 명시 적으로 언급하겠습니다.
user2771609

8

논문을 읽으면 BigTable은 이것 이고 Datastore는 MegaStore 입니다. Datastore는 BigTable과 복제, 트랜잭션 및 색인입니다. (그리고 훨씬 더 비쌉니다).


정말 더 비쌉니까? BigTable의 최소 가격은 3 노드이고 10GB HDD는 월 $ 1400입니다. 꽤 높은 것 같지 않습니까?
benji

@ben, 내 과거 경험에서 그랬습니다. 데이터 스토어에는 시간이 아닌 작업별로 요금이 부과됩니다. (그렇게 많이 사용하지 않으면 Datastore에 많은 비용을 지불하지 않아도됩니다.하지만 트래픽이 많고 bigtable이 훨씬 저렴하다고 생각합니다.) Bigtable이 초당 10,000 개의 작업을 요구한다고 생각하십니까? 실제로는 약 1-2k처럼 낮지 만 여전히 3 개의 노드는> 5k / s입니다. 한 달 동안 처리량을 유지하고이를 Datastore 가격에 매핑하면 아마도 1.4k보다 훨씬 높을 것입니다.
저스틴 장


7

위의 모든 답변과 Coursea Google Cloud Platform 빅 데이터 및 머신 러닝 기초에 제공된 내용을 요약하려고합니다.

+---------------------+------------------------------------------------------------------+------------------------------------------+--+
|      Category       |                             BigTable                             |                Datastore                 |  |
+---------------------+------------------------------------------------------------------+------------------------------------------+--+
| Technology          | Based on HBase(uses HBase API)                                   | Uses BigTable itself                     |  |
| ----------------    |                                                                  |                                          |  |
| Access Mataphor     | Key/Value (column-families) like Hbase                           | Persistent hashmap                       |  |
| ----------------    |                                                                  |                                          |  |
| Read                | Scan Rows                                                        | Filter Objects on property               |  |
| ----------------    |                                                                  |                                          |  |
| Write               | Put Row                                                          | Put Object                               |  |
| ----------------    |                                                                  |                                          |  |
| Update Granularity  | can't update row ( you should write a new row, can't update one) | can update attribute                     |  |
| ----------------    |                                                                  |                                          |  |
| Capacity            | Petabytes                                                        | Terbytes                                 |  |
| ----------------    |                                                                  |                                          |  |
| Index               | Index key only (you should properly design the key)              | You can index any property of the object |  |
| Usage and use cases | High throughput, scalable flatten data                           | Structured data for Google App Engine    |  |
+---------------------+------------------------------------------------------------------+------------------------------------------+--+

이 이미지도 확인하십시오. 여기에 이미지 설명 입력

여기에 이미지 설명 입력


2

고려할 상대적으로 사소한 점은 2016 년 11 월부터 bigtable python 클라이언트 라이브러리 가 여전히 알파 버전이므로 향후 변경 사항이 이전 버전과 호환되지 않을 수 있음을 의미합니다. 또한 bigtable python 라이브러리는 App Engine의 표준 환경과 호환되지 않습니다. 유연한 것을 사용해야합니다.


2016 년 11 월부터 Java
Aram Paronikyan도

2

이는 다른 서비스와 함께 Google Cloud Bigtable과 Google Cloud Datastore 간의 또 다른 주요 차이점 일 수 있습니다. 아래 이미지에 표시된 내용은 올바른 서비스를 선택하는 데 도움이 될 수도 있습니다.

여기에 이미지 설명 입력

여기에 이미지 설명 입력


1

여기에 이미지 설명 입력

Cloud Datastore is a highly-scalable NoSQL database for your applications.
Like Cloud Bigtable, there is no need for you to provision database instances.
Cloud Datastore uses a distributed architecture to automatically manage
scaling. Your queries scale with the size of your result set, not the size of your
data set.
Cloud Datastore runs in Google data centers, which use redundancy to
minimize impact from points of failure. Your application can still use Cloud
Datastore when the service receives a planned upgrade.

여기에 이미지 설명 입력

 Choose Bigtable if the data is:
Big
● Large quantities (>1 TB) of semi-structured or structured data
Fast
● Data is high throughput or rapidly changing
NoSQL
● Transactions, strong relational semantics not required
And especially if it is:
Time series
● Data is time-series or has natural semantic ordering
Big data
● You run asynchronous batch or real-time processing on the data
Machine learning
● You run machine learning algorithms on the data
Bigtable is designed to handle massive workloads at consistent low latency
and high throughput, so it's a great choice for both operational and analytical
applications, including IoT, user analytics, and financial data analysis.

0

Datastore는 더 많은 애플리케이션 준비가되어 있으며 특히 마이크로 서비스를위한 광범위한 서비스에 적합합니다.

Datastore의 기본 기술은 Big Table이므로 Big Table이 더 강력하다고 상상할 수 있습니다.

데이터 스토어는 매일 20K 무료로 운영되며, 비용이 전혀 들지 않는 안정적인 DB로 서버를 호스팅 할 수 있습니다.

이 Datastore ORM 라이브러리를 확인할 수도 있으며 https://www.npmjs.com/package/ts-datastore-orm에 많은 훌륭한 기능이 제공됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.