programing

에어로스피크와 함께 일한 사람이 있습니까?MongoDB와 비교하면 어떻습니까?

bestprogram 2023. 5. 27. 12:05

에어로스피크와 함께 일한 사람이 있습니까?MongoDB와 비교하면 어떻습니까?

에어로스피크가 그들이 주장하는 것만큼 좋은지 누가 말할 수 있습니까?상업적인 사업이기 때문에 저는 좀 회의적입니다.제가 알기로는 그들은 방금 오픈 소스 버전을 출시했지만, 그들의 웹사이트에 대한 주장은 여전히 과장될 수 있습니다.

저는 특히 에어로스픽이 MongoDB와 어떻게 비교되는지 궁금합니다.

저는 Aerospike, MongoDB, Redis를 사용했으며 다른 많은 NoSQL 데이터베이스를 테스트했습니다.에어로스피케는 그것이 하는 일에 매우 뛰어나다고 말하고 싶지만, 그것은 MongoDB와는 다릅니다.모든 것은 데이터베이스를 사용하려는 목적에 따라 달라집니다.다양한 데이터베이스를 사용하는 이유를 예로 들 수 있습니다.저는 또한 그들 사이의 차이점을 검토하고 에어로스피케의 이점에 대해 논의할 수 있습니다.

몽고DB

SQL 대안으로 MongoDB를 사용하고 있습니다.내 MongoDB 데이터베이스에는 많은 다양한 필드가 있습니다.종종 필드가 변경되므로 다양한 필드에 대해 임의로 쿼리해야 합니다.그것은 매우 비정형적인 데이터베이스이며 MongoDB는 그 점에서 놀랍습니다.저는 또한 MongoDB를 표준 키 값 저장소로 사용했습니다.성능은 좋지만 트랜잭션 규모와 데이터베이스 크기 모두에서 MongoDB가 차선으로 수행하도록 했습니다.물론 데이터베이스가 조금 더 잘 최적화되었을 수도 있지만 다른 상황에서 MongoDB를 올바르게 구성하는 것에 대한 문서를 찾기가 매우 어렵습니다.

레디스

Redis는 순수한 키 값 저장소입니다.Redis의 가장 큰 문제는 순전히 메모리 내에 있다는 것입니다(디스크를 백업으로 사용하지만 사용 가능한 메모리보다 더 많은 정보를 저장할 수 없습니다).그것은 그것이 사용되는 것에 대해 매우 빠릅니다.개인적으로 소규모 트랜잭션 데이터베이스에 사용합니다.저는 특정 사용자에 대해 이벤트가 발생한 횟수를 세는 것과 같이 키에 대해 매우 간단한 기능을 수행합니다.다른 값으로 매핑해야 하는 빠른 메모리 검색도 수행합니다.Redis는 소규모 데이터 세트를 위한 훌륭한 도구이며 매우 빠릅니다.구성도 매우 쉽습니다.

에어로스피크

저는 개인적으로 확장이 필요할 때 Redis를 대체하기 위해 Airospike를 사용합니다.제가 알기로는 더 많이 사용할 수 있는 것으로 알고 있습니다.레디스와 마찬가지로 에어로스피케는 핵심 가치 매장입니다.저는 오픈 소스 에디션이 Redis가 지원하지 않는 보조 인덱스도 지원한다고 생각합니다(저는 프로덕션에서 보조 인덱스를 사용하지 않았지만 테스트는 거의 하지 않았습니다).

에어로스피크의 가장 큰 특징은 확장성입니다.Aerospike를 조사할 때 해결해야 했던 가장 큰 문제는 매우 빠른 속도를 유지하면서 대용량 데이터 세트를 처리하도록 시스템을 확장하는 것이었습니다.제가 에어로스픽을 사용하는 프로젝트는 속도에 대한 요구사항이 매우 엄격합니다.저는 보통 3-4개의 데이터베이스 검색과 기타 처리를 수행하며 트랜잭션 시간이 50ms 미만이어야 합니다.300GB 이상의 데이터 세트에 대한 몇 가지 조회가 있습니다.저는 이 데이터를 보관하고 합리적인 시간 내에 액세스할 수 있는 솔루션을 찾을 수 없었습니다.300GB 이상의 RAM이 있는 기계가 없으면 Redis는 작동하지 않을 것입니다.MongoDB는 300GB보다 훨씬 낮은 크기에서 매우 낮은 성능을 발휘하기 시작했습니다.그래서 제가 에어로스픽에 주사를 놓았는데, 에어로스픽은 모든 것을 아주 잘 다룰 수 있었습니다.Aerospike의 가장 좋은 점은 데이터 세트가 증가함에 따라 필요할 때 새 상자를 준비하는 것 이상의 작업을 수행할 필요가 없었다는 것입니다.속도가 일정하게 유지되었습니다.

