우리는 ARM을 기반으로하지 않는 작은 상자 (예 : CuBox-i2eX) 또는 그보다 더 저렴한 을 작은 상자에 배치 할 Rails 4.1 응용 프로그램을 설계하고 있습니다.PostgreSQL 또는 임베디드 응용 프로그램 용 SQLite
대부분의 트래픽을 얻을 수있는 동일한 서비스를 제공하는 일부 다른 서비스가있을 것이며 레일스 애플리케이션은 거의 대부분 트래픽이 적은 관리 목적으로 만 존재하지만 소수의 대규모 워크 플로를 처리해야합니다 때때로 (데이터 입력). 전반적인 데이터 볼륨은 대부분의 규모에서 작습니다.
이 시점에서 SQLite3은 이러한 종류의 응용 프로그램에 이상적이지만 관리되는 데이터는 학생과 교사 등을 묘사하고 LDAP와 같은 스키마를 나타내며 여러 값 (또는 구조)을 갖는 많은 특성으로 구성되어 PostgreSQL의 array
및 h-store
데이터 유형에 이상적이며 SQLite3에서 구현하기에는 다소 성가신 일입니다.
나는 레일의 serialize
알고 있어요,하지만 난 옵션 사이 저를 떠나, 그 다중 값 컬럼의 적어도 일부를 조회해야합니다 희망,
- 가 (메모리) 총알을 물린과 PostgreSQL로 이동 작은 상자를 먹지 않을 것입니다.
- 이러한 모든 배열과 같은 속성에 대해 다른 테이블/모델을 생성하십시오.
EmailAddress
및 - EAV의 변형
TelephoneNumber
하지만, 여러 모델에 속할 수StringValue
있도록EmailAddress < StringValue
및TelephoneNumber < StringValue
을 필요 다형성 협회와 함께 그들을 스티치하는 레일 '단일 테이블 상속을 사용하여.
그래서 내 질문은 : STI 및 다형성 연관을 함께 사용할 때와 성능을 필요로하지 않을 때 전체 PostgreSQL 설치를 사용할 때의 단점이 있습니까?
제 의견으로는 레일즈와 함께 매일 작업하면서 레일스를 사용하여 이미 메모리 총알을 물고 있습니다. 대신 Sinatra 사용에 대해 생각해 보셨습니까? PostgreSQL에 대한 메모리를 확보 할 수 있습니다. 또한, PostgreSQL 튜닝에 대해 읽어보십시오. https://wiki.postgresql.org/wiki/Tuning_Your_PostgreSQL_Server –
어떤 메모리 제한을 다루고 있습니까? 내가 볼 수있는 것부터 CuBox-i2eX에는 1GB RAM이 있습니까? 그 맞습니까? 필자는 PostgreSQL에 의해 뒷받침되는 Rails 애플리케이션과 그 이상의 백그라운드 작업자 (Sidekiq)를 실행했습니다. PostgreSQL은 100MB가 만족 스럽습니다. 그리고 여러분은 더 낮은 한계에 대해 의문의 여지가 없습니다. 대부분의 Rails 앱은 인스턴스 당 150-200MB (추가 조정 가능)로 실행됩니다.이 인스턴스는 일반적으로 사용량이 적을 때만 충분합니다. –
PostgreSQL은 정말 작은 RAM 용량에 만족합니다. 특히 연결 제한을 낮추거나 잠금 횟수를 낮추거나 "shared_buffers"를 뼈에 맞게 잘라 내면 더욱 그렇습니다. 즉, SQLite는 이러한 종류의 가볍고 간헐적 인 액세스 사용 사례에 더 적합합니다.SQLite 데이터베이스 파일은 훨씬 더 다양한 버전에서 호환됩니다. 펌웨어 업데이트를 릴리스 할 때 Pg를 업그레이드하는 것은 어려울 수 있지만 지원되지 않는 일부 고대 버전에서 멈추게됩니다. 나는 SQLite를 사용할 것이다. –