2014-06-17 2 views
4

우리는 실제 웹 사이트에서 느린 데이터베이스 작업을위한 최상의 솔루션을 찾으려고합니다. 웹 응용 프로그램으로 느린 데이터베이스 작업을위한 전략

기본 시스템 아키텍처

은 이것이다 :

포스트 그레스 DB (일부 읽기 및 가장 쓰기가 빠르고, 다른 여러 초 정도 소요)
  • 느린. 우리는 이것을 통제 할 수 없습니다.
  • Postgres DB에 액세스하는 모 놀리 식 오프라인 시스템입니다. 우리는 이것을 통제 할 수 없습니다.
  • Postgres DB에 액세스 할 수있는 빠른 내부 서버. 우리는이 서버를위한 소프트웨어를 개발하고 설치할 수 있습니다.
  • Postgres DB에 액세스 할 수 없지만 내부 서버에 액세스 할 수있는 램프 스택을 실행하는 빠른 웹 서버. 우리는이 서버를위한 소프트웨어를 개발할 수 있습니다.
  • 무엇이든 액세스 할 수있는 빠른 MySQL 데이터베이스. 우리는 이것을 완전히 통제합니다.
우리는 우리의 초기 계획은 웹 응용 프로그램에 의해 소비되는 내부 서버에 앉아 편안한 API를 만드는 것이었다

심포니 2를 사용하여 웹 서버에서 실행하기 위해 새로운 웹 응용 프로그램을 개발하는

. 우리가 직면 한 주요 문제는 웹 앱의 속도가 Postgres DB의 속도에 의해 제약된다는 것입니다. 이는 사용자가 받아 들일 수없는 것입니다.

누구나이 속도 문제를 해결하기위한 전략을 알고 있습니까?

캐싱은 확실한 솔루션이며 데이터가 얼마나 최신이어야하는지에 대한 논의는 확실히 할 수 있지만 특정 상황에서는 절대적으로 분당해야합니다. 예를 들어 사용자가 일부 변경 사항을 저장하면 즉시 변경 내용이 나타납니다. 우리는 API가 Postgres와 비동기 적으로 업데이트되는 자체 데이터 저장소를 가지고 있다고 생각했습니다. 그런 다음이 빠른 저장소에서 모든 읽기를 수행하여 해당 저장소와 Postgres 모두에 쓰기 작업을 수행 할 수 있습니다. 물론 걱정은 데이터의 일관성과 시스템의 복잡성 증가입니다.

우리는 JSON-LD를 사용하여 우리가 작업하고있는 것에 적합하고 상대적으로 어린 것이기는하지만 중요한 아키텍처 변경을 완화해야하는 데이터를 나타낼 수 있습니다. 잘 일어난다. 그것은 문서 저장소에 직접 배치 될 수 있기 때문에 잠재적으로 프로세스를 단순화합니다. 여기

우리의 주요 목표는 다음과 같습니다

  • 사용자에게 좋은 경험을 제공합니다.
  • 이해하기 쉽고 관리하기 쉬운 시스템을 만드십시오.

모든 권장 사항이나 제안 사항을 환영합니다.

답변

1

를 업데이트 할 때 내가 물어 주요 질문은 생각 : 이유 Postgres DB가 너무 느립니다? 또한 귀하의 설명을 통해 모든 시스템이 무엇을하고 있으며 의존성/요구 사항이 무엇인지 명확하지 않습니다. 예를 들어 PostgresDB의 데이터를 최신 상태로 유지해야합니까? 저게 주요 DB입니까? 모 놀리 식 오프라인 시스템을위한 통합 DB입니까?

느린 Postgres DB를 변경할 수 없다면 분당 최신이어야하며 웹 사이트가 이에 의존하고 분당 최대 (일부 경우) 여야합니다. 문제가 있습니다. 그럴 수 없기 때문입니다. Postgres DB가 오프라인 응용 프로그램에서만 사용되기 때문에 분당 최대 작업이 필요하지 않은 경우 DB를 비동기 적으로 업데이트하고 MySQL DB를 필요한 성능을 제공하는 방식으로 사용할 수 있습니다.

JSON-LD를 사용할 계획이라면, 구축하고있는 시스템에 대해 더 많이 듣고 싶습니다. 좀 더 많은 정보를 공유 할 수 있습니까?

+0

감사합니다. 잠시 나마 일을하는 것이 정확히 문제입니다. 우리는 유스 케이스에 대해 설명 할 수있는 전략을 찾아 냈다고 생각합니다. MySQL DB를 비동기 적으로 업데이트하여 Postgres에서 변경 사항을 가져 오지 만 반드시 그렇지는 않습니다. 그러면 MySQL DB와 Postgres 모두에 API를 작성하여 변경 사항을 즉시 적용 할 수 있습니다. 우리 JSON-LD 사용에 관해 다른 곳에서 더 많이 이야기 할 수 있습니다 :-) –

1

흠, 잠재적으로 couchdb를 사용할 수 있습니다. 소파의 전제는 궁극적으로 일관성이 있지만 작업해야하는 데이터의 로컬 복사본이 있고 즉시 응용 프로그램으로 돌아가서 가능한 한 빨리 중앙 저장소를 업데이트한다는 것입니다.

또한 RESTful 한 상태입니다. 당신이 다리를 쥘 필요가있는 유일한 것은 postgres - couchdb 연결입니다.

+0

감사합니다. Gabor, CouchDB에 대해 조금 읽으겠습니다. –

0

예를 들어 사용자가 일부 변경 사항을 저장하면 이러한 변경 사항이 즉시 나타납니다.

또한 캐싱, 그래서 사용자가 일부 데이터, 캐시 (이 지금 오래된 데이터 포함) 만료 (Etag입니다 또는 수동으로 제거하거나 캐시)

관련 문제