14

저는 gae를 사용하는 엔터프라이즈 관리 시스템 인 애플리케이션을 구축하고 있습니다. gae와 데이터 저장소를 사용하여 여러 가지 응용 프로그램을 만들었지 만 많은 사용자가 관리 및보고보고의 필요성과 함께 트랜잭션을 입력해야합니다. 내 가장 큰 두려움은 크로스 탭 및 기타 세부 보고서 (또는 비즈니스 인텔리전스보고 및 데이터 조작)를 작성해야 할 때 gae의 데이터 스토어 쿼리 및 데이터 끌어 오기 한계에 관한 문제가 발생하게 될 것이라는 점입니다. 그것은 단지 건축 적 취향입니까 아니면 여기에 양적인 관심이 있습니까?GAE 데이터 저장소와 엔터프라이즈 관리 시스템 용 Google Cloud SQL

과거에는 Oracle/MySql/MSSql에 대해 C++/C#/Java를 사용하여 시스템을 구축했습니다 (복잡하거나 자주 액세스하는 db 결과에 대한 추가 성능을 위해 캐싱 계층을 뿌렸습니다).

필자는 관계형 데이터의 오래된 사고 방식을 버리고 하늘에있는 큰 McHashTable의 새로운 세계로 이동한다는 것을 계속 읽었지만 ... 새로운 것에는 항상 더 나은 것이 없다. 위의 모든 통찰력이나 경험 도움이 될 것입니다.

+0

관계형 모델은 그 자체로 매우 유용하다고 입증되었지만 기존 제품은 인터넷 규모로 제공 할 수 없었습니다. 따라서 우리는 자신의 문제에 대해 다양한 솔루션을 보유하고 있습니다. NuoDB는 흥미롭고 유망한 "NewDB"데이터베이스의 예입니다. 기다리는 동안, 사람들은 특정 사용 사례에 대한 솔루션을 결합하고, 쿼리 및 보고서를 위해 별도의 데이터베이스에 데이터를 복사하고, rdbms 앞의 gigaspaces를 사용하는 경향이 있습니다. – tesdal

답변

21

:

내가 Google 클라우드 SQL 또는 앱 엔진 데이터 저장소 사용해야합니까?

이것은 응용 프로그램의 요구 사항에 따라 다릅니다. Datastore는 확장 성이 뛰어나지 만 SQL 데이터베이스에서 제공하는 복잡한 쿼리를 지원하지 않는 NoSQL 키 - 값> 스토리지를 제공합니다. Cloud SQL은 복잡한 쿼리 및 ACID 트랜잭션을 지원하지만 이는 데이터베이스가 '고정 파이프'역할을하며 성능은 확장 성이 떨어짐을 의미합니다. 많은 응용 프로그램에서 두 유형의 저장소를 모두 사용합니다.

db 엔티티/분산 키에 많은 쓰기 (~ XXX/s)가 필요한 경우 Google App Engine 데이터 저장소가 실제로 빛나는 곳입니다.

복잡하고 무작위로 사용자가 만든 쿼리를 지원해야하는 경우 Google Cloud SQL이 더 편리합니다.

+0

이 두 가지를 결합한 사운드는이 상황에서 가장 좋을 수 있습니다. 아마 나는 두 가지 단계로 문제를 해결할 수 있습니다. 데이터 저장소를 OLTP 용 응용 프로그램 인터페이스로 사용하고 비동기 대기열 또는 cron 작업을 통해 해당 데이터를 OLAP 용 클라우드 SQL로 마이그레이션 할 수 있습니다. 데이터 중복이 있지만 마이 그 레이션 작업을 좀 더 표준화 된 상태로 작성하고 데이터 저장소 쪽에서 오래된 데이터를 정리하기 전에 코드 자체에서 데이터를 변환 할 수있는 기회로 사용할 수 있습니다. 나 자신이 ... – MindWire

+0

사실 나는이 사실을 보았고, 이는 나의 이전 코멘트에 약간의 무게를 준다. http://stackoverflow.com/a/1711757/525541 – MindWire

+1

엄청난 양의 데이터가있는 경우 Big Query https://developers.google.com/bigquery/를 사용할 수도 있습니다. 가져온 데이터 세트. – proppy

6

GAE 데이터 저장소에서 나를 더 많이 놀라게하는 것은 색인 번호 제한입니다. 예를 들어, 일부 필드 또는 정렬로 검색해야하는 경우 +1 인덱스가 필요합니다. 완전히 200 개의 인덱스를 가질 수 있습니다. 검색 가능한 필드가 10 개인 엔티티가 있고 필드로 정렬 할 수있는 경우 약 100 개의 조합이 있습니다. 따라서 100 개의 색인이 필요합니다. 나는 개 (gae)를위한 몇 가지 작은 프로젝트를 개발했다 - 이것이 성공 사례 다. 그러나 큰 사람이 올 때 - 이것은 개를위한 것이 아닙니다.

캐시 정보 - gae로 할 수 있지만 분산 캐시는 매우 느리게 작동합니다. 캐시 된 값을 메모리에 저장하는 RESTfull API를 사용하여 영구 백엔드의 개인 인스턴스를 만드는 것이 더 좋습니다. 프론트 엔드 인스턴스는이 API를 호출하여 값을 가져 오거나 설정합니다.

아마도 gae로 복잡한 시스템을 구축 할 수는 있지만, 이는 작은 응용 프로그램/서비스 세트 일 것입니다. Cloud SQL FAQ에서

+6

이 기사에 설명 된대로 https://developers.google.com/appengine/articles/indexselection에서 새 고급 쿼리 계획자는 비싼 대신 단일 속성 인덱스에서 지그재그 병합 조인을 사용하여 복잡한 쿼리의 인덱스 수를 크게 줄일 수 있습니다 합성 지수의 조합. – proppy

+0

예, 이미 읽었습니다.한계의 관점에서 큰 차이를 만듭니다. – MindWire

+0

예, 읽었습니다. 그러나 10 개의 필드 중 1 개를 검색하고 10 개의 필드 중 1 개의 필드를 기준으로 검색 할 경우 100 개의 인덱스와 동일한 정보를 제공합니다. 따라서 프로젝트에 그러한 엔티티가 거의 없다면 예가 될 수 있습니다. 그러나 일부 프로젝트에는 그러한 엔티티의 greate 번호가 포함되어 있습니다. 그래서 여전히 내 posiyion에 - 데이터 저장소와 gae 작은 프로젝트에 좋습니다. 소규모 프로젝트를 통해 배포하는 경우 gae를 사용하여 거대한 것을 만들 수 있습니다. – alexey28