couchdb-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Apache Wiki <wikidi...@apache.org>
Subject [Couchdb Wiki] Update of "Introduction" by RandallLeeds
Date Sun, 25 Dec 2011 23:39:32 GMT
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Couchdb Wiki" for change notification.

The "Introduction" page has been changed by RandallLeeds:
http://wiki.apache.org/couchdb/Introduction?action=diff&rev1=13&rev2=14

Comment:
Clarified some language / simplified where details where excessive / fixed whitespace inconsistencies

  <<TableOfContents()>>
  
  == Meet CouchDB ==
- CouchDB is often categorized as a “NoSQL” database, a term that became increasingly
popular in late 2009, and early 2010.  While this term is a rather generic, and sometimes
offensive, characterization of a database, or data store, it does clearly define a break from
traditional SQL-based databases.  CouchDB makes a clean break from the SQL database world
in many ways.  One of the primary differences  is  the lack of a schema,  or rigid pre-defined
data structures like tables.   Because the data stored in CouchDB is a JSON document(s), the
structure of the data, or document(s), can change dynamically.  This feature greatly simplifies
the maintenance and development of the database, especially over time when the data and its
use evolve.  Additionally, CouchDB doesn't rely on SQL JOINS to merge related data.  This
is often confusing for some users of traditional SQL databases, but is generally a non-issue
once CouchDB users become familiar its powerful Map/Reduce framework.
+ CouchDB is often categorized as a “NoSQL” database, a term that became increasingly
popular in late 2009, and early 2010. While this term is a rather generic, and sometimes offensive,
characterization of a database, or data store, it does clearly define a break from traditional
SQL-based databases.  CouchDB makes a clean break from the SQL database world in many ways.
One of the primary differences  is  the lack of a schema,  or rigid pre-defined data structures
like tables.   Because the data stored in CouchDB is a JSON document(s), the structure of
the data, or document(s), can change dynamically. This feature greatly simplifies the maintenance
and development of the database, especially over time when the data and its use evolve. Additionally,
CouchDB doesn't rely on SQL JOINS to merge related data.  This is often confusing for some
users of traditional SQL databases, but is generally a non-issue once CouchDB users become
familiar its powerful Map/Reduce framework.
  
  One of CouchDB's most powerful features is its replication framework.  This replication
framework provides a comprehensive set of features:
  
@@ -15, +15 @@

   * Filtered Replication
   * Incremental replication with bi-directional conflict detection/resolution
  
- These replication features can be used in combination to create powerful solutions to many
problems in the IT industry, like reliability, and scalability. In addition to the fantastic
replication features, CouchDB's reliability and scalability is further enhanced by being implemented
in the Erlang programming language. Erlang has built-in support for concurrency, distribution,
fault tolerance, and has been used for years to build reliable systems in the telecommunications
industry. By design, the Erlang language and runtime are able to take advantage of newer hardware
with multiple CPU cores. When you look at all of the great characteristics of Erlang, it becomes
clear why CouchDB uses it for its foundation.
+ These replication features can be used in combination to create powerful solutions to many
problems in the IT industry. In addition to the fantastic replication features, CouchDB's
reliability and scalability is further enhanced by being implemented in the Erlang programming
language. Erlang has built-in support for concurrency, distribution, fault tolerance, and
has been used for years to build reliable systems in the telecommunications industry. By design,
the Erlang language and runtime are able to take advantage of newer hardware with multiple
CPU cores. When you look at all of the great characteristics of Erlang, it becomes clear why
CouchDB uses it for its foundation.
  
  == What it is Not ==
- To better understand what CouchDB is, it may be helpful to understand a few things that
CouchDB isn't.
+ To better understand what CouchDB is, it may be helpful to understand a few things that
CouchDB isn't:
  
-  * A relational database.  These differences are articulated above in the Meet CouchDB section,
and other portions of this Wiki.
+  * A relational database. These differences are articulated above in the Meet CouchDB section,
and other portions of this Wiki.
-  * A replacement for all databases.  When developing and designing a good information system
you should select the __best tool for the job__.  While CouchDB can be used in a wide variety
of application types, including financial, you may find that a relational database, or other
data store, is a better fit for your problem.  If you are new to CouchDB, and aren't sure
if it's a good fit for your data management problem, please ask others on the mailing list,
and the #couchdb IRC channel for advice.
+  * A replacement for all databases. When developing and designing a good information system
you should select the __best tool for the job__.  While CouchDB can be used in a wide variety
of applications you may find that another data store is a better fit for your problem.  If
you are new to CouchDB, and aren't sure if it's a good fit for your data management problem,
please ask others on the mailing list and the #couchdb IRC channel for advice.
-  * An object-oriented database.  While CouchDB stores JSON objects, it isn't meant to function
as a seamless persistence layer for an OO programming language.
+  * An object-oriented database. While CouchDB stores JSON objects, it isn't meant to function
as a seamless persistence layer for an object-oriented programming language.
  
  == Key Characteristics ==
  
