PDA

View Full Version : CSDL nào cho Mạng xã hội?



*Thắm
02-03-2010, 18:27
Mình đang làm 1 web về mạng xã hội tương tự Facebook, My space, Yahoo 360..v..v.. Sau khi hoạt động với quy mô 10 nghìn thành viên, mạng hoạt động khá trơn tru với CSDL mysql kết hợp PHP.

Nhưng khi số lượng thành viên gia tăng. Số record quá nhiều khiến truy vấn nặng nề. Đặt giả thiết là câu truy vấn đã tối ưu, nhưng với lượng thành viên sau này sẽ càng nhiều, truy vấn sẽ ngày càng chậm đi với ngừng đấy record.

Vậy có giải pháp nào cho CSDL Mạng xã hội? Facebook và Myspace là 2 mạng xã hội lớn nhất hiện nay. Họ đã xử lý CSDL theo các nào? Như mình được biết thì có kiểu CSDL phân tán và tập trung, nhưng thực sự chưa nắm rõ.
Ai biết về vấn đề này xin được giúp đỡ.
Cám ơn.

bancankhong
02-03-2010, 18:53
Chang co giai phap nao hay don gian 1 co the

Shellingfox
02-03-2010, 19:31
Tìm hiều về MapReduce, một mã nguồn implement tốt cái này là Hadoop, Google cũng có một bằng sáng chế cho cái này (Họ tự làm ra một mã nguồn riêng cũng implement pattern này) và họ cũng sử dụng Hadoop để lưu giữ những cái khác. Facebook, Google, Yahoo họ cũng sử dụng Hadoop (Xem thông tin tại trang chủ của dự án). Theo mình biết hiện giờ ở VN chưa có trang nào sử dụng công nghệ này (Thấy mấy bác bên Vinagame đang nghiên cứu, nhưng mới chỉ dừng ở mức nghiên cứu thôi).

Năm ngoái Hadoop đã lập kỉ lục thế giới với việc sort 1 database 1PB trong 16 tiếng (Bình quân là ~18.20GB/s).

longvnit
02-03-2010, 20:08
Nếu bạn sử dụng MySQL bạn nên tìm hiểu một số khái niệm sau: MySQL Partition, MySQL Sharding, good luck!

*Thắm
02-03-2010, 20:44
Nếu bạn sử dụng MySQL bạn nên tìm hiểu một số khái niệm sau: MySQL Partition, MySQL Sharding, good luck!

Cám ơn bạn, bạn có tài liệu Tiếng Việt về 2 vấn đề trên không? Mình tìm toàn thấy Eng. Mong bạn chia sẻ.

longvnit
02-03-2010, 20:52
Phần này mình không có tài liệu tiếng Việt, còn tiếng Anh bạn và chính trang của MySQL là hay nhất.

ngoc_viet08
02-03-2010, 21:00
Cám ơn bạn, bạn có tài liệu Tiếng Việt về 2 vấn đề trên không? Mình tìm toàn thấy Eng. Mong bạn chia sẻ.
muốn làm mấy dự án lớn mà tài liệu tiếng anh ko đọc được thì ko có ý kiến nữa :D

*Thắm
05-03-2010, 17:22
Thế con Mysql Cluster? Có ai biết về vấn đề này không?

longvnit
05-03-2010, 18:43
MySQL Cluster chủ yếu để chia tải, còn về để xử lý database lớn thì bạn đọc các khái niệm trên mình đã nêu. Ngoài ra còn sử dụng rất nhiều các hệ thống phụ trợ như MySQL Proxy, Caching ...

lucky-boy
05-03-2010, 23:18
Bác longvnit nói đúng đó, bạn nên tham khảo những cái bác ấy nói (Mysql Parition, caching...) để có thể scale 1 web với 1 db lớn. Ngoài ra còn nhiều vấn đề khác nữa.