저는 또한 에어로스피크 문서가 매우 좋다고 생각합니다.구성하는 것은 그리 어렵지 않으며 발생하는 모든 문제에 대한 답을 찾는 것은 매우 쉽습니다.

결론

그렇다면, 에어로스피케는 그들이 주장하는 것만큼 좋은 것일까요?개인적으로, 저는 주장된 것보다 더 적은 것을 본 적이 없습니다.100만 TPS로 확장할 필요는 없었지만 충분한 하드웨어가 있으면 가능할 것이라고 생각합니다.저는 또한 에어로스픽과 몽고DB의 속도 차이를 보여주는 수치도 있다고 생각합니다.Aerospik은 MongoDB보다 훨씬 더 "구성"되고 "계획된" 데이터베이스입니다.이러한 이유로 에어로스픽은 MongoDB보다 규모 면에서 훨씬 더 빠를 것입니다.동적으로 변경될 수 있는 MongoDB와 달리 단일(또는 2차 인덱스의 경우 수백 개) 인덱스만 걱정하면 됩니다.여러분이 정말로 질문해야 할 것은 여러분이 데이터베이스로 무엇을 성취하려고 하는가 하는 것입니다.그런 다음 필요에 가장 적합한 데이터베이스를 확인합니다.확장 가능하고, 빠르고, 핵심 가치가 있는 스토어 데이터베이스가 필요하다면, 저는 Aerospike가 아마도 최고일 것이라고 생각합니다.

구체적인 질문이 있거나 명확하게 필요한 사항이 있으면 알려주시기 바랍니다.아마 제가 도와드릴 수 있을 겁니다.

속도

항공편이 더 빠릅니다.거의 모든 시스템이 저부하 또는 단순한 데이터 액세스로 신속하게 작동하지만, Aerospike는 인메모리 및 SSD 기반 스토리지 옵션을 최적화함으로써 일관되게 빠른 속도를 유지해 왔습니다.Mongo는 캐싱을 위해 많은 RAM과 함께 사용할 경우 속도가 빠르지만 속도가 느리고 쓰기 성능이 낮습니다.

신뢰성.

에어로스피크는 데이터 액세스가 단순하지만 매우 안정적입니다.MongoDB는 지금까지 지속적인 데이터 및 페일오버에 문제가 있었지만 지금은 훨씬 나아졌습니다.Aerospike는 성능이 우수하고 관리가 용이하기 때문에 확장 시 발생할 수 있는 문제가 적습니다.

설정/구성

모든 노드가 동일하고 클라이언트 드라이버가 연결 및 페일오버를 자동으로 처리하므로 Aerospike를 사용한 클러스터링은 훨씬 쉽게 설정할 수 있습니다.MongoDB는 더 많은 플랫폼에서 기본적으로 실행되고 구성 없이 시작할 수 있기 때문에 단일 서버를 설정하는 것이 더 쉬울 수 있습니다.

MongoDB에는 두 가지 주요 클러스터링 방법인 복제본 세트(가용성)와 샤딩(확장성)이 있습니다.5개의 샤드가 있었고 각 샤드에는 3개의 서버 복제본 세트가 있었습니다.데이터를 저장할 수 있는 서버는 15대입니다.그런 다음 클러스터 구성을 유지하는 3개의 구성 서버가 있었고 슬레이브를 마스터로 적절하게 에스컬레이션하기 위해 첫 번째 대규모 운영 중단 후 2개의 아비터 프로세스를 추가해야 했습니다.이는 움직이는 조각이 많고 미래에 레이아웃을 변경하는 것을 엄청나게 어렵게 만듭니다.

이와 대조적으로 Aerospike는 훨씬 적은 노력을 들였지만 더 많은 구성이 필요했습니다. 대부분의 구성은 클러스터가 시작되면 변경할 수 없는 반면 MongoDB를 사용하면 언제든지 데이터베이스를 만들고 변경할 수 있습니다.

Airospke에는 여러 클러스터를 동기화할 수 있는 기능(설정이 복잡함)이 있으므로 MongoDB에서 전혀 지원하지 않는 다양한 활성 데이터 센터에서 데이터를 복제하고 쓰기를 수락할 수 있습니다.

데이터 액세스

MongoDB에는 각 문서가 json인 데이터베이스/수집/문서가 있습니다.Aerospoke에는 네임스페이스/세트/레코드가 있으며, 여기서 각 레코드는 키 값 "빈"의 집합이며, 이는 중첩된 키/값 구조를 가질 수 있습니다.네임스페이스는 미리 구성되어 있고 동적이지 않으며 속성 이름은 14자로 제한되어 있어 작업하기가 번거롭습니다.

둘 다 보조 인덱스를 가지고 있지만 MongoDB를 사용하면 인덱스 설정이나 사용자 지정 스크립팅이 필요한 반면 Aerospik은 모든 항목에 대해 즉시 쿼리할 수 있습니다.둘 다 통합 프레임워크가 내장되어 있습니다.Aerospke 클라이언트는 LUA 스크립트를 지원하지만 MongoDB는 맵 축소 및 사용자 정의 Javascript 기능을 지원합니다.

