2011-09-02 2 views
1

거의 모든 비즈니스 응용 프로그램에서 데이터를 저장하고 해당 트랜잭션을 완료하려면 데이터베이스가 필요합니다. 트랜잭션은 일반적으로 밀리 초 단위의 시간이 걸립니다. 동시에 거래 응용 프로그램에서 받아 들일 수없는 한 가지는 "대기 시간"입니다. 그렇다면 지연에 대한 상한선을 필요로하는 그러한 어플리케이션에서 절충안은 무엇입니까?거래 응용 프로그램 거래 : 데이터베이스 및 대기 시간이 낮음

예를 들어 거래가 고객에 의해 수행 된 경우 데이터베이스에 저장된 몇 개의 수표를 통과해야하며 DB 가져 오기가 필요합니다. 그런 다음 거래는 OMS/ORS 또는 거래소로 전달되어야합니다. 그리고 각 계층에서 일종의 트랜잭션 데이터를 데이터베이스에 저장해야합니다. 트랜잭션 지속성과 낮은 대기 시간 사이의 균형을 어떻게 유지해야합니까?

답변

2

두 가지 :

  • 캐시 : 캐시 응용 프로그램의 규칙, 당신은 모든 거래에 대한 데이터베이스를 칠 필요가 없습니다
  • 스레딩 다음에 트랜잭션 데이터를 저장하는 코드를 넣어 데이터베이스를 다른 스레드에 추가하십시오. 이처럼 거래를 교환기로 즉시 라우팅 할 수 있고 데이터베이스의 데이터를 병렬로 안전하게 저장할 수 있습니다.
+0

이들은 매우 좋은 아이디어입니다. 그러나 캐싱을위한 스키마를 구현하는 방법에 대한 지침이 있습니까? – Lazylabs

+2

이것은 데이터베이스에 액세스하는 방법과 아키텍처 전반에 크게 의존합니다. –

0

사람들이 메모리 내 트랜잭션 시스템을 사용하기 때문에 데이터베이스에서 얻는 네트워크 대기 시간을 줄입니다. 여기

는 낮은 대기 시간을 위해 고려할 수있는 몇 가지 있습니다

  • 당신이 자바 GC를 제어 할 필요가 자바에서 낮은 지연 시간을 달성하기 위해, 객체를 미리 할당 등을 위해 그렇게하는 방법에는 여러 가지가 있습니다 (즉, 플라이 웨이트 디자인 패턴을 사용하여), 원시 개체를 사용하십시오 - 수집은 매우 유용합니다. 모든 데이터 구조는 원시 객체를 기반으로합니다. 예를 들어, 시스템 전체 사전을 생성하여 새로운 객체를 생성하는 것을 줄이고, 스트림에서 데이터를 읽을 때 매우 좋은 옵션입니다./소켓/db

- 경쟁 사용을 줄이기 위해 시도 algo (whi ch는 약간 어렵다), lock free algo. 당신은 그것에 대한 많은 예제를 찾을 수 있습니다.

- 메모리 내 컴퓨팅을 사용하십시오. 메모리가 저렴합니다. 메모리에 테라 바이트의 데이터를 저장할 수 있습니다.

- 기계적 교감 사용 - 우수 프레임 워크 lmax disruptor 참조