Tìm hiểu về các hệ thống cơ sở dữ liệu lớn [1]
Hôm vừa rồi có dịp lên lầu 2 siêu thị BigC đường Tô Hiến Thành, tán dóc với các anh Minh, Khải, Long, Tấn, Tiến của một cty rất trẻ và rất thành công. Trong vòng 5 năm họ đã xây dựng được một cơ đồ ấn tượng. Đố các bạn biết là cty nào? Tôi hiểu rằng họ đang phải giải quyết các vấn đề rất thú vị về các hệ thống CSDL khổng lồ và rất động. Điều này nằm ngoài tầm hiểu biết của tôi, vì thế tôi quyết định tìm hiểu thêm về các hệ thống CSDL lớn. Chuỗi bài này để bác Đoàn Ai Hải viết là thích hợp, nhưng chắc phải có mỹ nhân quân đội nhân dân Trung Của mới dụ được ẩn sĩ xuống núi.
Do nằm ngoài tầm hiểu biết, chuỗi bài này sẽ không tránh khỏi các sai sót cơ bản, mong các gurus góp ý thêm cho. Nhắc đến CSDL thì tôi lại nhớ đến đồ án tốt nghiệp đại học năm cuối ở ĐHBK của mình. Hồi đó tôi làm một CSDL quản lý cty du lịch dùng MS Access mà sau nghĩ lại thấy rất tầm thường. Được 7 hay 8 điểm gì đó là may lắm rồi mà vẫn nghĩ mình đáng lẽ phải được nhiều điểm hơn. Đến khi apply học sau đại học vẫn còn ghi trong statements of purpose là muốn làm về CSDL mà thật sự chẳng hiều là mình muốn làm gì.
Trước hết, phải xem là các CSDL cỡ nào thì gọi là lớn. Và người ta dùng cái gì để quản lý và phân tích chúng. Ở đây có một danh sách các CSDL khổng lồ. Nhớ rằng một petabyte bằng một triệu gigabyte.
- eBay có khoảng 6 1/2 petabyte dữ liệu, chạy trên Greenplum và một mớ 2 1/2 petabyte dữ liệu kinh doanh trong một data warehouse chạy Teradata. Greenplum là một hệ thống CSDL song song khổng lồ (MPP-DBMS hay massively parallel processing DBMS) dựa trên nền PostgreSQL. Gần đây Greenplum còn thêm vào các mở rộng dựa trên MapReduce. Bài tới chúng ta sẽ tìm hiểu về MapReduce. Teradata là một MPP-DBMS khác.
- Facebook có datawarehouse cỡ 2 1/2 petabyte chạy trên nền Hadoop/Hive. Hadoop là một implementation của MapReduce.
- Wal-Mart, Bank of America, một công ty dịch vụ tài chính khác, và Dell cũng có các CSDL rất lớn chạy chạy trên Teradata.
- CSDL chứa web/network events của Yahoo chạy trên hệ thống họ tự phát triển, có lẽ bằng khoảng 1/6 kích thước của hệ thống Greenplum của eBay.
- Fox Interactive Media/MySpace có nhiều trăm terabytes chạy Greenplum và Aster Data nCluster.
- TEOCO có nhiều trăm terabytes chạy trên DATAllegro. Năm 2008 Microsoft mua DATAllegro, cho nên dù trước đó nó dựa trên Ingres nền Linux, bây giờ thì không biết có chuyển sang MS SQL Server không.
- Vertica có vài khách hàng với các CSDL cỡ 200 terabyte. Vertica do Michael Stonebraker đồng sáng lập.
- Sẽ rất thiếu sót khi nói về CSDL lớn mà không nói đến Google. Hệ thống phần mềm của Google quản trị dữ liệu bao gồm 4 thành phần chính: Chubby, Google File System, Bigtable và MapReduce. Chubby là một dịch vụ khóa cho một hệ thống phân bố. MapReduce ta sẽ tìm hiểu sau. Google File System là một distributed file system thiết kế cho scalability. Bigtable là một hệ thống CSDL phân bố gọn nhẹ. Chi tiết về phần cứng của Google nghe nói trong quyển sách của Stross là Google giấu giếm kỹ, dù ta biết sơ lược là nó có vài chục đến vài trăm ngàn servers trên PC chạy một phiên bản đã chỉnh sửa của Linux. Tôi không tìm được nguồn đáng tin cậy, có vẻ như Google chứa vài nghìn terabytes dữ liệu.
Về phần giá cả thì làm chủ một datawarehouse bao gồm giá ban đầu, giá bảo trì, và giá upgrade. Giá ban đầu nghe đâu từ 10K đến 150K đô la cho mỗi terabyte. Giá bảo trì chiếm đến khoảng 80% tổng chi phí.
Rất tình cờ là tờ CACM số 1 năm 2010 lại đăng một cuộc “cãi vã” nho nhỏ về MapReduce vs. MPP-DBMS. Có vẻ như hai phe ủng hộ MapReduce/Hadoop và phe ủng hộ MPP-RDBMS đã tranh luận và, quan trọng hơn, tranh thị trường từ vài năm đổ lại đây. Xem các bài này, và bài này, bắt đầu từ một bài blog của Stonebreaker và DeWitt mà bây giờ không còn tìm thấy nguyên bản ở website của họ (có hai bài: bài 1, bài 2), và sau đó bị phê phán nhiều. Có vài myths về MapReduce có thể xem ở đây.
Lần tới (không biết khi nào vì sắp Tết đến nơi) chúng ta sẽ tìm hiểu về MapReduce, sau đó tìm hiểu về MPP-DBMS, rồi bàn về cuộc chiến giữa chúng.

