By mk Founder on Tag: Database, NoSQL, MongoDB
Database

ข่าวเก่าไปอาทิตย์นึงนะครับ แต่ยังใช้ได้อยู่สำหรับผู้ที่สนใจเรื่อง 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 ไปเมื่อต้นปี ของใหม่ในรุ่นนี้มีหลายอย่าง เช่น

  • ปรับปรุงประสิทธิภาพของการทำ concurrency โดยเฉพาะการล็อคฐานข้อมูลเพื่อเขียน (write lock) ซึ่งถ้ามีปัญหาจะทำให้เกิดอาการ page fault จนกระทบต่อประสิทธิภาพส่วนอื่นๆ ในรุ่น 2.0 ปรับปรุงเรื่องนี้ไปหลายจุด แต่ทาง MongoDB ก็บอกว่ายังปรับปรุงได้อีกมากในอนาคต
  • ปรับปรุงการทำดัชนีตาราง (index) ให้ขนาดของดัชนีเล็กลงอีก 25% ช่วยให้เก็บดัชนีไว้ในแรมได้มากขึ้น (ประสิทธิภาพย่อมดีขึ้น) และการค้นหาดัชนีจะเร็วกว่าเดิม 25% ในกรณีทั่วๆ ไป (กรณีอัพเกรดจากรุ่นเก่าจะต้องทำดัชนีใหม่จึงจะได้ประสิทธิภาพที่ว่านี้)
  • ปรับปรุงการทำ replica หรือการสำรองข้อมูลข้ามเครื่อง โดยเราสามารถกำหนดความสำคัญของสำเนาแต่ละชุดได้ เพื่อให้จัดระเบียบสำเนาข้อมูลได้ง่ายขึ้น

รายละเอียดอื่นๆ ดูได้จาก Release Notes

ที่มา - MongoDB, The Register

Hiring! บริษัทที่น่าสนใจ

CP AXTRA Public Company Limited - Lotus's company cover
CP AXTRA Public Company Limited - Lotus's
CP AXTRA Lotus's is revolutionizing the retail industry as a Retail Tech company.
Token X company cover
Token X
Blockchain, ICO, Tokenization, Digital Assets, and Financial Service
Carmen Software company cover
Carmen Software
Hotel Financial Solutions
Next Innovation (Thailand) Co., Ltd. company cover
Next Innovation (Thailand) Co., Ltd.
We are web design with consulting & engineering services driven the future stronger and flexibility.
United Information Highway Co., Ltd. company cover
United Information Highway Co., Ltd.
UIH is Thailand’s leading Digital Infrastructure and Solution Provider for Business
KKP Dime company cover
KKP Dime
KKP Dime บริษัทในเครือเกียรตินาคินภัทร
Kiatnakin Phatra Financial Group company cover
Kiatnakin Phatra Financial Group
Financial Service
Fastwork Technologies company cover
Fastwork Technologies
Fastwork.co เว็บไซต์ที่รวบรวม ฟรีแลนซ์ มืออาชีพจากหลากหลายสายงานไว้ในที่เดียวกัน
Thoughtworks Thailand company cover
Thoughtworks Thailand
Thoughtworks เป็นบริษัทที่ปรึกษาด้านเทคโนโยลีระดับโลกที่คว้า Great Place to Work 3 ปีซ้อน
Iron Software company cover
Iron Software
Iron Software is an American company providing a suite of .NET libraries by engineer for engineers.
CLEVERSE company cover
CLEVERSE
Cleverse is a Venture Builder. Our team builds several tech companies.
Nipa Cloud company cover
Nipa Cloud
#1 OpenStack cloud provider in Thailand with our own data center and software platform.
CDG GROUP company cover
CDG GROUP
Provider of IT solutions to public, state, and private sectors in Thailand for over 56 years
Bangmod Enterprise company cover
Bangmod Enterprise
The leader in Cloud Server and Hosting in Thailand.
CIMB THAI Bank company cover
CIMB THAI Bank
MOVING FORWARD WITH YOU - CIMB is the leading ASEAN Bank
Bangkok Bank company cover
Bangkok Bank
Bangkok Bank is one of Southeast Asia's largest regional banks, a market leader in business banking
Gofive company cover
Gofive
“We create world-class software experience”
KBTG - KASIKORN Business-Technology Group company cover
KBTG - KASIKORN Business-Technology Group
KBTG - "The Technology Company for Digital Business Innovation"
Siam Commercial Bank Public Company Limited company cover
Siam Commercial Bank Public Company Limited
"Let's start a brighter career future together"
Icon Framework co.,Ltd. company cover
Icon Framework co.,Ltd.
Global Standard Platform for Real Estate แพลตฟอร์มสำหรับธุรกิจอสังหาริมทรัพย์ครบวงจร มาตรฐานระดับโลก
REFINITIV company cover
REFINITIV
The Financial and Risk business of Thomson Reuters is now Refinitiv
H LAB company cover
H LAB
Re-engineering healthcare systems through intelligent platforms and system design.
LTMH TECH company cover
LTMH TECH
LTMH TECH มุ่งเน้นการพัฒนาผลิตภัณฑ์ที่สามารถช่วยพันธมิตรของเราให้บรรลุเป้าหมาย
Seven Peaks company cover
Seven Peaks
We Drive Digital Transformation
Wisesight (Thailand) Co., Ltd. company cover
Wisesight (Thailand) Co., Ltd.
The Best Choice For Handling Social Media · High Expertise in Social Data · Most Advanced and Secure
MOLOG Tech company cover
MOLOG Tech
We are Modern Logistic Platform, Specialize in WMS, OMS and TMS.
Data Wow Co.,Ltd company cover
Data Wow Co.,Ltd
We enable our clients to realize increased productivity by solving their most complex issues by Data
LINE Company Thailand company cover
LINE Company Thailand
LINE, the world's hottest mobile messaging platform, offers free text and voice messaging + Call
LINE MAN Wongnai company cover
LINE MAN Wongnai
Join our journey to becoming No.1 food platform in Thailand