응용프로그램에 필요한 사항에 따라 다르지만 MongoDB는 유연성, 쉬운 쿼리 및 제한사항을 줄여줍니다.

비용.

둘 다 이제 오픈 소스이고 무료입니다.둘 다 추가 기능이 있는 엔터프라이즈 버전이 있지만 데이터가 많으면 라이센스 비용이 많이 듭니다.동일한 성능을 위해 더 적은 기계를 필요로 하기 때문에 항공기 가격이 더 저렴할 수 있습니다.

전반적으로.

대부분의 경우 에어로스피케를 추천합니다.MongoDB의 문서 저장소 의미론과 유연성은 훌륭하지만 분산 데이터베이스로 확장 및 유지 관리하는 것은 어렵습니다.에어로스피크는 빠르고 안정적이며 더 적은 수의 노드로 확장할 수 있습니다.


2016년 1월: MongoDB는 클러스터를 프로비저닝하고 관리할 수 있는 유료 SaaS 서비스인 MongoDB Cloud Manager를 출시했습니다.이렇게 하면 Mongo를 구성할 때 발생하는 많은 문제를 해결할 수 많은 문제가 해결됩니다.

2017년 3월: 두 데이터베이스 모두 큰 발전을 이루었습니다.이제 Aerospke는 전체 클러스터를 다시 시작하지 않고도 더 빠른 복제와 더 유연한 구성 설정을 제공합니다.MongoDB는 새로운 스키마 적용, 향상된 성능, MongoDB Atlas 관리 서비스와 함께 가입을 지원하여 모든 확장 문제를 제거합니다.


이제 놀라운 성능, 다중 데이터 센터 복제 및 사용 제한이 없는 Cassandra 호환 오픈 소스 데이터베이스인 SilaDB를 적극 추천합니다.

저는 MongoDB(2.4)와 Aerospike 3를 생산 시스템에 사용했습니다.다음은 우리 팀이 발견한 몇 가지 관찰 사항입니다.

Aerospik의 읽기/쓰기 처리량은 타의 추종을 불허합니다.일반적으로 Mongobd는 읽기 요청이 높은 쪽에 있을 경우 특정 규모까지 작동합니다.95/5% 비율로 동시 읽기/쓰기가 필요한 경우 Mongo의 성능이 저하됩니다.에어로스피케의 경우 이 비율이 90/10이더라도 영향이 거의 없습니다.AWS에서 우리는 에어로스픽을 사용하여 200,000 TPS를 달성했습니다.

에어로스피크의 경우 대기 시간이 매우 낮습니다.서버 측에서 99%의 백분위수에 대해 읽기 지연 시간이 밀리초 미만이었습니다.쓰기 지연 시간은 80%의 경우 밀리초 미만, 100%의 경우 8ms 이내였습니다.가장 좋았던 것은 서로 다른 POC에서 거의 비슷한 숫자를 얻었기 때문에 일관된 성능을 보였습니다.

다른 솔루션에 비해 에어로스픽 클러스터에 충분한 노드는 거의 없습니다.또한 SSD 기반 데이터 저장소는 매우 인상적인 수치를 제공하므로 비용 효율적이며 유지보수 비용이 거의 들지 않습니다.

이제 Aerospike는 오픈 소스이므로 더 넓은 지역사회 지원을 바랍니다 :-)

그래서 우리는 모든 새로운 시스템에 Aerospik을 사용하고 있으며 MongoDB에서 마이그레이션을 시도하고 있습니다.

MongoDB와 Aerospike는 SQL도 중단되지 않았기 때문에 동일한 데이터 관리를 위해 수행되지 않습니다.

TokuMX 버전(Mongodb 2.4.10 기반 2.0.0)을 사용하여 Mongodb에서 샤드 클러스터가 있는 캐시 시스템을 수행했으며, 시스템은 여전히 잘 실행되고 있으며, 매일 6,500만 개의 쿼리와 약 1,000만 개의 업데이트에 대해 0.1%의 쿼리만 소요됩니다.우리는 지금 에어로스피케를 시도하고 있습니다. 그것은 훌륭하고 이제 오픈 소스로 보입니다.이 오픈 소스 버전에는 단 한 가지 문제가 있습니다.

운영 서버에서 사용하지 마십시오!

보안 관리는 엔터프라이즈 배포에서만 사용할 수 있습니다.는 뜻입니다.

비밀번호와 사용자는 어떤 것도 보호할 수 없습니다!

이제 괜찮으시다면 프로덕션에서 사용할 수 있지만, 고객 중 누구도 보안 감사를 요청할 수 있다는 사실을 기억하지 마십시오. 그러면 많은 비용을 지불해야 합니다.

언급URL : https://stackoverflow.com/questions/25208914/has-anyone-worked-with-aerospike-how-does-it-compare-to-mongodb