2009-06-10 3 views
6

저는 App Engine 데이터 스토어 (예 : '소프트 스키마'스타일)를 통해 기존의 RDBMS 데이터 저장소에서 디자인 기술을 마이그레이션하는 데 도움이되는 자료를 찾고 있습니다. 나는 몇 가지 프리젠 테이션과 모든 주제에 대한 모든 접촉과 몇 가지 특정 기술을 보았습니다.AppEngine 생각하기

데이터가 어떻게 구조화되어 있는지 다시 생각하는 실용적인 접근법, 특히 기존 응용 프로그램을 포팅 할 때 경험에서 얻은 지식 ("트렌치에서")을 풀 수있는 곳이 있는지 궁금합니다. 우리는 크게 Hibernate를 기반으로하고 있으며 우리의 데이터 모델로 이미 잘못된 경로를 따라 이동하여 DB가 어려움을 겪고있는 불쾌한 쿼리를 생성했을 것입니다.

경우 응답하십시오 : 당신 AppEngine에에 적지 않은 응용 프로그램을 포팅 한

  1. 당신은 AppEngine에 처음부터 당신이 이루어지지하지도 한 한
  2. 응용 프로그램의 일반적인 유형을 만들었습니다 또는 2,하지만 그것을 고려하고 지금까지 자신의 연구 결과를 공유하고 싶습니다.
+0

스택 오버플로에 대한 비슷한 질문이 있습니다. http://stackoverflow.com/questions/103727/how-to-think-in-data-stores-instead-of-databases – macbirdie

답변

6

궁금하네요

어떤 아직 자바 GAE에 직접 적용 할 수있는 경우 나도 몰라하지만 다양한 Google 그룹스, 그것을위한 좋은 - GAE의 지금까지의 경험은 모두 파이썬입니다. (저는 파이썬의 발명가이며 현재 Google의 App Engine에서 일하는 Guido van Rossum이 그의 독창성에 대해 몇 가지 가르쳐 줬다고 말하면 자랑 스럽습니다. 근무 - 그의 추천은 이제는 내가 가장 자랑스러워하는 사람, 내 linkedin 프로필에있는 모든 사람들 사이에, -). [저는 Google에서 일하지만 App Engine에 미치는 영향은 매우 주변부였습니다. 저는 "클라우드 구축", 클러스터 및 네트워크 관리 SW, 그리고 App Engine은 해당 인프라를 타사 개발자에게 유용하게 만드는 것에 관한 것입니다.]

최적의 GAE 스케일링 및 성능을 위해 데이터를 비정규 화 및 파쇄하는 방법에 관한 많은 수의 에세이가 있습니다 (다양한 품질 임). 지금까지 나온 책들은 너무도 그렇습니다. 앞으로 몇 달 안에 더 많은 것들이 올 것입니다, 잘하면 더 좋은 것들이 있습니다. (나는 두 명의 숙련 된 친구들과 함께 그것들 중 하나를 쓰는 프로젝트를 가지고 있습니다. 그러나 우리는 너무 바빠서 결국 우리는 그것을 버렸습니다.) 일반적으로 Google I/O 동영상과 Google이 자사의 앱 엔진 사이트와 블로그에서 축복받은 에세이를 추천합니다. 내용은 모두 appenginefan's blog입니다. 귀도가 GAE에 대해 가르쳐 주신 것을 저에게 권유합니다. appenginefan에서 배웠습니다 (부분적으로 Palo Alto의 멋진 app engine meetup을 통해, 그러나 그의 블로그도 훌륭합니다 ;-).

1

나는 자바 구글 앱 엔진과 주변 연주하고 많은 단점 남겼 :

이 아니다 범용 자바 애플리케이션 호스팅. 특히 전체 JRE에 액세스 할 수는 없습니다 (예 : 스레드를 만들 수 없음). 따라서 사실상 Google App Engine JRE를 염두에두고 처음부터 응용 프로그램을 빌드해야합니다. non trival 응용 프로그램을 포팅하는 것은 불가능합니다.

데이터 저장소의 질문에

더 많은 관련 ...