ผมพยายามจะศึกษาและพยายามลองใช้อะไรก็ได้ที่มันไม่ใช่ relational database และพยายามลองใช้ NoSQL แต่ก็ยังจับหลักการไม่ได้เลยสักที ประกอบกับ document ช่างน้อยนัก (ภาษาไทย) และดูเหมือนกับว่าคนไทย ไม่ค่อยสน NoSQL กันมากเท่าไหร่ ยังคงยึดติดอยู่กับ relational database หลายๆ ตัว ทั้งๆ ที่ผมลองเขียน flow ดูแล้ว หลายๆ ส่วนถ้ากรณีเป็น web application เลี่ยงไปใช้ NoSQL จะไว (โคตร) มาก

ใครมี site อะไรเป็นแนวทางแนะนำ รบกวนด้วยนะครับ ผมจะได้ไปศึกษาเพิ่ม

อ่าน document จบก็ทำได้มากแล้วครับ

ถ้าติดตรงไหน ผมจะหาอ่านตาม stackoverflow ไม่ก็ blog หรือ google groups ต่างๆของคนทำเลย สิ่งที่เราสงสัยมักมีคนถามไว้แล้ว

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 ไม่สามารถตอบสนองได้ดีนักครับ

อย่างเช่นงานที่เป็นแนว Social ทั้งหลายที่ request/transaction เข้ามาถี่มากๆ การ normalize table แล้วค่อย join กลับแบบที่ RDBMS ทำกันนั้นจะมี overhead เยอะและทำให้ประสิทธิภาพด้อยลงค่อนข้างมากครับ
รวมทั้งปัญหา transaction lock ไปมาก็จะเยอะขึ้นมากด้วย

แนวคิด NoSQL มาตอบโจทย์ในงานเหล่านี้ได้ดีกว่าครับ คือไม่ต้อง normalize อะไรมันเลย มีอะไรมาจับยัดลงไปอย่างนั้น แล้วก็ให้ id มันไป
เวลาดึงก็ดึงจาก id ไปทั้งก้อน ที่หน้าเพจอยากแสดงอะไรก็ไปตัดเอาเอง

มันไม่มีอะไรที่ fit กับทุกสถานการณ์น่ะครับ
งาน Enterprise, Commercial นี่ยังไง NoSQL ก็ไม่ใช่ตัวเลือกที่ดีแน่ๆเมื่อเทียบกับ RDBMS
ในขณะเดียวกัน งานเว็บแบบ Social ทั้งหลาย RDBMS ก็ไม่ใช่ตัวเลือกที่ดีที่สุด (ไม่ได้บอกว่าทำไม่ได้นะครับ ทำได้แต่ว่ามีตัวอื่นที่ตำได้ดีกว่า)

ถ้าจะเอาเฉพาะ "หลักการ" จริงๆ ผมแนะนำให้อ่านเปเปอร์ของกูเกิล ที่เป็นคนเริ่มต้นแนวคิดพวกนี้ (แต่ไม่ได้ปล่อยซอฟต์แวร์ออกมาให้คนนอกใช้)

กลุ่มในเฟซบุ๊คที่ผมติดตามอยู่ก็ NoSQL Community

