2017-10-18 5 views
1

현재 Google Orleans에 대해 배우고 있습니다. 모든 DB 업데이트가 곡물을 통해 오가는 한 Orleans Grains는 DB와 동기화 된 상태로 유지된다는 것을 알고 있습니다.Orleans - 대량 데이터 가져 오기

그러나 DB의 레코드를 업데이트/삽입/삭제하는 대량 프로세스 프로세스 (예 : 데이터 파일 처리)가 있으면 어떻게됩니까?

이 문제를 해결하기 위해 오를레앙에서 사용할 수있는 프로세스 나 패턴이 있습니까? 또는 곡물을 통해 모든 대량 프로세스를 처리해야합니까? 벌크 작업을 곡물을 통해 처리하는 경우 각 곡물을 업데이트하여 처리합니다 (각 곡물이 DB로 업데이트되는 경우 비용이 많이 드는 것처럼 보입니다). 또는 영향을받은 모든 곡물을 강제로 새로 고치기 위해 사용할 일괄 패턴이 있습니까?

응답이 분명 할 수 있습니다. 이 시나리오에 관한 문서에서 아무것도 찾지 못했습니다.

우리는 Orleans를 MS-SQL 서버가있는 구내 설치로 사용합니다.

편집 :

N 곡물 데이터를 업데이트하는 프로세스를 말합니다. 하나의 레코드를 업데이트하는 단일 호출을 갖는 것이 SQL의 경우 훨씬 더 좋으며 한 번의 레코드를 업데이트하는 1000 번의 호출이 있습니다. 구체적인 예는 주식 업데이트입니다. 각 제품 재고는 곡물입니다. 15 분마다, 파일은 응용 프로그램 외부에서 발생한 재고 수량 변경에 대해 알리는 제 3 자로부터 도착합니다. 이것은 db에서 업데이트되고 곡물에 반영되어야합니다. 파일에 10k의 레코드가있을 수 있습니다 ...

+0

데이터 액세스를 제어하기 위해 곡물을 사용하는 것이 훨씬 낫습니다. – BozoJoe

+0

답변 해 주셔서 감사합니다. 곡물을 사용하여 이것을 수행하는 패턴이 있습니까? N 곡물의 데이터를 업데이트하는 프로세스를 말하고 있습니다. 하나의 레코드를 업데이트하는 단일 호출을 갖는 것이 SQL의 경우 훨씬 더 좋으며 한 번의 레코드를 업데이트하는 1000 번의 호출이 있습니다. 구체적인 예는 주식 업데이트입니다. 각 제품 재고는 곡물입니다. 15 분마다, 파일은 응용 프로그램 외부에서 발생한 재고 수량 변경에 대해 알리는 제 3 자로부터 도착합니다. 이것은 db에서 업데이트되고 곡물에 반영되어야합니다. 파일에 10k의 레코드가있을 수 있습니다 ... – user2995891

+0

질문에 의견을 추가해야합니다. 배우 모델을 사용할 필요가 있습니까? 제품 스톡은 배우 모델이 말하는 일괄 업데이트 작업보다 더 적합한 독립적 인 기능을 가지고 있습니까? – BozoJoe

답변

2

두 가지 옵션이 있습니다.

1) 곡물을 통해 업로드 - 곡물은 데이터를 캐시하고 DB에도 저장합니다. 이것은 부분적으로 효율적인 DB 업로드의 목표를 무효화하므로 원하는 결과가 아닐 수도 있습니다.

2) DB에 직접 대량 업로드하지만 곡물을 사용하여 데이터에 액세스하고 데이터를 처리/제공합니다. 곡물은 첫 번째 요청시 DB에서 데이터를 읽고 캐싱하며 추가 요청을 처리합니다. 또한 앞으로의 모든 데이터 업데이트는 곡물을 통해 진행됩니다. 이것은 일반적으로 가장 일반적인 패턴입니다.

3) 정기적 인 데이터 처리가 필요한 경우에도 검색 요청이없는 경우에도 곡물을 대량 업로드 한 후에 곡물을 "대량 킥 (bulk-kick)"하여 정기적 인 처리를 시작할 수 있습니다. 이 옵션에서는 하나의 곡물에 "Init"을 하나씩 호출하는 컨트롤러 루프 (예 : 클라이언트 로직)를 작성합니다 (그러나 병렬로 : X (X ~ 100)의 Init를 병렬로 호출하여 기다립니다). 모두 함께) 다음 일괄 처리를하십시오. 곡물은 초기화시 타이머 또는 알림을 시작합니다.

+0

자세한 답변을 보내 주셔서 감사합니다! 매우 감사 – user2995891

관련 문제