ข่าวเก่าไปอาทิตย์นึงนะครับ แต่ยังใช้ได้อยู่สำหรับผู้ที่สนใจเรื่อง NoSQL
อย่างที่รู้กันว่าช่วงหลายปีหลังนี้ กระแสการออกแบบซอฟต์แวร์โดยใช้แนวทาง NoSQL ซึ่งเป็นอีกทิศทางหนึ่งนอกเหนือไปจาก relational database เริ่มมาแรง เนื่องจากความต้องการประสิทธิภาพในเว็บแอพขนาดใหญ่มีมากขึ้น และ relational database ไม่สามารถตอบโจทย์ตรงนี้ได้ดีนัก
ตัวอย่างระบบฐานข้อมูลแบบ NoSQL ได้แก่ BigTable ของกูเกิล, SimpleDB ของ Amazon, Apache CouchDB, Apache Cassandra และ MongoDB พระเอกของข่าวนี้
MongoDB ถือเป็นฐานข้อมูลแบบ NoSQL อีกตัวที่กำลังมาแรง โครงการเริ่มพัฒนาในปี 2009 โดยบริษัทชื่อ 10gen ตัวซอฟต์แวร์เป็นโอเพนซอร์ส เขียนด้วย C++ แต่ก็รองรับภาษาโปรแกรมยอดนิยมเกือบทุกชนิด
ตัวอย่างบริษัทดังๆ ที่ใช้ MongoDB เก็บข้อมูลได้แก่ Foursquare, Intuit, Disney, Sourceforge (รายชื่อ) และมีเครื่องมือช่วยในการพัฒนา-ดูแลรักษาระบบอีกหลายตัว
ล่าสุด MongoDB เดินทางมาถึงรุ่น 2.0 หลังจากออกรุ่น 1.8 ไปเมื่อต้นปี ของใหม่ในรุ่นนี้มีหลายอย่าง เช่น
รายละเอียดอื่นๆ ดูได้จาก Release Notes
ที่มา - MongoDB, The Register
Comments
mongo , mango ,meego
ตาเริ่มลาย
ผมพยายามจะศึกษาและพยายามลองใช้อะไรก็ได้ที่มันไม่ใช่ relational database และพยายามลองใช้ NoSQL แต่ก็ยังจับหลักการไม่ได้เลยสักที ประกอบกับ document ช่างน้อยนัก (ภาษาไทย) และดูเหมือนกับว่าคนไทย ไม่ค่อยสน NoSQL กันมากเท่าไหร่ ยังคงยึดติดอยู่กับ relational database หลายๆ ตัว ทั้งๆ ที่ผมลองเขียน flow ดูแล้ว หลายๆ ส่วนถ้ากรณีเป็น web application เลี่ยงไปใช้ NoSQL จะไว (โคตร) มาก
ใครมี site อะไรเป็นแนวทางแนะนำ รบกวนด้วยนะครับ ผมจะได้ไปศึกษาเพิ่ม
อ่าน document จบก็ทำได้มากแล้วครับ
ถ้าติดตรงไหน ผมจะหาอ่านตาม stackoverflow ไม่ก็ blog หรือ google groups ต่างๆของคนทำเลย สิ่งที่เราสงสัยมักมีคนถามไว้แล้ว
document หรืออะไรที่เป็นภาษาไทยนี่ ... ถ้ารอมันมาก็คงช้าไปแล้วนะครับ ...
แนะนำ site document หน่อยครับ :)
ของเวบหลักก็โอเคแล้วครับ http://www.mongodb.org/display/DOCS/Developer+Zone
เห็นว่ามีหนังสือออกมาขายบ้างแล้ว น่าจะช่วยให้ศึกษาได้ง่ายขึ้นกว่า document ข้างบนครับ
อันนี้ google grooups ครับ http://groups.google.com/group/mongodb-user?pli=1
edit เพิ่ม:
อันนี้เป็น interactive สอนให้ลองใช้คำสั่งไปทีละขั้น ผมไม่เคยลอง แต่น่าจะช่วยให้เรียนรู้ได้ไวขึ้นครับ
http://www.mongly.com/
ขอบคุณครับ
จุดประสงค์จริงๆ คือ ผมไม่ได้ตั้งใจจะทิ้ง rdbms ทั้งหมด เพราะยังไงผมว่ามันก็ยังต้องใช้อยู่ดี เพียงแต่ว่าอะไรที่มันแยกออกเป็น NoSQL ได้และทำงานคู่กันได้ ลดภาระ rdbms ออกไปได้ มันก็จะทำให้ระบบทำงานได้ดีขึ้น
ทำไมคนจะเปลี่ยนละครับ ถ้า RDBMS มันยังขายได้
ทุกวัันนี้ยังมีคนใช้ VB.6 Dev งานใหม่ขายอยู่เลย
มันก็มีบางมุมที่ RDBMS ไม่สามารถตอบสนองได้ดีนักครับ
อย่างเช่นงานที่เป็นแนว Social ทั้งหลายที่ request/transaction เข้ามาถี่มากๆ การ normalize table แล้วค่อย join กลับแบบที่ RDBMS ทำกันนั้นจะมี overhead เยอะและทำให้ประสิทธิภาพด้อยลงค่อนข้างมากครับ
รวมทั้งปัญหา transaction lock ไปมาก็จะเยอะขึ้นมากด้วย
แนวคิด NoSQL มาตอบโจทย์ในงานเหล่านี้ได้ดีกว่าครับ คือไม่ต้อง normalize อะไรมันเลย มีอะไรมาจับยัดลงไปอย่างนั้น แล้วก็ให้ id มันไป
เวลาดึงก็ดึงจาก id ไปทั้งก้อน ที่หน้าเพจอยากแสดงอะไรก็ไปตัดเอาเอง
มันไม่มีอะไรที่ fit กับทุกสถานการณ์น่ะครับ
งาน Enterprise, Commercial นี่ยังไง NoSQL ก็ไม่ใช่ตัวเลือกที่ดีแน่ๆเมื่อเทียบกับ RDBMS
ในขณะเดียวกัน งานเว็บแบบ Social ทั้งหลาย RDBMS ก็ไม่ใช่ตัวเลือกที่ดีที่สุด (ไม่ได้บอกว่าทำไม่ได้นะครับ ทำได้แต่ว่ามีตัวอื่นที่ตำได้ดีกว่า)
ถ้าจะเอาเฉพาะ "หลักการ" จริงๆ ผมแนะนำให้อ่านเปเปอร์ของกูเกิล ที่เป็นคนเริ่มต้นแนวคิดพวกนี้ (แต่ไม่ได้ปล่อยซอฟต์แวร์ออกมาให้คนนอกใช้)
ขอบคุณครับ คันมืออยากเล่น NoSQL จริงๆ
กลุ่มในเฟซบุ๊คที่ผมติดตามอยู่ก็ NoSQL Community
หนังสือยังต้องแกะกับภาษาอังกฤษเหมือนกันครับแต่ขอแนะนำที่สั้นกระชับและเข้าใจง่ายที่สุดก็ เล่มนี้ครับ มีให้โหลดเป็น PDF ฟรีด้วยครับ
หนังสือนอกนั้นคงพอหากันได้อยู่แล้ว ถ้ารู้อยู่แล้วก็ขออภัยด้วยนะครับ : )
อยากลองใช้จริงๆจังๆเหมือนกัน แต่ติดตรงที่ไม่มี vps หรือ dedicated เลย
shared host ธรรมดาคงใช้ไม่ได้แน่
ตัวโปรเจ็กท์ที่ทีมผมกำลังทำอยู่ก็ใช้ MongoDB ครับ มันสนุกดีเหมือนกัน :D
mongodb ok เลยนะครับ แต่ตอนนี้กำลังจะหมดมุขทำ DBRef ของ Rails โดยใช้ dm-mongo-adapter T_T
บอกตรงๆ ว่าไม่เคยใช้เลย
วิชา ดาต้าเบส ของ ป ตรี จะต้องปรับเปลี่ยนไหมหนอ...
ไม่ถึงขนาดนั้นหรอกครับ
ยังไง Concept ต่างๆก็ยังอิงมาจาก Relational Database อยู่ดี
รวมทั้งตลาด Enterprise ก็ยังใช้ Relational กันแทบจะทั้งหมดครับ ต่างกับตลาดกลุ่ม Social Web ที่จะเห็นของใหม่ๆเยอะกว่า
น่าสนใจ
แฟนพันธุ์แท้สตีฟจ็อบส์ | MacThai.com
โดยทั่วไปแล้ว RDBMS ออกแบบในแนวคิดแบบ centralize ซึ่งโมเดลมันง่าย ทุกอย่างมัน serializable ทั้งระบบ ง่ายในการตรวจสอบและการเข้าใจ เพราะการเปลี่ยนแปลงทั้งหมด เกิดขึ้นในจุดศูนย์กลางเพียงจุดเดียว ทุกอย่าง track ได้เป็นเชิงเส้นทั้งหมด
แต่ในระบบที่ใหญ่ รองรับผู้ใช้งานจำนวนมาก ต้องการ concurrency/parallelism สูงมากๆ ซึ่งแนวคิด RDBMS ดั้งเดิมที่เป็น centralize มันเริ่มเป็นข้อจำกัด (bottleneck) ถึงได้มีแนวคิดแบบ NoSQL เกิดขึ้น
แต่ผมเชื่อว่าระบบ RDBMS มันพัฒนามาไกลมากและรองรับงานได้ตั้งแต่เล็กจนระดับประเทศได้สบายๆ และคงไม่เฟดลงไปง่ายๆ โดยเฉพาะด้านการเงิน รวมถึงยังมีลูกเล่นให้พัฒนาได้อีกพอสมควร (อาจจะเป็น hybrid RDBMS เป็นต้น)
แต่ NoSQL ก็น่าสนใจ สำหรับระบบที่ใหญ่มากจริงๆ (ระดับประเทศมั้ง) ถ้าเราศึกษาแนวคิด และนำมาพัฒนา Data Object Model ซึ่งลองถ้าออกแบบ Model ได้ดีพอ ผมก็เชื่อว่าการเปลี่ยนผ่านไปยัง NoSQL ก็น่าจะทำได้ไม่ยากเกินไป
เห็นด้วยครับ เช่น PostgreSQL ก็มี MVCC มาแล้วตอนนี้ พวก DB2 มี PureXML มานานพอควร
ปัญหาที่เป็นของ RDBMS อันนี้ที่หลายๆ คน (developer) ไม่ค่อยนึกก็คือ การขยายระบบ
Read - scale ง่าย
Query - scale ยากบ้างง่ายบ้าง ขึ้นกับหลายๆ ปัจจัย
Write - scale ยาก
ปัญหา autorun ของ PK ที่จะกระจายหลายๆ server ก็แก้ยาก การ scale out โดยการพิ่มเครื่องเข้าไปใน RDBMS ก็ไม่ได้อยู่ๆ ทำกันได้ง่ายๆ (trigger, replication script etc...)
แต่ NoSQL หลายๆ ตัวออกแบบมาทำ Master-Master Replication, Multiple Master Replication, Sharding มาตั้งแต่ต้น ก็เลยมองไปที่ยุคใหม่เพื่อการขยายระบบ
ถ้ามองว่าระบบในอนาคตจะเปลี่ยนแปลงเร็ว เตรียมโครงสร้างล่วงหน้าได้ไม่เยอะ
NoSQL ที่จะเพิ่มความสามารถให้ทดแทนส่วน SQL ก็น่าจะมีอนาคตดีกว่า RDBMS ที่เพิ่มความสามารถให้เหมาะกับ Unstructure Data ที่ NoSQL ถนัดครับ
บริษัทผมใช้อยู่ในงานเว็บไซต์ ทำ CMS ขนาดกลางๆ ตัวหนึ่งครับ
ต้องบอกว่า NoSQL เป็นกลุ่มรวมของพวกที่ Not Only SQL
ตำราไทย คงไม่เปลี่ยน วันก่อนจะไปสอนหนังสือที่มหาวิทยาลัยแห่งหนึ่ง ต้องเปลี่ยนคอร์สเพราะคณบดีและอ.ที่สอนปี 3 CS ไม่รู้จักภาษา Ruby "มันมีด้วยเหรอ ใครจะใช้กัน"
จบแค่นี้ดีกว่า..
ถามจริง Blognone เคยคิดจะเปลี่ยนไปใช้ NoSQL บ้างไหม?
มันน่าลอง!!
กติกาการใส่ลายเซ็นใต้ความเห็น
ปล.ผมไม่ใช่เจ้าของเว็บ ผมไม่ใช่ม็อด เป็นแค่สมาชิกธรรมดาครับ