본문 바로가기
개발/ALGOLIA

알고리아 Sending And Managing Data(2-15)

by dev_caleb 2022. 3. 1.
728x90

Index Operations Are Asynchronous(인덱스 작업이 비동기식이다)

https://www.algolia.com/doc/guides/sending-and-managing-data/send-and-update-your-data/in-depth/index-operations-are-asynchronous/

 

Index operations are asynchronous | Algolia

Understand that all indexing operations are asynchronous and learn how to wait for a task to finish.

www.algolia.com

 

All indexing operations are asynchronous. When calling indexing methods or endpoints, you’re adding a new job to a queue: it’s this job, and not the API method, that performs the desired action.

A job usually finishes within seconds, if not milliseconds. Yet, it all depends on what’s in the queue. When the queue has many pending tasks, the new job needs to wait its turn.

모든 인덱싱 작업은 비동기식입니다. 인덱싱 메서드 또는 엔드포인트를 호출할 때 큐에 새 작업을 추가하는 것입니다. 원하는 작업을 수행하는 것은 API 메서드가 아닌 이 작업입니다.
작업은 일반적으로 밀리초가 아니라 초 내에 완료됩니다. 하지만, 모든 것은 대기열에 무엇이 있느냐에 달려 있습니다. 대기열에 보류 중인 태스크가 많으면 새 작업의 순서를 기다려야 합니다.

When to wait for tasks

To help manage asynchronous jobs, each method returns a unique taskId which you can use with the waitTask method. Using this method guarantees that a job has finished before proceeding with a new request. There are a few situations when this comes in handy:

비동기 작업을 쉽게 관리할 수 있도록 각 메서드는 waitTask 메서드와 함께 사용할 수 있는 고유한 taskId를 반환합니다. 이 방법을 사용하면 새 요청을 진행하기 전에 작업이 완료됩니다. 이 방법이 유용한 몇 가지 상황이 있습니다.

  • Managing dependencies: you want to use waitTask to manage dependencies, for example, when deleting an index before creating a new index with the same name or clearing an index before adding new objects.
  • Atomic reindexing: atomic reindexing is a way to update all your records without any downtime, by populating a temporary index and replacing the destination index with it. You don’t need to implement this by yourself. Instead, you can use the replaceAllObjectsmethod which does it all for you.
  • Front-end events: if you’re building a front-end interface that performs indexing operations, you may want to react to completed tasks. For example, you may want to display a success message when an indexing operation has completed, or refresh a page, or move on with some following, co-dependant operations, etc.
  • Debugging: You also most often need waitTask in debugging scenarios, when you’re testing a search immediately after updating an index.

-종속성 관리: waitTask를 사용하여 종속성을 관리할 수 있습니다. 예를 들어, 동일한 이름으로 새 인덱스를 작성하기 전에 인덱스를 삭제하거나 새 개체를 추가하기 전에 인덱스를 지우는 경우가 있습니다.
-원자성 재색인: 원자성 재색인은 임시 인덱스를 채우고 대상 인덱스를 대체하여 중단 시간 없이 모든 레코드를 업데이트하는 방법입니다. 당신이 이것을 직접 구현할 필요는 없습니다. 대신 모든 작업을 수행하는 replaceAllObjectsmethod를 사용할 수 있습니다.
-프런트 엔드 이벤트: 인덱싱 작업을 수행하는 프런트 엔드 인터페이스를 구축하는 경우 완료된 작업에 대응해야 할 수 있습니다. 예를 들어 인덱싱 작업이 완료되면 성공 메시지를 표시하거나 페이지를 새로 고치거나 일부 공동 종속 작업 등으로 이동할 수 있습니다.
-디버깅: 또한 인덱스를 업데이트한 후 즉시 검색을 테스트할 때 디버깅 시나리오에서 waitTask가 가장 자주 필요합니다.

 

When not to wait for tasks

In most scenarios, you don’t need to wait for tasks to complete before moving on with new ones. Using waitTask makes your indexing operations synchronous, thus slows them down.

Conversely, you don’t need to use waitTask in place of the asynchronous mechanisms of your programming language. You can ensure that tasks are queued in order by using promises or callbacks.

 

작업을 기다리지 않는 경우

대부분의 시나리오에서는 작업이 완료될 때까지 기다리지 않아도 새 작업을 진행할 수 있습니다. waitTask를 사용하면 인덱싱 작업이 동기화되어 속도가 느려집니다.
반대로 프로그래밍 언어의 비동기 메커니즘 대신 waitTask를 사용할 필요는 없습니다. 약속 또는 콜백을 사용하여 태스크가 순서대로 대기열에 놓이도록 할 수 있습니다.

 

728x90