2

중간 크기 (~ 100MB)의 읽기 전용 데이터베이스가있어서 Google 앱 엔진에 저장하려고합니다. 데이터 저장소에 넣을 수는 있지만 데이터 저장소는 느리고 일종의 관계형 기능이 없으며 많은 다른 좌절감이 있습니다. 여기에는 해당되지 않습니다. 또 다른 옵션은 모든 데이터를 메모리에로드하는 것이지만 Google이 할당 한 할당량에 빨리 도달했습니다. 마지막 옵션은 django-nonrel + djangoappengine을 사용하는 것이지만 패키지가 아직 초기 단계에 있음을 두려워합니다.Google App Engine에 읽기 전용 관계형 데이터베이스가 있습니까?

이상적으로는 데이터 소스로 blobstore를 사용하는 읽기 전용 sqlite 데이터베이스를 만들고 싶습니다. 이것이 가능한가?

+3

어떤 문제를 해결하려고합니까? 당신은 데이터베이스가 필요한 것이 무엇입니까? 읽는 경우에만 데이터를 오프라인에서 사용 가능한 상태로 변환 할 수없는 이유는 무엇입니까? 100MB 밖에 없다면 다양한 쿼리를 지원하는 10 가지 다른 방법으로 비정규화할 수 있습니다. –

+0

오프라인으로 다른 상태로 넣을 수 있다면 어떻게해야할까요? Blobstore로 업로드하고 수동으로 검색합니까? 아니면 데이터 저장소에 저장합니까? 또한 모든 것을 비정규 화하면 데이터가 쉽게 기가 바이트 범위까지 커집니다. 예를 들어 위치 검색을 지원하기 위해 geomodel의 맞춤 버전을 사용하고 있습니다. 위치 데이터를 역 정규화하면 크기가 폭발하게됩니다. – speedplane

답변

2

나는 당신이 그런 것을 찾을 가능성이 있다고 생각하지 않습니다. 틀림없이 블롭 스토어가 아닙니다. 모든 데이터가 단일 BLOB에 저장되어 있다면 모든 작업을 위해 전체 데이터베이스를 메모리로 읽어 와야한다고 말했고 그렇게 할 수 없다고 말했기 때문입니다.

데이터 저장소를 백엔드로 사용하는 것이 더 그럴듯하지만 그리 많지는 않습니다. SQLite 드라이버를 제공 할 때 큰 문제는 트랜잭션 의미론을 구현하는 것이고 고 가용성을 위해 GAE가 사용자로부터 빼앗은 중요한 문제이기 때문에 누군가가 그런 문제를 작성하는 데 많은 어려움을 겪고 있다고 상상하기 어렵습니다.

+1

전체 BLOB를로드 할 필요는 없습니다. 앱 엔진은 무작위 파일 액세스와 마찬가지로 blobstore에 임의 액세스를 제공합니다. 또한 읽기 전용 데이터베이스입니다. 나는 거래가 필요할 것이라고 생각하지 않는다. – speedplane

1

BlobReader 클래스를 통해 파일과 유사한 객체로 Blobstore 객체에 액세스 할 수는 있지만 데이터 저장소가 파일의 전체를로드하지 않고 해당 파일에 대한 관계형 데이터베이스 작업을 수행하는 것은 더욱 어려울 것입니다 먼저 메모리에 저장하십시오.

+0

스마트 메모리 캐시를 사용하면 실현 가능성이 있다고 생각합니다. – speedplane

2

django-nonrel은 마술처럼 SQL 데이터베이스를 제공하지 않으므로 실제로 문제의 해결책은 아닙니다.

파일과 같은 blobstore blob에 액세스 할 수는 있지만 SQLite 모듈에는 App Engine에서 사용할 수없는 기본 C 확장명이 필요합니다.