March 25 MongoDB (taken from "Humongous") 1.4 release shortly after its founder Dwight Merriman (formerly DoubleClick Ceo/cto) announced 10gen--open source document database MongoDB behind the company, It will provide business training and support.
Infoq took the opportunity to interview Merriman about the characteristics, applicability, and status of the MongoDB in the NoSQL database community, citing some of his answers appropriately. MongoDB Introduction
MongoDB is a scalable, high-performance next-generation database. The data in MongoDB is stored as documents, so that complex relationships can be represented in a single data object. A document can consist of the following parts: a standalone basic type attribute, an inline document, or an array of documents.
This flexibility allows developers to model a large number of problems in a manageable and flexible way without breaking the data into different data tables. In the case where the data should not be structured as a separate document, MongoDB has the concept of "dbref", which is a pointer to another document from one property of the document.
Fetching and querying data from the MONGODB database is flexible-you can query the document dynamically based on the main document, any attributes in the document, any embedded document, any document in the array. You can access the embedded document through the "dot" symbol. characteristic
MongoDB developed with C + + has the following features: document-oriented storage (the power and flexibility of JSON-style data schemas) internal objects, embedded arrays, geo-spatial information Dynamic query support full index, including two-level index query Analysis fast, in situ update Effective storage for binary large data objects (such as photos and video) support for replication and failover for cloud-level extended automatic fragmentation (alpha phase) MapReduce business support, training, and consulting for complex aggregations origin and purpose
MongoDB's blog is the way to introduce their goals:
All along, MongoDB's goal is not a special database to deal with a few problems, but a new kind of database, a database that can solve a lot of real problems for developers.
The focus of the MongoDB project is to combine the benefits of the non-relational model with the important features common in traditional databases, which include high scalability, performance, and ease of development, which are useful in important operational data stores.
MongoDB is not designed in the lab, it comes from our own experience in building large, highly available systems.
MongoDB released its first official version 16 months ago, on February 11, 2009. The philosophy behind it is that, while the transactional semantics are weakened by scalability and performance considerations, people need a more powerful tool to deal with common problems, not just pure key-value storage. the relationship with DDD
The document paradigm is an interesting way to persist complex object structures. In particular, the aggregation concept proposed by domain-driven design (DDD) is that only the root entity can be connected to other entities, and the entities and values that are dependent can only be accessed through the root. In DDD projects, MongoDB based warehouses can be easily used to provide persistent functionality. In addition, there is a related view that when it comes to business entities, documents are always mentioned in the business domain. Therefore, it may be more appropriate to use documents as internal representations than other data structures or objects.
In a modeless document database, data modeling is still important. There are a number of relationships that need to be carefully considered before creating a document, which can lead to duplication of data, poor performance, and other problems. examples and Tutorials For example, in a relational database, a blog (including the content of the article, comments, comments) will be scattered across multiple data tables. In MongoDB, you can use a document to represent a blog, comments and votes as an array of documents, placed in the body main document. This makes data easier to manage, eliminating "JOIN" operations that affect performance and horizontal scalability in traditional relational databases.
> Db.blogposts.save ({title: "My A-Post", Author: {Name: "Jane", id:1},
Comments: [{by: "Abe", Text: "I"},
{by: "Ada", Text: "Good post"}]
})
> Db.blogposts.find ({"Author.name": "Jane"})
> Db.blogposts.findOne ({title: "My I-Post", "Author.name": "Jane",
Comments: [{by: "Abe", Text: "I"},
{by: "Ada", Text: "Good post"}]
})
> Db.blogposts.find ({"comments.by": "Ada"})
> Db.blogposts.ensureIndex ({"Comments.by": 1});
You can run the example directly in the interactive MongoDB Web Console shell, which also embeds an online tutorial.
Infoq's CTO, Alex Popescu, has a lot of news, reviews, and comparisons of several NoSQL data stores (including MongoDB) in Mynosql, and can refer to his production environment notes.
Teach Me to Code released 3 videos that introduced the many features of MongoDB.
Pivotallabs provides a video of an introductory speech by 10gen Michael Dirolf. SlideShare can also find a more complete presentation of MongoDB by Kyle Banker. Installation and Integration
The MongoDB database follows the gun AGPL v3.0 protocol release, mongodb.org provides the driver following Apache License v2.0. You can get its C + + source code from the GitHub and build it on any operating system.
You can also install MongoDB on Linux, MacOS X, Windows, and Solaris as a binary package.
The MongoDB itself runs in the form of a Mongod daemon, which is the core database server that is then accessed through a variety of drives. Fragmentation support and database routing functions are provided by the MONGOs service.
There is an effort to support MongoDB in almost all programming languages. It has multiple language drivers: C, C + +, C # &. NET, ColdFusion, Erlang, Factor, Java, Javascript, PHP, Python, Ruby, Perl, and so on.
MongoDB also supports other frameworks, such as the "blueprints" Connector Library for Gremlin (diagram database). The Debasish Ghosh integrates it into the Extensible actor Framework Akka as a persistence module. Operations and scalability
From an operational standpoint, MongoDB can run in two modes depending on the needs of the application. The first is the single master mode, which has only one primary server to handle all the write operations. Read operations can be separated from, through any number of from the server to read operations, which helps improve the scalability of reading (use scene: Sourceforge).
For applications that have large amounts of write data or are too frequently written to be processed by a single primary server, you can use the MongoDB automatic fragmentation mode (which is in alpha). The write operation in this mode is automatically assigned to any number of "slices" (typically one or a set of MONGODB servers) that are responsible for writing and reading this part of the dataset.
Whichever pattern you use, MongoDB takes a "strong consistency" approach (you can think of MongoDB as the c-p system in Cap theory). High availability is achieved by replicating data to multiple MONGODB nodes, each of which becomes a fragmented primary server--mongodb automatically handles failover. This allows you to maintain a strong consistency feature while maintaining a high write availability, which is important for some use cases.
The MongoDB site has an administrator center that provides the following operational information: Administrator action Interface Hosting Center Import Export tool monitoring and diagnostics, DBA operations in Shell database profiling fragmentation, replication production environment note security and authentication architecture and component backup, troubleshooting, resistance Persistence and Repair documentation, support and training
MongoDB's documentation is located in mongodb.org wiki (PDF), followed by creative Commons License.
10gen designed MongoDB to address a wide range of real-world problems in the application development community. We can use MongoDB as a data storage part of many applications that have a backend for the database, as evidenced by the actual customer deployments.
Today, 10gen provides support, advice and training to customers who use MONGODB in production applications. In the near future, 10gen will provide cloud-based services (such as hosted MongoDB services) and advanced management tools for large-scale mongodb clusters. Current Usage
The 1.3 version of MongoDB has been widely used in production systems, and the more well-known use cases are: Boxed Ice SourceForge justin.tv GitHub the Business Insider
Of course, there are a lot of other use cases. development planning for the future
The MongoDB team's vision for data storage is vast, and they think the current 1.4 version contains half the features they want and will continue to work next year. Better replication capabilities: real-time, replica sets, more data durability options for more features in fragmented embedded documents for production environments provide more atomic update operators single server durability Full-text search
View English Original: MongoDB growing up:release 1.4 and commercial Support by 10gen
Turn from: Http://www.infoq.com/cn/news/2010/04/mongodb