หนังสือยังต้องแกะกับภาษาอังกฤษเหมือนกันครับแต่ขอแนะนำที่สั้นกระชับและเข้าใจง่ายที่สุดก็ เล่มนี้ครับ มีให้โหลดเป็น PDF ฟรีด้วยครับ

หนังสือนอกนั้นคงพอหากันได้อยู่แล้ว ถ้ารู้อยู่แล้วก็ขออภัยด้วยนะครับ : )

haina Mon, 09/19/2011 - 01:45

mongodb ok เลยนะครับ แต่ตอนนี้กำลังจะหมดมุขทำ DBRef ของ Rails โดยใช้ dm-mongo-adapter T_T

ไม่ถึงขนาดนั้นหรอกครับ

ยังไง Concept ต่างๆก็ยังอิงมาจาก Relational Database อยู่ดี

รวมทั้งตลาด Enterprise ก็ยังใช้ Relational กันแทบจะทั้งหมดครับ ต่างกับตลาดกลุ่ม Social Web ที่จะเห็นของใหม่ๆเยอะกว่า

tekkasit Mon, 09/19/2011 - 15:47

โดยทั่วไปแล้ว 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

  • ไม่ได้แก้ทุกอย่าง แต่ละตัวมักจะออกมาแก้เฉพาะด้าน
  • ไม่ได้เอาไว้ทำแทน SQL ในส่วนที่มันถนัด เช่น OLAP, Data Cube และพวกที่เกี่ยวข้อกับงาน Business Reporting ทั่วๆ ไป
  • ส่วนใหญ่มองเป็น Document, Key-Value, Graph เท่าที่สังเกตมักจะเห็นอยู่ราวๆ นี้
  • ใช้ร่วมกันดีที่สุด เพื่อให้งานที่ SQL/NoSQL ต่างถนัดมารวมกัน

ตำราไทย คงไม่เปลี่ยน วันก่อนจะไปสอนหนังสือที่มหาวิทยาลัยแห่งหนึ่ง ต้องเปลี่ยนคอร์สเพราะคณบดีและอ.ที่สอนปี 3 CS ไม่รู้จักภาษา Ruby "มันมีด้วยเหรอ ใครจะใช้กัน"

จบแค่นี้ดีกว่า..

thegodth Tue, 09/20/2011 - 06:36

ถามจริง Blognone เคยคิดจะเปลี่ยนไปใช้ NoSQL บ้างไหม?

กติกาการใส่ลายเซ็นใต้ความเห็น

  • ลิงก์ในลายเซ็นจะต้องเป็น "เว็บส่วนตัว" ไม่ว่า twitter, blog, facebook ฯลฯ
  • การแนะนำบริการอื่นใด จะทำได้ผ่านทางการเขียนเป็นข่าวภายในส่วน Press Release
  • สมาชิกที่เป็นบัญชีหน่วยงาน บริการ ฯลฯ จะใส่ลายเซ็นเป็นลิงก์ได้ได้ต่อเมื่อได้รับความเห็นชอบจากผมโดยตรงเท่านั้น
  • ผมสงวนสิทธิ์ที่จะเห็นชอบหรือไม่เห็นชอบบริการใด
  • การฝ่าฝืนหลังจากประกาศนี้จะทำให้บัญชีถูกปิดและลบความเห็นออกทั้งหมด

ปล.ผมไม่ใช่เจ้าของเว็บ ผมไม่ใช่ม็อด เป็นแค่สมาชิกธรรมดาครับ

Apple
public://topics-images/apple_webp.png
SCB10X
public://topics-images/347823389_774095087711602_515970870797767330_n_webp.png
Windows 11
public://topics-images/hero-bloom-logo.jpg
Doom
public://topics-images/doom_logo.png
Huawei
public://topics-images/huawei_standard_logo.svg_.png
Threads
public://topics-images/threads-app-logo.svg_.png
Google Keep
public://topics-images/google_keep_2020_logo.svg_.png
Fortnite
public://topics-images/fortnitelogo.svg_.png
Instagram
public://topics-images/instagram_logo_2022.svg_.png
SCB
public://topics-images/9crhwyxv_400x400.jpg
Microsoft
public://topics-images/microsoft_logo.svg_.png
Basecamp
public://topics-images/bwpepdi0_400x400.jpg
Tinder
public://topics-images/hwizi8ny_400x400.jpg
Gemini
public://topics-images/google_gemini_logo.svg_.png
FTC
public://topics-images/seal_of_the_united_states_federal_trade_commission.svg_.png
Pinterest
public://topics-images/pinterest.png
Palantir
public://topics-images/-nzsuc6w_400x400.png