hkervn2001
05-03-2010, 23:48
Tìm hiều về MapReduce, một mã nguồn implement tốt cái này là Hadoop, Google cũng có một bằng sáng chế cho cái này (Họ tự làm ra một mã nguồn riêng cũng implement pattern này) và họ cũng sử dụng Hadoop để lưu giữ những cái khác. Facebook, Google, Yahoo họ cũng sử dụng Hadoop (Xem thông tin tại trang chủ của dự án). Theo mình biết hiện giờ ở VN chưa có trang nào sử dụng công nghệ này (Thấy mấy bác bên Vinagame đang nghiên cứu, nhưng mới chỉ dừng ở mức nghiên cứu thôi).

Năm ngoái Hadoop đã lập kỉ lục thế giới với việc sort 1 database 1PB trong 16 tiếng (Bình quân là ~18.20GB/s).

MySQL không phải là giải pháp đủ để bạn giải quyết vấn đề đâu. Giải pháp Hadoop này chính là hướng để các bạn nghiên cứu. Bạn có thể đọc trên trang của Hadoop, thì trong đây có rất nhiều thứ: MapReduce, HDFS, HBase,... thì HBase chính là database đó.
Tuy nhiên vấn đề là HBase không phải relation database, không có khái niệm relational nên phải thay đổi hết cách suy nghĩ, các code từ trước giờ (Đừng hòng có khóa ngoại nhá, query cũng không đơn giản như SQL nữa). Ngoài ra, phải nghiên cứu MapReduce, vì mọi thứ đều dựa trên MapReduce.
Để hướng tới số lượng hàng chục triệu user, số lượng record tính theo hàng peta thì phải nghiên cứu giải pháp này.

Mình cũng đã định làm social network nhưng tự thấy mình dùng Hadoop chưa nhuần nên thôi. Hix. Bạn có khả năng tài chính và thời gian thì nên đầu tư hẳn cái này.

Chúc bạn thành công.

vothanhtung91
22-10-2012, 21:10
member *Thắm có thể chia sẽ thêm về cơ sở dữ liệu mạng xã hội không?
Hãy cho minh biết về hướng phân tích để tạo một csdl mạng xã hội (nếu rộng lượng share csdl cũng được).
vì vấn đề mạng xã hội mình mới đi vào phân tích csdl nên chưa hiểu lắm,
keke, mong bạn chỉ giáo

sincos
23-10-2012, 00:42
Các bác cho mình hỏi. Chả đâu xa, ngay cái ddth này thôi, nhìn cái id của thread này đã là 340K và số comment đã khoảng 4 triệu.

Chỉ với mysql sao vẫn trơn chu.

tranlubu
27-10-2012, 11:57
Góp ý đôi chút với bác vì tui đã thấy không ít bác đầu đen nhà mình làm liều theo kiểu "đối với người Việt Nam không có gì là không thể".

Rất nhiều cái là "không thể" đối với người Việt mình mà mạng xã hội là 1 ví dụ. Bác làm các mạng xã hội có tính văn nghệ thì chạy ngon lành rùi, nhưng lên đến lên đến triệu thành viên là ngỏm hoặc sống đời thực vật, sống không bằng chết.

Ở đây ngoài vấn đề công nghệ (nhất là khi lên đến tỉ người xài) còn có vấn đề Obama. Bác có biết đám google, facebook có hệ thống phần cứng, phần mềm và data center ở tầm cỡ nào không? Bọn này lúc mới sinh cũng trần truồng như mình thui, cái khác là sau khi có được kha khá thành viên rồi thì chúng đổ Obama vào như đổ nước lã, xây dựng những data farm khổng lồ, thuê toàn các nhà khoa học hàng đầu thế giới để thiết kế các algorithms cho hệ thống phần mềm, hệt thống dữ liệu của chúng. Cỡ như người Việt mình thì chẳng là cái thá gì (có thể có cụ tự ái), đã thế lại chỉ lèo tèo 1 vài mạng, thậm chí chỉ 1 mạng - như trường hợp của bác - thì nên cơm cháo gì.

