2012-06-30 3 views
0

32 개의 서버에서 실행되는 대형 데이터베이스 응용 프로그램을 다시 작성해야합니다. 하드웨어는 최신이며, 각 시스템에는 두 개의 쿼드 코어 Xeon과 32GB RAM이 있습니다.대형 웹 응용 프로그램을 위해 어떤 데이터베이스 전략을 선택해야합니까?

데이터베이스는 멀티 테넌트 (multi-tenant)이며 각 고객은 각각 5 ~ 10GByte 정도의 파일을 가지고 있습니다. 이 하드웨어에서 약 50 개의 데이터베이스를 실행합니다. 응용 프로그램은 웹에 열려 있으므로 컨트롤에 이 없습니다. 정말 복잡한 쿼리가 없으므로 더 나은 솔루션이 있으면 SQL이 필요하지 않습니다.

데이터베이스는 매일 자정에 FTP를 통해 업데이트됩니다. 데이터베이스는 읽기 전용입니다. C#이 내가 가장 좋아하는 언어이고 ASP.NET MVC를 사용하고 싶습니다.

나는 다음과 같은 옵션에 대해 생각 : SQL 서버 2012를 실행

  • 를 사용하여 두 개의 큰 SQL 서버 데이터로 (32 개) 서버를 제공 할 수 있습니다. REST 서비스를 제공하는 IIS 호스팅을 실행하는 32 대의 서버에서.

  • 데이터베이스를 비정규 화하고 각 웹 서버에서 Redis를 사용하십시오. booksleeve를 Redis 클라이언트로 사용하십시오.

  • SQL 서버없이 하둡

  • 사용 하둡과

  • 를 사용하여 SQL 서버 2012 함께 SQL Server 및 레디 스의 조합을 사용하여 읽기위한 가장 좋은 방법은 무엇

- 유일한 데이터베이스, 유지 관리를 잃지 않고 최고의 성능을 얻을 수 있습니까? 이러한 시나리오에서 Map-Reduce는 전혀 의미가 있습니까?

다시 작성하는 이유는 ISAM 기술로 C++로 작성된 오래된 앱이 너무 느리고 인터페이스가 구식이며 웹 사이트에서 특히 ajax를 사용할 때 좋지 않습니다.

이 앱은 많은 테이블이있는 관계형 데이터 모델을 사용하지만 모든 쿼리를 수행 할 수있는 하나의 액셀러레이터 테이블을 작성할 수 있으며 간단한 키 조회로 다른 테이블의 다른 모든 정보를 작성할 수 있습니다.

+1

현재 아키텍처, 현재 사용 패턴, 현재 병목 현상 ... 또는이 "대형 데이터베이스 응용 프로그램"을 처음부터 다시 작성해야하는 이유에 대해 유용한 정보를 알려주지 않았습니다. 한 가지 질문을 해봅시다. 사용자가 현재 저장하거나 사용하고있는 SQL Server와 마찬가지로 쉽게 Hadoop을 사용하여 수행 할 수없는 것이 있습니까? 테이블이 없거나, 관계가없고, SQL 쿼리가 없습니까? – paulsm4

+0

죄송합니다. 나는이 질문을 최대한 일반화하려고 노력했습니다 :-) – NickD

답변

1

몇 가지 질문이 있습니다. 이 문제를 다시 작성하는 데 어떤 문제가 발생 했습니까? 쿼리 패턴은 어떻게 생겼습니까? SQLServer + 캐싱 (memcached)을 사용하면이 문제를 해결할 수있는 모든 문제를 해결할 수 있습니다. Redis는 좋지만 DB 처리 쿼리에서 데이터 구조 기능이 필요하지 않으며 캐시로만 사용되는 경우 지속성이 필요하지 않습니다. 문제에 대해 더 많이 알지 못한다면 MongoDB를 통해 데이터 공유, 중복 스토리지 및 캐싱을 하나의 솔루션으로 처리 할 수있을 것입니다. 이 설정에는 특별한 장비가 없으며 중복성을 구성 할 수 있으며 부하가 잘 균형을 이루어야합니다.

1

이 질문은 거의 의견입니다. 성능이 가장 중요하고 동시 읽기의 양이 많은 경우 캐싱을 위해 Oracle RAC를 개인적으로 선호합니다.

여기에 백서가 있습니다.

http://www.oracle.com/us/products/middleware/timesten-in-memory-db-504865.pdf

물리적 디스크 인덱스와 데이터 파일의 디스크 하위 시스템과 조직의 사양은 아마하지만 가장 중요한 요소입니다.

관련 문제