วันพฤหัสบดีที่ 5 สิงหาคม พ.ศ. 2553

5 เหตุผลที่คุณต้องสนใจ NoSQL

Whether you are a fan of NoSQL, cynical of its merits, or just curious about its development goodies, there's no escaping the presence and growth of NoSQL. In the next 18 months, at least half of all new websites will use NoSQL databases, reports GigaOM Pro Research.

Described by many in the know as a collection of tools and technologies, NoSQL has made its sharpest imprint in the database space, where it delivers solutions not delivered or not delivered well by SQL.

To avoid odious comparisons with SQL, it's important to state that the features and benefits or SQL and NoSQL don't line up neatly.

NoSQL is a set of loosely-related technologies, says Justin Sheehy, CTO, Basho Technologies, the creator of Riak, a distributed data store that combines high availability and powerful partitioning.

"SQL is a semi-standard language," he says. "There is not a relevant limitation inherent in the SQL language, and there is no technology that is SQL. The whole point of the NoSQL phenomenon is to add new options and tools."

The NoSQL phenomenon is worth keeping an eye on for the following reasons:

It's Open Source

Open source means; no fees or certainly low ones; better reliability than with closed source software; good security; and fast deployment.

Cassandra, CouchDB, Hbase, MongoDB, Redis and Riak are some of the most prominent NoSQL options.

There's a NoSQL Database for a Variety of Tasks

Frequently written, rarely read statistical data (for example, a web hit counter) should use an in-memory key/value store such as Redis, or an update-in-place document store such as MongoDB, says Adam Wiggins, co-founder, Heroku, a cloud-based platform-as-a-service (PaaS) provider.

"Big Data" such as weather stats or business analytics will work best in a freeform, distributed db system such as Hadoop.

Binary assets (such as MP3s and PDFs) work well in a datastore that can serve directly to the user's browser, such as Amazon S3.

Transient data (such as web sessions, locks, or short-term stats) should probably be kept in a transient datastore such as Memcache, advises Wiggins.

"If you need to replicate your data set to multiple locations (such as syncing a music database between a web app and a mobile device), you'll want the replication features of CounchDB," he adds.

High availability apps, where minimizing downtime is critical, thrive in the automatically clustered, redundant setup of datastores such as Cassandra and Riak.

NoSQL Has the Cachet of Big-Name Buy-In

Household entities such as Amazon, the BBC and Google have large production implementations. Two of the best-known are Amazon's Dynamo and Google's BigTable.

NoSQL is being adopted quickly among web application developers writing apps for the hottest new web platforms such as Twitter, Facebook, Apple iPad and iPhone.

NoSQL Databases Handle Upgrades Better than SQL Ones

"In a SQL database, updates involve updating the schema and the stored data," says Damien Katz, co-founder and CEO, Couchio, developer of CouchDB. "This often causes problems as new needs arise that weren't anticipated in the initial database designs. With CouchDB, no schema is enforced, so new document types with new meaning can be safely added alongside the old."

The BBC, one of CouchDB's customers, is using CouchDB to handle 150 million requests per day in two clusters of machines, notes Katz.

Similar to other customers, the BBC selected CouchDB because of its superior replication and easy upgrade capabilities, he says.

NoSQL and the Cloud: A Perfect Fit

SQL databases have become the proverbial hammer in search of a nail," says Wiggins.

"At the same time, many cloud web applications have expanded beyond the sweet spot for these relational database technologies," he notes. "Many applications demand availability, speed, and fault tolerance over consistency."

Wiggins says NoSQL databases help meet these new requirements by providing solutions tailored for web apps that rely upon data that is document-centric, transient, and/or graph-like in nature.

NoSQL databases typically emphasize horizontal scalability via partitioning, putting them in a good position to leverage the elastic provisioning capabilities of the cloud, says Wiggins.

วันอังคารที่ 9 กุมภาพันธ์ พ.ศ. 2553