“Đố các bạn biết là cty nào?” – Em không biết thật!!!
Cảm ơn anh Hưng về chủ đề này. Từ lâu nhà em đã rất tò mò về các hệ thống dữ liệu lớn đằng sau các hãng. Nhưng có vẻ các hãng đều giữ bí mật công nghệ về các data center của họ. Và thường họ có sử dụng các công nghệ mở thì cũng đã được sửa đổi và tối ưu hóa theo nhu cầu của từng hãng.
Về hệ thống cơ sở dữ liệu đằng sau các ngân hàng lớn thì sao anh Hưng?
Những đảm bảo về nền tảng phần cứng, phần mềm, tính an toàn, ổn định, … như thế nào để có động đất lớn cũng vẫn đảm bảo được thông tin của khách hàng?
Zing.vn phải không anh Hưng?
Đây là trụ sở của VinaGame ấy mà.
Em cũng đam mê về CSDL chủ yếu vi thích cách thể hiện data và xử lý data 1 cách tối ưu, cũng như 1 phần của data mining để khai phá dữ lịêu:)
@Hieu: mình nghĩ không thể xây dựng 1 hệ thống mà ngay cả động đất lớn cũng bảo đảm an toàn thông tin khách hàng. Theo mình biết cách tốt nhất là backup data trên nhiều server trên các địa điểm khác nhau + replicate data trên 1 hệ thống distributed database được phân phối tại nhiều điểm. Như vậy thì 1 địa điểm chết vẫn bảo đảm các nơi khác vẫn chạy và tại địa điểm đó thì có thể kéo ngược dữ liệu về từ database nơi khác. Theo ý mình thì như thế đảm bảo hơn là tập trung công sức để thiết kế chống dc cả động đất. Hardware + server ở nước ngoài hình như rẻ hơn lương chuyên viên rất nhiều. Nếu có chỗ nào sai thì mọi người cứ đóng góp thêm
Chờ bài tới của bác ^^.
Anh chị Ho đã trả lời chính xác. Zing cũng thuộc VNG.
@Hieu: tôi không biết gì về infrastructures của các ngân hàng, nhất là các ngân hàng đầu tư. Theo tôi hiểu thì họ có một số vấn đề quan trọng khá “unique” so với các CSDL khác, ví dụ như vấn đề route các trade requests với minimum delay. Delays một vài giây đồng hồ có thể làm họ thất thu nhiều triệu USD.
@Hung & Hieu: Đúng như Hưng nói, các ngân hàng và hãng đầu tư hầu hết sử dụng các công nghệ đã được tối ưư hóa cho từng yêu cầu cụ thể. Ví dụ như để giải quyết routing trade requests, một hệ thống thường thấy sử dụng là: Gemfire của GemStone:
http://www.gemstone.com/products/gemfire
Tuy nhiên đằng sau các hệ thống này vẫn là các hệ thống DBMS thương mại như Oracle, SQL Server, DB2, Teradata, Vertica, etc…
Cảm ơn Duy về thông tin gemfire. Gần đây nghe một vài lãnh đạo của Goldman & Sachs nói là chiến lược của họ là in-house development.