Bác ngẫm mà xem nếu dễ thì nhà nước ta đã có vài cái tầm facebook rồi chứ đâu phải để các cụ cứ phải ra nghị quyết này nghị quyết kia để quản lý đám trai hoi tối ngày bàn chuyện nhạy cảm trên facebook.

quangtiennew
30-10-2012, 12:53
dùng oracle đi bác. Mấy ngân hàng hay xài cái này.

ndaidong
06-11-2012, 17:03
Thường thì người ta dùng cùng lúc nhiều loại database để bổ sung lẫn nhau. Chỗ công ty mình mới release 1 mạng xã hội trong đó dùng Neo4j để xử lý các truy vấn quan hệ của users, thấy cũng nhiều tiện lợi. Neo4j là 1 graph database phát triển trên Java, mạnh về xử lý relationship giữa các node. Nhưng ngoài ra cũng phải dùng thêm MongoDB, MySQL hỗ trợ.

bobolove223
19-11-2012, 13:57
Bạn nên chuyển sang hướng mới đi. Thay vì bạn dùng cơ sở dữ liệu quan hệ thì bạn chuyển sang dùng NoSql, tài liệu về NoSql thì rất nhiều. Bạn có thể dùng MongoDB, MemCache, CouchBase, Raven, Redis,... Các trang mạng xã hội đa số đều dùng NoSql

zmt264
23-11-2012, 02:57
Góp ý đôi chút với bác vì tui đã thấy không ít bác đầu đen nhà mình làm liều theo kiểu "đối với người Việt Nam không có gì là không thể".

Rất nhiều cái là "không thể" đối với người Việt mình mà mạng xã hội là 1 ví dụ. Bác làm các mạng xã hội có tính văn nghệ thì chạy ngon lành rùi, nhưng lên đến lên đến triệu thành viên là ngỏm hoặc sống đời thực vật, sống không bằng chết.

Ở đây ngoài vấn đề công nghệ (nhất là khi lên đến tỉ người xài) còn có vấn đề Obama. Bác có biết đám google, facebook có hệ thống phần cứng, phần mềm và data center ở tầm cỡ nào không? Bọn này lúc mới sinh cũng trần truồng như mình thui, cái khác là sau khi có được kha khá thành viên rồi thì chúng đổ Obama vào như đổ nước lã, xây dựng những data farm khổng lồ, thuê toàn các nhà khoa học hàng đầu thế giới để thiết kế các algorithms cho hệ thống phần mềm, hệt thống dữ liệu của chúng. Cỡ như người Việt mình thì chẳng là cái thá gì (có thể có cụ tự ái), đã thế lại chỉ lèo tèo 1 vài mạng, thậm chí chỉ 1 mạng - như trường hợp của bác - thì nên cơm cháo gì.

Bác ngẫm mà xem nếu dễ thì nhà nước ta đã có vài cái tầm facebook rồi chứ đâu phải để các cụ cứ phải ra nghị quyết này nghị quyết kia để quản lý đám trai hoi tối ngày bàn chuyện nhạy cảm trên facebook.

phải cái là "điếc không sợ súng" :D, không biết thì mơ mộng nhiều, mơ mộng nhiều rồi vỡ mộng, nhưng dù sao thì cũng vì mơ mộng và vỡ mộng mà học hỏi thêm được nhiều. đó là mặt tích cực :D

ndaidong
24-11-2012, 17:54
Nói chung database chiếm 1 vai trò quan trọng, nhưng chưa phải là tất cả. Hệ thống big data, multi user chủ yếu trông nhờ vào system architecture và algorithm. Server khủng, kiến trúc tốt, thuật toán chính xác, load balancing, replicating, caching đâu vào đó, thì MySQL cũng ok thôi.

Tuy nhiên theo quan điểm của mình, với social network system, relationship giữa các member là nhân tố cốt lõi. Muốn xử lý các truy vấn liên quan đến quan hệ người dùng như friend, friend of friend, followers... ở tốc độ cao thì nên dùng graph database. Nó là liều thuốc đặc trị đấy.