Http://www.infoq.com/cn/news/2014/01/nosql-vs-rdbms
Naresh Kumar is a software engineer and enthusiastic blogger who is very interested in programming and new things and is very happy to share technical research results with other developers and programmers. Recently, Naresh compared NoSQL and RDBMS, and detailed their respective features and applicable scenarios.
NoSQL is not a relational database management system. This article will introduce the differences between NoSQL databases and relational databases. It will also discuss the scenarios in which NoSQL should be used and which scenarios should not be used. Since NoSQL is still a relatively new technology, it still faces many challenges.
Today, there are hundreds of millions of users on the Internet. Big Data and cloud computing have become the technologies that many major Internet applications are using or preparing to use. This is because Internet users are growing every day and data is becoming more and more complex, in addition, there are a lot of unstructured data, which is difficult to process through the traditional relational database management system. NoSQL can better solve this problem. It is mainly used for unstructured big data and cloud computing. From this perspective, NoSQL is a brand new way of thinking about databases.
Why use NoSQL databases?
1. NoSQL has a flexible data model that can process Unstructured/semi-structured big data.
Now, we can easily obtain and access data through third parties such as Facebook and D & B, such as personal user information, geographic location data, social graphs, user-generated content, machine log data, and sensor-generated data. The use of this data is rapidly changing the characteristics of communication, shopping, advertising, entertainment, and relationship management. Applications that do not use the data will soon be forgotten by users. Developers hope to use a very flexible database to easily accommodate new data types without being overwhelmed by changes in the content structure of third-party data providers. Many new data are unstructured or semi-structured, so developers also need databases that can efficiently store such data. Unfortunately, the strict and pattern-based methods used by relational databases cannot quickly accommodate new data types, and they are powerless for unstructured or semi-structured data. The data model provided by NoSQL can meet this requirement well. Many applications will benefit from this unstructured data model, such as CRM, ERP, BPM, and so on. They can store data with this flexibility without modifying tables or creating more columns. These databases are also very suitable for creating prototypes or rapid applications, because this flexibility makes development of new features very easy.
2. NoSQL is easy to achieve Scalability (up extension and horizontal extension)
If many users use your applications frequently and concurrently, you need to consider scalable database technology rather than traditional RDBMS. For relational technology, many application developers will find that dynamic scalability is difficult to achieve. In this case, we should consider switching to a NoSQL database. For cloud applications, relational databases are a common choice at the beginning. However, there are more and more problems encountered in the use process, because they are centralized and expanded upwards rather than horizontally. This makes them unsuitable for applications that require simple and dynamic scalability. NoSQL databases are distributed and horizontally scalable from the very beginning, so they are very suitable for the Distributed features of Internet applications.
In the Web/Application Layer of the three-tier Internet architecture, it has become the default Extension Method for many years. As the number of application users surge, we need to add more servers, and the performance is achieved through Server Load balancer. At this time, the cost is linearly proportional to the number of users. Before NoSQL databases, the default Extension Method of the database layer is to scale up. To support more concurrent users and store more data, you need better servers, better CPUs, more memory, and larger disks to maintain all tables. However, good servers mean more complex, private, and expensive. This is in stark contrast to the cheap hardware used by the Web/application layer.
3. Dynamic Mode
A relational database needs to define the mode before adding data. For example, you need to store the customer's phone number, name, address, city, and state information. sqldatabase needs to know in advance what you want to store. This is a disaster for the agile development model, because every time new features are completed, the database model usually needs to change. Therefore, if you want to add your favorite entries to the database during development, you must add this column to the table, the next step is to migrate the entire database to the new mode.
4. Automatic sharding
Because it is structured, relational databases usually expand vertically. A single server must hold the entire database to ensure reliability and continuous data availability. The cost of doing so is very expensive, the expansion is limited, and the database infrastructure will become a failure point. The solution to this problem is horizontal scaling, adding servers instead of adding more capabilities to a single server. NoSQL databases usually support automatic sharding, which means that they automatically distribute data on multiple servers, and applications do not even know these things. Data and query loads are automatically balanced across multiple servers. When a server is running, it can be quickly and transparently replaced.
5. Copy
Most NoSQL databases also support automatic replication, which means you can obtain high availability and disaster recovery features. From the developer's perspective, the storage environment is essentially virtualized.
Challenges facing NoSQL Databases
1. Maturity
RDBMS systems have been around for a long time. NoSQL advocates will say that the aging of RDBMS is a sign of its decline, but for most CIOs, the maturity of RDBMS is reassuring. In most cases, RDBMS systems are stable and feature-rich. In comparison, most NoSQL databases still have many features to implement.
2. Supported
What enterprises need is peace of mind. If key systems fail, they can get immediate support. All RDBMS manufacturers are spared no effort to provide good enterprise support. On the contrary, most NoSQL systems are open-source projects. Although each type of database has support from several companies, most of these companies are small startups with no global support resources, it does not have the reassuring credibility of Oracle, Microsoft, or IBM.
3. Analysis and Business Intelligence
NoSQL databases began to emerge in the Web 2.0 APPLICATION era. Therefore, most features are required for these applications. However, the data in the application is valuable to the business, which far exceeds the CRUD of the Web application. Business Information in enterprise databases can help improve efficiency and enhance competitiveness. Business Intelligence is a critical IT issue for large and medium-sized enterprises.
4. Management
NoSQL is designed to provide zero-management solutions, but today's reality is far from this goal. Today, NoSQL requires a lot of skills to use it well and requires a lot of manpower and material resources to maintain it.
5. Professional
There are many developers around the world, and every business department will have people familiar with RDBMS concepts and programming. On the contrary, almost every NoSQL developer is in the learning mode. This situation will change over time. However, finding an experienced RDBMS programmer or administrator is much easier than a NoSQL expert.
Conclusion
NoSQL databases are becoming an important force in the database field. If appropriate, it will bring many benefits. However, enterprises should be very careful with the limitations and problems of these databases.