PDA

View Full Version : Thảo luận cấu trúc Database Facebook



Thắm*
05-01-2012, 22:50
FB hiện tại có khoảng hơn 700 triệu người dùng. Nếu mỗi người dùng có khoảng 1000 friend, mỗi quan hệ friend ứng với 1 record trong CSDL. Như vậy sẽ có khoảng
700triệu * 1000 record = ???? record, cho bảng quan hệ friend. Một con số không tưởng! Vậy FB đã dùng cấu trúc CSDL thế nào để giải quyết vấn đề này?

Tiếp đến, phần Wall của FB, không thống kê được 1 ngày các Facebooker up lên bao nhiêu status. Mỗi người dùng sẽ tải thường xuyên cập nhật của 1000 friend, trong hàng tỉ tỉ status của người dùng. Giải pháp nào cho dữ liệu khổng lồ này?

Dưới đây là bảng CSDL được cho là của FB
http://www.webcosmoforums.com/attachments/databases/315d1268865988-facebook-database-schema-facebook-db.jpg

Xin mời mọi người cùng thảo luận!

scooby
06-01-2012, 08:05
Nó đâu dùng CSDL bình thường mà là CSDL phân tán.

Con số trên đã thấm tháp gì đâu so với Google. Nếu em quan tâm tìm hiểu, Google đã cho người dùng access một phần vào CSDL của nó (Big Table)

chiase.net
06-01-2012, 10:13
Hoàn toàn ko như những phép tính mà bạn đang tính đơn giản kia.
Huống hồ là nó ko dùng tập trung thì những phép tính kia hoàn toàn vô nghĩa :D

tuy phong
11-01-2012, 21:49
Facebook dùng cassandra thì làm gì có cái mô hình cơ sở dữ liệu quan hệ như thế kia được.

daylightstar
06-10-2012, 00:38
Có gì đâu mà kinh khủng, facebook có dùng CSDL tập trung và có quan hệ ràng buộc đâu mà có cái hình như của bạn trên cho link. Và các phép tính dựa trên ràng buộc hoàn toàn vô nghĩa. Facebook dùng CSDL phân tán trên > 100.000 máy chủ, CSDL chính của nó là HBase chạy trên hệ thống tập tin Hadoop ( nền tảng hệ thống tập tin phân tán). Ngoài ra nó dùng Cassandra cho hệ thống chỉ mục chỉ phục vụ cho tìm kiếm người dùng. Tóm lại, CSDL của facebook, yahoo, google, ebay, amazon... toàn chạy trên NoSQL. SQL Server của Microsoft, Ocrale, DB2 (IBM) không có cửa để xử lý hàng chục TB/h.

zmt264
06-10-2012, 02:20
FB hiện tại có khoảng hơn 700 triệu người dùng. Nếu mỗi người dùng có khoảng 1000 friend, mỗi quan hệ friend ứng với 1 record trong CSDL. Như vậy sẽ có khoảng
700triệu * 1000 record = ???? record, cho bảng quan hệ friend. Một con số không tưởng! Vậy FB đã dùng cấu trúc CSDL thế nào để giải quyết vấn đề này?

Tiếp đến, phần Wall của FB, không thống kê được 1 ngày các Facebooker up lên bao nhiêu status. Mỗi người dùng sẽ tải thường xuyên cập nhật của 1000 friend, trong hàng tỉ tỉ status của người dùng. Giải pháp nào cho dữ liệu khổng lồ này?

Dưới đây là bảng CSDL được cho là của FB
http://www.webcosmoforums.com/attachments/databases/315d1268865988-facebook-database-schema-facebook-db.jpg

Xin mời mọi người cùng thảo luận!

NẾU FB mà dùng RDBMS thì nó phải gấp 10 lần cái này :D (đừng click vào hình nhé, ko có hình chi tiết đâu)

http://imageshack.us/a/img840/8841/bigdb.png (http://www.youtube.com/playlist?list=PL84B33A7897350B76)

Kenvin1988
18-11-2012, 20:40
NoSQL, chư RDBMs thì sao chịu tải thấu...

zmt264
31-08-2013, 23:06
Tiếp đến, phần Wall của FB, không thống kê được 1 ngày các Facebooker up lên bao nhiêu status. Mỗi người dùng sẽ tải thường xuyên cập nhật của 1000 friend, trong hàng tỉ tỉ status của người dùng. Giải pháp nào cho dữ liệu khổng lồ này?



về giải pháp cho vụ này thì có thể tham khảo video clip sau:


http://www.youtube.com/watch?v=6gdgIoJrJK8