More about Elasticsearch
- Self-Managed Elasticsearch vs. Elastic Cloud Managed Service
- Elasticsearch: Concepts, Deployment Options and Best Practices
- How to Deploy Elasticsearch with Cloud Volumes ONTAP on AWS
- Elasticsearch vs MongoDB: 6 Key Differences
- Elasticsearch on Kubernetes: DIY vs. Elasticsearch Operator
- Elasticsearch on AWS: Deploying Your First Managed Cluster
- Elasticsearch on Azure: A Quick Start Guide
- Elasticsearch on Google Cloud: Deploying Your First Managed Cluster
- Elasticsearch Architecture: 7 Key Components
- Managed Service or Self-Managed?: Comparing the Two AWS Deployment Options for Elasticsearch
- Elasticsearch Optimization with Cloud Volumes ONTAP: Download the Free eBook
Subscribe to our blog
Thanks for subscribing to the blog.
May 18, 2021
Topics: Cloud Volumes ONTAP DatabaseElementary5 minute read
What is Elasticsearch? |
What is MongoDB? |
Since its release in 2010, Elasticsearch has become one of the world’s top ten databases by popularity. Originally based on Apache’s Lucene search engine, it remains an open-source product, built using Java, and storing data in an unstructured NoSQL format.
Elasticsearch is built for search and provides advanced data indexing capabilities. For data analysis, it operates alongside Kibana, and Logstash to form the ELK stack. |
MongoDB is an open-source NoSQL database management program, which can be used to manage large amounts of data in a distributed architecture. It is the world’s most popular document store and is in the top 5 most popular databases in general.
MongoDB lets you manage, store and retrieve document-oriented information. It provides features such as fast ad-hoc queries, indexing, load balancing, data aggregation, and server-side JavaScript execution. |
In this article, you will learn:
Elasticsearch vs MongoDB: What are the Differences?
1. Data Storage Architecture
Elasticsearch is written in Java and based on the open-source Lucene search engine. It writes data to inverted indexes using Lucene segments. Settings, index mapping, alternative cluster states, and other metadata are saved to Elasticsearch files outside the Lucene environment.
In Lucene, data updates are resource-intensive operations, because segments are immutable, and every commit creates a new segment, then segments are merged automatically. To avoid this excessive I/O, Elasticsearch creates dedicated transactional index logs, preventing low-level Lucene commits for each indexing procedure. These logs can also be used for recovery in case of data corruption.
Related content: read our guide to Elasticsearch architecture
MongoDB is better suited for high write and update throughput operations without draining CPU resources and/or causing disk I/O issues. It is written in C++ and uses a memory map file to map on-disk data files to in-memory byte arrays. It organizes data using a doubly linked data structure: documents contain linked lists to one another and to the BSON-encoded data behind the scenes.
In case of low system memory or high system resource utilization, a MongoDB process shuts itself down. For database recovery in the event of a hard system shutdown, Mongo generates journal logs.
2. Licensing Model and Paid Features
Elasticsearch is an open-source product licensed with Apache 2.0. It has everything you need to build a search application with a basic level of security. For advanced security features like audit logging, IP filtering and the Elasticsearch Token Service, as well as other features like machine learning analysis and alerting, you will need to purchase the Gold, Platinum or Enterprise edition.
MongoDB has a community edition offered under the Server-Side Public License (SSPL) v1.0. This includes all the core features of MongoDB, as well as basic monitoring equipment and security. The Enterprise Server edition provides advanced security like LDAP, auditing, and Kerberos access controls, storage encryption at rest, and high-performance in-memory storage.
3. Backup and Recovery
Elasticsearch provides a snapshot REST API and offers a variety of plugins that let you store backups in a “snapshot repository”, which can be hosted on local hardware, on cloud object storage services like Amazon S3, or on Hadoop Distributed File System (HDFS). All snapshots are incremental—each backup copies data that was not backed up in earlier snapshots.
MongoDB offers several ways to perform backups:
- For small deployments you can use the mongodump tool. However, backups can take time and the backup processes affect performance of the database.
- A more robust option is taking a point-in-time snapshot of the underlying file system—this needs to be done with operating system tools, not via MongoDB.
- MongoDB Atlas and MongoDB Cloud Manager/Ops Manager are commercial cloud services that provide fully managed backups for MongoDB.
4. Programming Language Support
Elasticsearch is written in Java, and supports Java, Ruby, Javascript, GO, .NET, Python, PHP, Rust and Perl.
MongoDB is written in C++, and natively supports C, C++, Scala and Swift. You can use other languages with MongoDB, via open-source clients written by the MongoDB community.
5. Handling Relational Data
Both Elasticsearch and MongoDB support document-based data models but can also support traditional relational data represented by rows and columns.
Elasticsearch has two ways of dealing with relational data: a nested document model and a parent-child document model. Nested can be used for one-to-many relationship between documents and relational data, while parent-child can be used for many-to-many relationships.
MongoDB uses the embedded document model, in which relational data can be added as sub-documents (one to many relationship). Alternatively, it provides a reference model, in which documents can include a reference to relational data (many to many relationship).
6. Use Cases
Elasticsearch was originally designed to support full text search, and provides advanced features to support search, such as tokenizers, token filters and analyzers. It is also commonly used for log analysis, forming part of the popular Elasticsearch, Logstash and Kibana (ELK) stack.
MongoDB is more suitable to manage NoSQL data requiring create, read, update and delete (CRUD) operations. It offers high scalability, reliability, and performance. MongoDB also uses text-based indexes for full-text queries, but the search is slow, and the search server does not provide tokenizers and analyzers like Elasticsearch does.
NoSQL Storage with Cloud Volumes ONTAP
NetApp Cloud Volumes ONTAP, the leading enterprise-grade storage management solution, delivers secure, proven storage management services on AWS, Azure and Google Cloud. Cloud Volumes ONTAP supports up to a capacity of 368TB, and supports various use cases such as file services, databases, DevOps or any other enterprise workload, with a strong set of features including high availability, data protection, storage efficiencies, Kubernetes integration, and more.
Cloud Volumes ONTAP supports advanced features for managing SAN storage in the cloud, catering for NoSQL database systems, as well as NFS shares that can be accessed directly from cloud big data analytics clusters.
In addition, Cloud Volumes ONTAP provides storage efficiency features, including thin provisioning, data compression, and deduplication, reducing the storage footprint and costs by up to 70%.
For more on optimizing Elasticsearch deployment with NetApp, download our free eBook Optimize Elasticsearch Performance and Costs with Cloud Volumes ONTAP today.