문제

SQLServer를 사용하여 WPF 애플리케이션을 구동하고 있으며 현재 NHibernate를 사용하고 있으며 모든 데이터를 미리 읽어 성능의 이유로 캐시되었습니다. 이는 단일 클라이언트 앱에서 작동하지만 사용할 수있는 메모리 데이터베이스가 있는지 궁금해서 동일한 컴퓨터의 여러 앱에서 정보를 공유 할 수 있습니다. 이상적으로 이것은 내 nhibernate 스택 아래에 앉아 코드가 변경 될 필요가 없습니다. 효과적으로 저는 DB를 서버의 기존 형식에서 클라이언트의 메모리 DB로 이동하려고합니다.

참고 선택 기능 만 있으면됩니다.

도움이 되었습니까?

해결책

http://www.db4o.com/ 당신의 친구가 될 수 있습니다!

다른 팁

모든 정보를 메모리에로드해야한다면 놀랍게도 놀랄 것입니다. 한 예처럼, 나는 현재 여러 가지 이유로 많은 페이지에 수천 개의 레코드를로드하는 웹 앱을 작업하고 있기 때문에 이것을 말합니다. 이것은 php + mysql입니다. 그리고 그럼에도 불구하고 그것을 할 수 있고 페이지를 100ms 미만으로 렌더링 할 수 있습니다.

이 경로를 내려 가기 전에해야합니다. 먼저 데이터베이스를 가능한 한 성능으로 만드십시오. 분명히 여기에는 적절한 색인이 있고 데이터베이스를 조정하는 것과 같은 것이 포함되지만 말을 카트 앞에 두는 것입니다.

우선, 당신은 좋은 관계형 데이터 모델이 있는지 확인해야합니다. 이것은 과학만큼 많은 예술입니다.

또한, 당신은 nhibernate를 좋아할 수도 있지만 Orm이 항상 최선의 선택은 아닙니다. 예를 들어, 손으로 코딩 된 SQL이 크게 우수하다는 코너 케이스가 있습니다.

이제 좋은 데이터 모델이 있고 인덱스 및 데이터베이스 매개 변수를 최적화 한 다음 NHibernate를 올바르게 구성한 다음 메모리에 데이터 저장을 고려해야한다고 가정하면 성능이 여전히 문제 인 경우에만.

이것을 관점에두기 위해, 내가해야 할 일이 필요한 유일한 시간은 하루에 수백만 건의 트랜잭션을 수행 해야하는 시스템에 관한 것입니다.

메모리 내 캐싱을 피하는 한 가지 이유는 많은 복잡성을 추가하기 때문입니다. 캐시 만료, 기본 데이터 저장소에 대한 독립적 인 업데이트, 동기 또는 비동기 업데이트를 사용하든 클라이언트에게 데이터에 대한 일관성있는 (최신)보기, 거래 방법을 제공하는 방법과 같은 문제를 처리해야합니다. 장애 조치 및 복제 등. 지불해야 할 엄청난 복잡성 비용이 있습니다.

위의 모든 작업을 수행했지만 여전히 필요하다고 가정하면 필요한 것이 캐시 또는 그리드 솔루션 인 것처럼 들립니다. 여기에 있습니다 Java 그리드/클러스터 솔루션의 개요 그러나 그들 중 다수 (예 : 일관성, memcached)는 .NET에도 적용됩니다. .NET에 대한 또 다른 선택입니다 속도.

Nhibernate와 같은 것이 데이터베이스를 외부에서 업데이트하지 않고 정확히 하나의 nhibernate 지원 프로세스 (클러스터 솔루션을 제외하고)가있는 한 일관성이 있다고 지적하고 강조해야합니다. 두 개의 다른 PC의 두 개의 데스크탑 앱이 Nhibernate로 동일한 데이터베이스를 업데이트하는 경우 캐싱은 단순히 다른 변경 사항이 변경되는 변경 사항을 알지 못하기 때문에 캐싱이 작동하지 않습니다.

속도 Microsoft가 현재 CTP 양식으로 만 원하는 것을 수행하기 위해 Microsoft가 설계 한 프로세스 외 객체 캐싱 서버입니다.

멤버를위한 포장지도 있다고 생각하며, 이는 객체를 캐시하는 데 사용될 수 있습니다.

Hana, Express Edition을 사용할 수 있습니다. 당신은 할 수 있습니다 무료로 다운로드하십시오, 그것은 메모리, 원주이며 텍스트 분석, 지리 공간 또는 예측과 같은 추가 분석 기능을 제공합니다. ODBC, JDBC, Node.js HDB 라이브러리, REST API를 사용하여 액세스 할 수도 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top