2010-07-08 1 views
1

일반적인 전자 상거래 관련 테이블 (Order, OrderItem, ShoppingCart, CreditCard, Payment, Customer, Address ... 등)으로 구성된 관계형 데이터베이스를 지원하는 웹 사이트를 운영합니다.더 나은 DB 성능 달성

저장된 프로 시저 주문 내역을 반환하는 데이터의 양은 발생해야하는 수많은 조인과 데이터 양 때문에 고통스럽게 느려지 며 검색 매개 변수에 따라 때로는 시간이 초과됩니다 (인덱싱이 제자리에 있음에도 불구하고).

DB 스키마는 정규화가 잘되어 있으며 데이터웨어 하우스와 같은 방향으로 이동하여 성능을 향상시킬 수 있다고 생각합니다. DW 프로젝트는 사소한 것이 아니며 데이터를 동기화 상태로 유지하는 문제가 있으므로 누구나 지름길을 알고 있는지 궁금합니다. 아마도 DW 스키마를 만들고 데이터를 동기화 상태로 유지할 수있는 out-of-the-box 솔루션 일 것입니다. 나는 Lucene에 대해 들어 봤지만 텍스트 검색과 문서 관리에 초점을 맞춘 것으로 보인다. 누구든지 다른 제안이 있습니까?

+0

데이터베이스? 번역? –

+0

SQL Server 2008 – Keith

답변

0

Materialized Views는 Oracle에서 사용할 수있는 뷰입니다. 이 기능을 사용하면 찾고있는 데이터를 "동기화 상태로 유지"할 수 있으며 집계 데이터에 빠르게 액세스 할 수 있습니다. 플랫폼의 세부 사항 (플랫폼, 서버 사양, 행 수, 초당 히트 수 등)은 언급하지 않았으므로 그 이상은별로 도움이되지 않습니다.

물론 모든 SQL이 적절하고 최적으로 작성되었는지, 색인 생성이 올바른지, 앱의 모든 수준에서 캐싱을 제대로 사용하고 있는지, DB 서버가 충분히 갖고 있는지, RAM, 빠른 하드 드라이브 등

또한 가장 일반적인 쿼리를 빠르게 처리 할만큼 스키마를 비정규 화하는 것으로 생각 해 봤습니까? 어쨌든 원하는 데이터가 아닐 수도있는 전체 데이터웨어 하우스를 구현하는 것보다 낫습니다. 일반적으로 데이터웨어 하우스는보고 용도로 사용되며 대화 형 응용 프로그램에는 제공되지 않습니다.

+0

감사합니다. 쿼리가 분석되었으며 적절한 인덱스가 추가되었습니다. 불행히도 스키마를 변경할 수 없기 때문에 일부 비정규 화 된 읽기 전용 구조에 "복제"하는 데 관심이 있습니다. – Keith

+0

SQL Server 2008은 구체화 된보기를 지원합니다. 그들은 그것들을 추가하는 것이 "스키마를 변경하는 것"으로 간주하지 않는다고 가정 할 때 가치있는 것일 것입니다. 그것들은 복제 된 DB에 대한 "지름길"과 가장 가까운 것이라고 생각합니다. –

+0

엄청난 도움을 준 인덱스 뷰 (WITH SCHEMABINDING) a.k.a. "materialized view"를 만들었습니다. 또한 조인이 필요하지 않도록 SP를 조정했습니다. – Keith

1

데이터베이스의 크기는 어느 정도입니까?

바로 가기가 없지만 차원 모델링은 그리 어렵지 않습니다. 먼저 곡물을 결정한 다음 사실과 해당 사실과 관련된 차원을 식별해야합니다. 그런 다음 차원을 테이블로 나눕니다.이 테이블을 사용하면 시간이 지남에 따라 차원이 서서히 커질 수 있습니다. 차원의 선택은 완전히 실용적이며 데이터 동작을 기반으로합니다.

Kimball의 책을 살펴 보는 것이 좋습니다.

몇 GB의 데이터베이스의 경우 하루에 여러 번보고 데이터베이스를 업데이트 할 수 있습니다 (동일한 데이터의 다른 모델에 대해 3NF에서 다시 채우기 만하는 기록 없음). 하루 동안 지속적으로 변경 사항을 적용하는 특정 실시간 데이터웨어 하우징 기술이 있습니다.

따라서 DW 프로젝트가 간단하지는 않지만 비정규 화 기술은 완전한 시간 불변의 데이터웨어 하우스를 구축하지 않아도 매우 친숙하고 유용합니다.