데이터 스토어 성능 한심한입니다. 나는 시간당 5000 건의 관측을 시도했다. 너무 거대한 것은 아니지만, 데이터 저장소와 HTTP 요청 모두에서 타임 아웃 예외를 계속 실행했기 때문에 할 수 없었다. "저수준"데이터 저장소 API 사용은 다소 도움이되었지만 충분하지 않았습니다.

24 시간 후에 날씨 기록을 삭제하여 쿼터를 채우고 싶었습니다. 삭제 작업이 너무 오래 걸리기 때문에 다시 시도 할 수 없습니다. 이 문제로 인해 데이터 스토어 할당량이 채워졌습니다. 미안하지만, GAE 데이터 스토어에서 많은 양의 데이터를 쉽게 삭제할 수는 없습니다.

내가 좋아했던 몇 가지 기능이 있습니다. Eclipse 통합이 멋지다. appspot 애플리케이션 서버 UI는 Tomcat을 사용하는 것보다 백만 배나 훌륭합니다 (예 : 멋진 로그보기). 그러나 저를위한 저 이득은 멀리 저쪽에 멀었다.

요약하면 나는 정상적인 Java/응용 프로그램 호스팅 환경에서 아주 사소한 일을하기 위해 자신이 shave the yak 인 것을 끊임없이 발견했습니다.

+0

데이터 저장소 성능을 '심해' - 당신이하고있는 일에 대해 더 자세히 설명해 주시겠습니까? 데이터 스토어 상호 작용의 중요한 구성 요소는 왕복 시간입니다. 일괄 처리 작업은 여기서 큰 차이를 만듭니다. –

+0

@ 닉 불행히도, 배치 할 수 없습니다. http://is.gd/YWPj "여러 개체를 저장하려면 ..."을 참조하십시오. 그러나 문제를 해결하기 위해 노력하고 있습니다. 다시 말하지만 저수준 API로 작업하면 배치와 같은 성능을 얻을 수 있지만 여전히 느립니다. 나는 시간당 약 5000 배의 기상 관측 (온도, 압력 등)을 유지하려고 노력했다. 극적인 것은 없습니다. –

+0

나는 그것이 틀렸다는 것을 믿지 않는다. Java에서 JPA 또는 JDO를 통해 배치 가져 오기 및 가져 오기가 가능합니다. 이미 일부 코드 예제에서이를 보았습니다. http://googleappengine.blogspot.com/2009/06/10-things-you-probably-didnt-know-about.html (해당 페이지의 항목 5 참조) –

1

시간 초과가 빡빡하고 성능은 좋았지 만 좋지 않았기 때문에 시간을 절약하기 위해 여분의 공간을 사용하고있었습니다. 예를 들어 트레이딩 카드와 플레이어 사이에 다 대다 관계가 있었기 때문에 소유하고있는 사람의 정보를 복제했습니다. 카드 객체에는 플레이어 목록이 있고 플레이어 객체에는 카드 목록이 있습니다.

일반적으로 모든 정보를 두 번 저장하는 것은 어리석은 일이었고 (동기화가되지 않는 경향이 있음) 실제로 잘 작동했습니다.

파이썬에서는 최근에 원격 API를 출시 했으므로 데이터 저장소에 대한 대화 형 셸을 만들 수 있으므로 제한 시간이나 제한없이 데이터 저장소를 재생할 수 있습니다 (예 : 대량의 데이터를 삭제하거나 모델을 리팩토링 할 수 있음).); Julien이 언급했듯이 대량 작업을하는 것은 매우 어렵 기 때문에 이것은 매우 유용합니다.

1

비 관계형 데이터베이스 설계는 가능한 경우 역 정규화를 포함합니다.

예 : BigTable은 충분한 집계 기능을 제공하지 않으므로 RDBMS 환경에있는 합계 (현금) 옵션을 사용할 수 없습니다. 대신 모델에 저장해야하며 모델 저장 방법을 역 정규화 된 필드 합계를 계산하려면 무시해야합니다.

마음에 떠오르는 기본적인 기본 디자인은 각 템플릿에 해당 모델에서 채워지는 모든 필수 필드가 해당 모델에서 비정규 화 된 자체 모델을 가지고 있다는 것입니다. 모델에서 전체 신호 업데이트 봇의 복잡성이 발생합니다. 우리는 경험을 통해 지식을 풀 수있는 장소가 있다면