@@ -40, +40 @@

      "Body": "I decided today that I don't like baseball. I like plankton."
  }
  }}}
- In the above example document, `Subject` is a field that contains a single string value
"I like plankton". `Tags`  is a field containing the list of values "plankton",  "baseball",
and "decisions".
+ In the above example document, `Subject` is a field that contains a single string value
"I like plankton". `Tags` is a field containing the list of values "plankton",  "baseball",
and "decisions".
  
  A CouchDB database is a flat collection of these documents. Each document is identified
by a unique ID.
  
  === Views ===
- To address this problem of adding structure back to semi-structured data, CouchDB integrates
a view model using JavaScript for description. Views are the method of aggregating and reporting
on the documents in a database, and are built on-demand to aggregate, join and report on database
documents. Views are built dynamically and don’t affect the underlying document; you can
have as many different view representations of the same data as you like.
+ To address this problem of adding structure back to semi-structured data, CouchDB integrates
a view model using JavaScript for description. Views are the method of aggregating and reporting
on the documents in a database, and are built on-demand to aggregate, join and report on database
documents. Views are built dynamically and don’t affect the underlying document; you can
have as many different view representations of the same data as you like. Incremental updates
to documents do not require full re-indexing of views.
  
  === Schema-Free ===
- Unlike SQL databases which are designed to store and report on highly structured, interrelated
data, CouchDB is designed to store and report on large amounts of semi-structured, document
oriented data. CouchDB greatly simplifies the development of document oriented applications,
which make up the bulk of collaborative web applications.
+ Unlike SQL databases, which are designed to store and report on highly structured, interrelated
data, CouchDB is designed to store and report on large amounts of semi-structured, document
oriented data. CouchDB greatly simplifies the development of document oriented applications,
such as collaborative web applications.
  
+ In an SQL database, the schema and storage of the existing data must be updated as needs
evolve. With CouchDB, no schema is required, so new document types with new meaning can be
safely added alongside the old. However, for applications requiring robust validation of new
documents custom validation functions are possible. The view engine is designed to easily
handle new document types and disparate but similar documents.
- In an SQL database, as needs evolve the schema and storage of the existing data must be
updated. This often causes problems as new needs arise that simply weren't anticipated in
the initial database designs, and makes distributed  "upgrades" a problem for every host that
needs to go through a schema update.
- 
- With CouchDB, no schema is enforced, so new document types with new meaning can be safely
added alongside the old. The view engine, using JavaScript, is designed to easily handle new
document types and disparate but similar  documents.
  
  === Distributed ===
- CouchDB is a peer based distributed database system. Any number of CouchDB hosts (servers
and offline-clients) can have independent "replica copies" of the same database, where applications
have full database interactivity (query, add, edit, delete). When back online or on a schedule,
database changes are replicated bi-directionally.
+ CouchDB is a peer based distributed database system. Any number of CouchDB hosts (servers
and offline-clients) can have independent "replica copies" of the same database, where applications
have full database interactivity (query, add, edit, delete). When back online or on a schedule,
database changes can be replicated bi-directionally.
  
- CouchDB has built-in conflict detection and management and the replication process is incremental
and fast, copying only documents and individual fields changed since the previous replication.
Most applications require no special planning to take advantage of distributed updates and
replication.
+ CouchDB has built-in conflict detection and management and the replication process is incremental
and fast, copying only documents changed since the previous replication. Most applications
require no special planning to take advantage of distributed updates and replication.
  
- Unlike cumbersome attempts to bolt distributed features on top of the same legacy models
and databases, it is the result of careful ground-up design, engineering and integration.
The document, view, security and replication  models, the special purpose query language,
the efficient and robust disk layout are all carefully integrated for a reliable and efficient
system.
+ Unlike cumbersome attempts to bolt distributed features on top of the same legacy models
and databases, replication in CouchDB is the result of careful ground-up design, engineering
and integration. The document, view, security and replication  models, the special purpose
query language, and the robust disk layout are all carefully constructed to produce a reliable
and efficient system.
  

Mime
View raw message