เริ่มต้นทำความรู้จักกับ NOSQL กันเถอะ : Introduction to NOSQL

ผมเชื่อว่าโปรแกรมเมอร์หลายๆคนที่ได้จับงานฐานข้อมูลที่ต้องใช้ความเร็วสูงแบบเรียลไทม์ หรือ Web 2.0 ทั้งหลายน่าจะได้ผ่านๆตากับคำว่า NOSQL กัน จากที่ผมได้ศึกษามาไม่กี่วัน ก็ได้ข้อสรุปเบื้องต้นคร่าวๆดังนี้ครับ

มันคือ ฐานข้อมูลที่ไม่มีภาษา SQL ให้ใช้ จบข่าว

อ้าวจะบร้าเหรอ ตอบแค่นี้คนเลิกอ่านกันพอดี แต่มันก็จริงๆนี่นา

เอาให้ละเอียดมันต่างจาก MySQL Microsoft SQL Oracle ที่เราๆท่านๆคุ้นเคยตรงนี้ครับ

  1. อย่างแรกเลยมันไม่มีความสัมพันธ์ครับ เพราะมันไม่ใช่ Relational Database เพราะฉะนั้นลืมเรื่อง Join, WHERE ไปได้เลย
  2. เน้นใช้งานกับปริมาณข้อมูลที่มีจำนวนมากมายมหาศาล ใครนึกไม่ออกว่ามากขนาดไหน ลองนึกถึง www.facebook.com, www.twitter.com, www.google.com นั่นแหละครับ ให้มา่นั่ง SELECT FROM WHERE รับรองครับ สิบนาทีถึงจะได้ข้อมูล
  3. แต่เนื่องจากพวก NOSQL มันไม่มีโครงสร้างตายตัว มันเลยขายได้มากกว่า ในแบบขนาน (horizontal scaling) คือเพิ่มเครื่องได้ง่ายกว่านั่นแหละ
  4. ประสิทธิภาพสูงกว่า แต่ก็มากับการออกแบบที่ไม่แน่นอนไม่ตายตัวและยากกว่า RDB เป็นไหนๆ เพราะไม่ต้องคอยจัดการเรื่องความสัมพันธ์
  5. ตอนเรียนวิชาฐานข้อมูลมาเราเน้นการ Normalize แต่ที่นี่เราเน้นการ Denormalize ครับ เน้นให้มันเร็วที่สุดไม่ต้องไป join อะไรทั้ง หาเรคคอร์ดเดียวแล้วเอามาใช้งานได้เลย เช่นข้อมูล Contact ของ member เราก็เก็บทุกอย่างทุกคอลัมน์ลงไปเลยครับ ไม่ต้องไปแยกจังหวัด หรืออำเภออะไร เพื่อให้เกิดการ Compare เปรียบเทียบน้อยที่สุดครับ
  6. เวลาจะเชื่อมต่อต้องง่ายเข้าไว้ไม่ต้องมี overhead เยอะ มีแค่ IP กับ Port จบเลย
  7. ต้องสามารถทำ Replication ได้เพราะ ข้อมูลเป็นสิ่งสำคัญ และจะได้ไม่ทำให้เกิด Single Point of Failure หรือเกิดจุดตายในระบบ คือ พังไปซักเครื่อง ก็ยังทำงานได้ปกติ
  8. เน้นการทำงานแบบ Key/Value หรือ Key/Column แล้วแต่ยี่ห้อครับ
ตัวอย่างของฐานข้อมูลแบบ NOSQL Database ที่มีในท้องตลาดตอนนี้แบ่งตามประเภท (ที่มา wikipedia.org)
เดี๋ยววันหลังจะมาจำแนก และแนะนำว่า ประเภทไหนเหมาะกับ งานแบบไหนให้ดูกันนะครับ

ส่วนใครอยากได้ข้อมูลเพิ่มเติมเชิญได้ที่

สำหรับวันนี้สวัสดีครับ เลิกงานแล้วไปดีกว่า อิอิ