2014-06-09 4 views
2

우리는 ARM을 기반으로하지 않는 작은 상자 (예 : CuBox-i2eX) 또는 그보다 더 저렴한 을 작은 상자에 배치 할 Rails 4.1 응용 프로그램을 설계하고 있습니다.PostgreSQL 또는 임베디드 응용 프로그램 용 SQLite

대부분의 트래픽을 얻을 수있는 동일한 서비스를 제공하는 일부 다른 서비스가있을 것이며 레일스 애플리케이션은 거의 대부분 트래픽이 적은 관리 목적으로 만 존재하지만 소수의 대규모 워크 플로를 처리해야합니다 때때로 (데이터 입력). 전반적인 데이터 볼륨은 대부분의 규모에서 작습니다.

이 시점에서 SQLite3은 이러한 종류의 응용 프로그램에 이상적이지만 관리되는 데이터는 학생과 교사 등을 묘사하고 LDAP와 같은 스키마를 나타내며 여러 값 (또는 구조)을 갖는 많은 특성으로 구성되어 PostgreSQL의 arrayh-store 데이터 유형에 이상적이며 SQLite3에서 구현하기에는 다소 성가신 일입니다.

나는 레일의 serialize 알고 있어요,하지만 난 옵션 사이 저를 떠나, 그 다중 값 컬럼의 적어도 일부를 조회해야합니다 희망,

  1. 가 (메모리) 총알을 물린과 PostgreSQL로 이동 작은 상자를 먹지 않을 것입니다.
  2. 이러한 모든 배열과 같은 속성에 대해 다른 테이블/모델을 생성하십시오. EmailAddress
  3. EAV의 변형 TelephoneNumber하지만, 여러 모델에 속할 수 StringValue 있도록 EmailAddress < StringValueTelephoneNumber < StringValue을 필요 다형성 협회와 함께 그들을 스티치하는 레일 '단일 테이블 상속을 사용하여.

그래서 내 질문은 : STI 및 다형성 연관을 함께 사용할 때와 성능을 필요로하지 않을 때 전체 PostgreSQL 설치를 사용할 때의 단점이 있습니까?

+0

제 의견으로는 레일즈와 함께 매일 작업하면서 레일스를 사용하여 이미 메모리 총알을 물고 있습니다. 대신 Sinatra 사용에 대해 생각해 보셨습니까? PostgreSQL에 대한 메모리를 확보 할 수 있습니다. 또한, PostgreSQL 튜닝에 대해 읽어보십시오. https://wiki.postgresql.org/wiki/Tuning_Your_PostgreSQL_Server –

+1

어떤 메모리 제한을 다루고 있습니까? 내가 볼 수있는 것부터 CuBox-i2eX에는 1GB RAM이 있습니까? 그 맞습니까? 필자는 PostgreSQL에 의해 뒷받침되는 Rails 애플리케이션과 그 이상의 백그라운드 작업자 (Sidekiq)를 실행했습니다. PostgreSQL은 100MB가 만족 스럽습니다. 그리고 여러분은 더 낮은 한계에 대해 의문의 여지가 없습니다. 대부분의 Rails 앱은 인스턴스 당 150-200MB (추가 조정 가능)로 실행됩니다.이 인스턴스는 일반적으로 사용량이 적을 때만 충분합니다. –

+1

PostgreSQL은 정말 작은 RAM 용량에 만족합니다. 특히 연결 제한을 낮추거나 잠금 횟수를 낮추거나 "shared_buffers"를 뼈에 맞게 잘라 내면 더욱 그렇습니다. 즉, SQLite는 이러한 종류의 가볍고 간헐적 인 액세스 사용 사례에 더 적합합니다.SQLite 데이터베이스 파일은 훨씬 더 다양한 버전에서 호환됩니다. 펌웨어 업데이트를 릴리스 할 때 Pg를 업그레이드하는 것은 어려울 수 있지만 지원되지 않는 일부 고대 버전에서 멈추게됩니다. 나는 SQLite를 사용할 것이다. –

답변

2

나는 오래된 학교에 편향되어 있지만 개인적으로 나는 데이터를 정상화 할 것이다. 이렇게하면 이전에 생각하지 못했던 쿼리를 생성 할 수있는 미래의 교정이 제공됩니다. 나는 당신이 걱정할 보안 문제가 없다면 sqlite를 선호하는 경향이있다. (어떤 애플리케이션/사용자로부터 어떤 데이터를 숨기고 싶다는 의미에서) 나는 많은 스키마 변경을 기대하지 않는다. (ALTER TABLE은 SQLite에서 제한적입니다.)

한때 안드로이드 타블렛에서 Postgresql을 설정하려했지만 사용할 수 없었던 커널 기능 (공유 메모리 관련)을 사용하려고했기 때문에 그렇게 할 수 없었습니다. 당신이 그 방향을 시험해보고 싶다면 실제로 그것을 당신의 환경에서 돌아갈 수 있도록하십시오.

+0

나는 내가 임대하는 VPS에서 Ruby/SQLite를 사용하여 Redmine을 실행한다고 덧붙인다. 그것을 Deloying하기 전에 나는 잠시 동안 256Mb Raspberry PI (nginx와 thin 사용) (Postfix/Dovecot 메일 스택과 함께)를 실행했다. PI에서 눈에 띄게 느 렸지만 여전히 완벽하게 사용할 수있었습니다. – akc42

+0

처음에는 SQLite를 사용하는 경향이 있었지만 장기적으로 데이터베이스에 액세스하려면 다른 웹 서비스가 필요할 수도 있다고 생각했습니다. 그래서 PostgreSQL이 될 것입니다. – Laas

관련 문제