쓰기 손실, 데이터 가용성과 같은 요인에 대비하여 기본 데이터 저장소로서 ElasticSearch의 안정성
사용자가 다양한 종류의 그룹화, 필터링 및 드릴 다운을 수행 할 수있는 일반 대시 보드를 작성해야하는 프로젝트를 진행 중입니다. 이를 위해 우리는 데이터 조각과 주사위를 허용하는 검색 저장소를 찾고 있습니다.
여러 데이터 소스가 있으며 검색 저장소에 저장합니다. 중간 구성 요소에서 수행 할 수있는 소스 데이터에 대해 몇 가지 사전 계산이 필요할 수 있습니다.
ES를 기본 데이터 저장소로도 안정적으로 사용할 수 있는지 이해하기 위해 여러 블로그를 살펴 보았습니다. 대부분 우리가 찾고있는 사용 사례에 따라 다릅니다. 사용 사례에 대한 정보 중 일부는 다음과 같습니다.
- 1 ~ 2KB로 매년 약 3 억 건의 기록.
- 1 년 데이터를 저장한다고 가정하면 현재는 300GB이지만 사용 사례는 데이터 증가에 따라 최대 400 ~ 500GB까지 늘어날 수 있습니다.
- 현재로서는 데이터를 어떻게 푸시할지 확실하지 않지만 대략 5 분당 최대 2 ~ 3 백만 개의 레코드가 될 수 있습니다.
- 검색 요청은 적지 만 지난 6 주에서 6 개월 동안 데이터를 검색 할 수있는 복잡한 쿼리가 필요합니다.
- 문서는 문서의 거의 모든 필드에서 색인화됩니다.
일부 블로그에서는 기본 데이터 저장소로 사용하기에 충분히 신뢰할 수 있다고 말합니다.
- http://chrisberkhout.com/blog/elasticsearch-as-a-primary-data-store/
- http://highscalability.com/blog/2014/1/6/how-hipchat-stores-and-indexes-billions-of-messages-using-el.html
- https://karussell.wordpress.com/2011/07/13/jetslide-uses-elasticsearch-as-database/
일부 블로그에서는 ES에 제한이 거의 없다고 말합니다.
- https://www.found.no/foundation/elasticsearch-as-nosql/
- https://www.found.no/foundation/crash-elasticsearch/
- http://www.quora.com/Why-should-I-NOT-use-ElasticSearch-as-my-primary-datastore
PostgreSQL, DynamoDB 또는 RDS와 같은 기본 스토리지없이 Elastic Search를 데이터의 유일한 진실로 사용한 적이 있습니까? ES에는 데이터 손실에 문제가있을 수있는 스플릿 브레인 및 인덱스 손상과 같은 특정 문제가 있음을 확인했습니다. 그래서 누군가 ES를 사용하고 데이터에 문제가 있는지 알고 싶습니다.
감사.
짧은 대답 : 사용 사례에 따라 다르지만 기본 저장소로 사용하고 싶지는 않을 것입니다.
더 긴 답변 : 복원력 및 데이터 손실과 관련하여 발생할 수있는 모든 가능한 문제를 실제로 이해해야합니다. Elastic에는 기본 데이터 저장소로 사용하기 전에 실제로 이해해야하는 이러한 문제에 대한 훌륭한 문서가 있습니다. 또한 주제에 대한 Aphyr의 게시물 은 좋은 리소스입니다.
당신이 취하고있는 위험을 이해하고 그러한 위험이 수용 가능하다고 생각한다면 (예를 들어, 작은 데이터 손실은 당신의 애플리케이션에 문제가되지 않기 때문에), 당신은 자유롭게 계속해서 시도해야합니다.
일반적으로 중복 데이터 저장소 솔루션을 설계하는 것이 좋습니다. 예를 들어 먼저 모든 것을 플랫 데이터로 s3와 같은 정적 스토리지에 푸시 한 다음 거기에서 ES 풀 및 인덱스 데이터를 사용하는 것이 빠르고 안정적인 접근 방식 일 수 있습니다. 일부 ORM을 활용하는 더 많은 유연성이 필요한 경우 그 사이에 RDS 또는 Redshift 계층이있을 수 있습니다. 이렇게하면 ES에서 데이터를 항상 다시 작성할 수 있습니다.
중복성과 유연성 / 성능 간의 균형을 설정하는 방법은 사용자의 요구와 요구 사항에 따라 다릅니다. 관련 데이터가 많은 경우 원시 데이터를 정적으로 저장하고 ES로 일부를 인덱싱 할 수 있습니다.
Amazon Lambda 는 다음과 같은 훌륭한 기능을 제공합니다.
많은 개발자는 Amazon DynamoDB를 사용하여 객체 메타 데이터를 저장 및 인덱싱하고 고속 검색을 활성화하는 동안 Amazon S3에 객체를 저장합니다. AWS Lambda를 사용하면 Amazon S3에서 객체가 추가되거나 업데이트 될 때마다 Amazon DynamoDB의 인덱스를 자동으로 업데이트하는 함수를 실행하여 모든 것을 쉽게 동기화 할 수 있습니다.
'program story' 카테고리의 다른 글
Java에서 숫자를 거듭 제곱하기 (0) | 2020.12.03 |
---|---|
fgetcsv가 mac 형식의 csv 파일로 끝나는 줄을 읽지 못합니다. 더 나은 솔루션이 있습니까? (0) | 2020.12.02 |
추적 참조 란 무엇입니까? (0) | 2020.12.02 |
파이썬 : self .__ class__ vs. type (self) (0) | 2020.12.02 |
C # 용 CSS 파서가 있습니까? (0) | 2020.12.02 |