This page is READ-ONLY. It is generated from the old site.
All timestamps are relative to 2013 (when this page is generated).
If you are looking for TeX support, please go to VietTUG.org

Flowdock chuyển từ Cassandra sang MongoDB

Cassandra? MongoDB? All NoSQL
Added by over 2 years ago  »  Votes: 1/1

Ref.: Why Flockdock migrated from Cassandra to MongoDB.

Flowdock là ứng dụng web hỗ trợ cho các nhóm làm việc, thay thế cho việc sử dụng Skype, IRC, Campfire... Cơ sở dữ liệu của Flowdock ban đầu là Cassandra, đã mang lại một số trục trặc đáng kể
  • Các tiến trình GC (?) rơi vào vòng lặp vô tận khi cố gắng thu gọn dữ liệu (compact the data files), vì thế làm suy gỉam năng lực của hệ thống chung; để giải quyết, cách duy nhất có thể làm là khởi động lại cluster;
  • Trong các tuần của tháng 7, các tiến trình con của hệ thống Cassandra ngốn hết các tài nguyên được cấp.
  • Trước đây, khi nâng cấp từ bản 0.4 lên 0.5, Flockdock cũng buộc phải tắt Cassandra cluster, bởi vì mặc dù họ làm theo chỉ dẫn nâng cấp từ tài liệu của Cassandra, họ vẫn không thể ghi hết dữ liệu đệm vào ổ cứng. Kết cục là nhiều thông tin bị mất trong lúc hệ thống dữ liệu bị gián đoạn. Công việc bảo trì và xây dựng lại các chỉ mục (indices) đã kết thúc vào lúc... 4 giờ sáng.

Đội phát triển Flowdock quyết định thử thử với MongoDB và cuối cùng chuyển thành công qua hệ NoSQL sau này. Khởi nguồn cho quyết định này là ở việc MongoDB đang phát triển rất nhanh, và ở phiên bản mới nhất có các tính năng auto-sharding, replica có thể so sánh được với Cassandra.

Việc chuyển đổi bắt đầu bằng một ngày viết kịch bản để chuyển dữ liệu đang có từ hệ thống Cassandra qua MongoDB. Sau đó là một vài tuần chạy thử trước khi triển khai chính thức. Các điểm đáng chú ý nhất mà Flowdock chia sẻ với cộng đồng, là ngoài hiệu năng và độ bền cao của MongoDB, còn có

  1. Smart multikey indices: MongoDB đánh chỉ số cho mọi thứ mộ cách tự động, làm cho các truy vấn từ phía client đơn giản hơn;
  2. Queries: Cho dù thiết kế của hệ dữ liệu có đơn giản thế nào, bạn cũng sẽ phải đương đầu với các truy vấn phức tạp không-lường-trước. MongoDB cho phép xây dựng các truy vấp phức tạp trực tiếp từ console, gần giống với các hệ SQL đã biết. Sau đó, MongoDB sẽ thực hiện các phép dò tìm tuần tự -- nhờ đó truy vấn sẽ nhanh hơn và tiện lợi hơn việc xử lý hàng triệu dòng một cách thủ công từ phía máy khách;
  3. Map-Reduce: Hỗ trợ của MongoDB chưa hoàn hảo so với Cassandra, nhưng bù lại rất dễ dùng để hỗ trợ các phân tích;
  4. GridFS: Cung cấp cách để đọc / ghi các tập tin kích thước lớn từ cơ sở dữ liệu, bằng cách chia tập tin lớn thành các block 4MB (việc chia này diễn ra một cách trong suốt đối với người dùng.) (GridFS đã được hỗ trợ với Nginx và Lighttd.)

Tuy nhiên, không phải mọi thứ đều suôn sẻ. Vẫn còn đó vài trở ngại "nhỏ":

  1. Một lỗi khi xử lý các chuỗi định dạng JSON (Flowdock đã fix lỗi này)
  2. Các dấu chấm không được sử dụng trong khóa của tài liệu BSON.
  3. Tài liệu có kích thước không quá 4MB. Điều này cần lưu ý khi cập nhật dữ liệu
  4. Thêm bớt các node trong cluster không được dễ dàng như trong hệ thống Cassandra. Tuy nhiên, để ý là Cassandra lại có vấn đề với hệ thống cân bằng tải.

--
z (đọc và biên dịch lại để ... nhớ :)


Comments

Added by hoangtran over 2 years ago

Ủng hộ bác ghi chú thế này mặc dù cái này em chưa quan tâm nhiều, để lúc nào coi lại :-D

Added by over 2 years ago

Thanks :) Mình ghi lại để nhớ. Chứ để nguyên bài gốc tiếng Anh thì sau này phải coi lại, mất công lắm :)