SlideShare ist ein Scribd-Unternehmen logo
1 von 24
Một số ứng dụng của
REDIS, NoSQL
ở mạng xã hội Tamtay.vn




             Người trình bày: Bùi Ngọc Sơn
                   PHP day
                 Hà nội, 15-12-2012
Nội dung

1. Tamtay.vn
2. Redis & NoSQL @ Tamtay.vn
   1. Cache
   2. Chat
   3. Friends
   4. Activities Feed
3. Nhận xét
1. Tamtay.vn
•   Blog
•   Photo
•   Event
•   Game
•   …

SOCIAL
Content &
 Entertainment
1. Tamtay.vn
Mạng xã hội – Social network

• Từ năm 2007
• Đến tháng 11/2012
    • ~ 9m registered users
    • ~ 1m MAU
• Cấu thành từ 3 yếu tố
    1. Chủ thể (subjects): người dùng, blog, album ảnh, game …
    2. Quan hệ (relationships): bạn bè, hâm mộ, sở hữu …
    3. Hành động (activities): kết bạn, đăng ảnh, chơi game …
2. Redis & NoSQL
“Cặp đôi hoàn hảo”




> 1M người dùng

Memcache
2. Redis & NoSQL
10M người dùng?

•PHP: ok

•MySQL: Chậm chạp, nhiều ràng buộc

•Memcache: đơn giản!


=> NoSQL
2. Redis & NoSQL




Redis, HBase/Hadoop, Memcache
2. Redis & NoSQL


    Một số ứng dụng
2.1. Cache
•   Cache dữ liệu theo trang: danh sách album mới nhất
•   Memcache:
    •   Key: “album_list”
    •   Value: PHP array
        •   album_list[0] = array(item0, item1, … item 9);
        •   album_list[1] = array(item10, item11, … item 19);
        •   …

•   Vấn đề: không linh hoạt trong việc thêm/bớt/sửa cache
2.1. Cache
•   Redis LISTS
•   List “album_list”
    • Lấy page đầu tiên:
        • LRange(‘album_list’, 0, 9);
    • Sửa phần tử trong cache:
        • LSet(‘album_list, 7, $data);
    • Thêm dữ liệu: LPush, RPush
•   Mềm dẻo hơn memcache rất nhiều.
•   Tiết kiệm bộ nhớ cho PHP.
2.1. Cache
Benchmark:
•30 phần tử, chia làm 3 trang (mỗi trang 10 phần tử)
•Độ lớn mỗi phần tử: 1KB
•Thực hiện 1.000.000 lần việc lấy dữ liệu thuộc 1 trang ngẫu
nhiên (1-3)
•Thời gian trung bình:
   •   Redis: 0,36ms
   •   Memcache: 0,16ms
2.2. Chat
•   Instant Webchat
•   History
•   Offline messages


Vấn đề:
-   Realtime over HTTP
-   Presence System
-   Message channel
2.2. Chat
          Normal POST
            requests


               /init

                                   PHP Server
            /online_list

          /send_message
                                                           Redis
 Chat                                                      -Database
                           Proxy                           -Message Queue
Clients                                                    System (Pub-Sub)

                                    Tornado
           Long-polling            WebServer
             request
                                                Backend Scripts
            /updates                (Python)    -Presence System
                                                -Message Delivery System
2.2. Chat
Presence System
•Key: “<uid>_connection_count”
•Value: NULL | 0 | 1 | … | n |
•uid connected: INCR uid_connection_count
   •   1 == uid_connection_count => uid went online
•uid disconnected: DECR uid_connection_count
   •   0 == uid_connection_count
       ⇒ EXPIRE uid_connection_count 10s
       ⇒ uid_connection_count expired: uid went offline
2.2. Chat
Message Channel
•A connect đến server: SUBSCRIBE channel_A;
•B connect đến server: SUBSCRIBE channel_B;
⇒Mỗi channel có nhiều subscribers
       (mỗi user có nhiều connection đến server)

•A gửi tin cho B
   •   A: PUBLISH channel_B “nội dung chat”
   •   B(s) được notify: “nội dung chat” from A.
•Message Archive: SUBSCRIBE channel_*
2.3. Friends
Vấn đề:
•~ 20M quan hệ bạn bè
•> 2M users có ít nhất 1 bạn
•Nhiều bạn nhất: ~7K                  uid     friend_id    created
•MySQL table với 20M dòng                 1      2        1355130334
                                          2      1        1355130334
   •   Query theo uid: chậm
   •   Insert / delete: chậm (indexing)
2.3. Friends
Redis SETS
•Danh sách bạn của 1 user tương ứng với 1 SET:
      <uid>_friends
•Thêm bạn: SADD <uid>_friends friend_uid
•Bớt bạn: SREM <uid>_friends friend_uid
•Check bạn bè:
      SISMEMBER <uid>_friends friend_uid
•Danh sách bạn: SMEMBERS <uid>_friends
2.3. Friends
Tính năng mới:
•Bạn chung của A và B:
   •   SINTER A_friends B_friends
•Bạn của bạn
   •   SUNION (SMEMBERS A_friends)_friends
Benchmark:
•Lấy danh sách bạn của 1 user bất kỳ
   •   Redis: 0,59ms
   •   MySQL: 0.95ms
2.4. Feeds
Vấn đề:
•~1M MAU.
•Log hoạt động của người dùng: đăng blog, bình luận ảnh,
chơi game …
•~50M Activities log / tháng
•Feeds: danh sách hoạt động của bạn bè mình
•Mỗi người có trung bình 2,3 bạn
      => 2,3 x 50M = 115M feed / tháng!
•Nội dung từng feed khác nhau!
2.4. Feeds
Giải pháp:
•HBase:
   • Lưu trữ hàng tỷ dòng.
   • Cấu trúc dòng flexible.
•Table activities
                                   log_id                 content
   • log_id = uid_timestamp    10_1355130334   content:type = blog.comment
                                               content:blog_id = 1
                               11_1355130335   content:type = friend.create
                                               content:friend_id = 12
                               …               …
2.4. Feeds
• Table user_timelines

      Uid                   timeline
  5          timeline:1355130334 = 10_1355130334
             timeline:1355130335 = 11_1355130335
             …
             timeline:xxxxxxxxxxxx = uid_timestamp
  6          timeline:1355130334 = 10_1355130334
             timeline:1355130335 = 11_1355130335
             …
             timeline:yyyyyyyyyyy = uid_timestamp
  …          …
2.4. Feeds
Vấn đề:
•HBase:
   • Lưu trữ số lượng lớn: tốt
   • Đọc số lượng lớn (vài nghìn – vài triệu dòng): tốt
   • Đọc số lượng nhỏ: tệ!
Giải pháp: Redis
•Table user_timelines => mỗi user có 1 list
      <uid>_timeline
chứa danh sách các log_id theo thứ tự thời gian
3. Một số nhận
xét
Memcache
•Tốc độ tốt nhất
•Đơn giản và ít chức năng
Redis:
•Mềm dẻo. Có PHP Extension support
•Tương đối tốn RAM
⇒Đưa dữ liệu gì lên Redis?
HBase:
•Lưu trữ số lượng lớn. Độ ổn định cao
•Cấu trúc lưu trữ mềm dẻo => thay đổi tư duy thiết kế DB
•NoSQL: thay đổi tư duy lưu trữ & truy vấn dữ liệu.
THANK YOU
Contact: son.bui@tamtay.vn
Tamtay homepage: http://www.tamtay.vn/home/gemmountain
Công ty cổ phần Tamtay
43 làng Yên Phụ, Hà Nội

Weitere ähnliche Inhalte

Ähnlich wie 1 số ứng dụng của Redis, NoSQL tại MXH Tamtay.vn

Hadoop trong triển khai Big Data
Hadoop trong triển khai Big DataHadoop trong triển khai Big Data
Hadoop trong triển khai Big DataNguyễn Duy Nhân
 
ITLC HN 14 - Bizweb Microservices Architecture
ITLC HN 14  - Bizweb Microservices ArchitectureITLC HN 14  - Bizweb Microservices Architecture
ITLC HN 14 - Bizweb Microservices ArchitectureIT Expert Club
 
Slide 01-Web Application Overview (1).pdf
Slide 01-Web Application Overview (1).pdfSlide 01-Web Application Overview (1).pdf
Slide 01-Web Application Overview (1).pdfHuyVnh4
 
Chuong 1 tong quan về lập trình web động
Chuong 1 tong quan về lập trình web độngChuong 1 tong quan về lập trình web động
Chuong 1 tong quan về lập trình web độngTHPT Ngô Quyền
 
Nhom 16 big data
Nhom 16 big dataNhom 16 big data
Nhom 16 big dataDuy Phan
 
He thong chiu tai cao
He thong chiu tai caoHe thong chiu tai cao
He thong chiu tai caoĐông Đô
 
Báo cáo thực tập tuần - VPS
Báo cáo thực tập tuần - VPSBáo cáo thực tập tuần - VPS
Báo cáo thực tập tuần - VPSQuân Quạt Mo
 
Design a scalable social network: Problems and Solutions
Design a scalable social network: Problems and SolutionsDesign a scalable social network: Problems and Solutions
Design a scalable social network: Problems and SolutionsChau Thanh
 
Design a scalable social network: Problems and solutions
Design a scalable social network: Problems and solutionsDesign a scalable social network: Problems and solutions
Design a scalable social network: Problems and solutionsChau Thanh
 
Hệ thống quản lý và phân tích log tập trung elk stack
Hệ thống quản lý và phân tích log tập trung elk stackHệ thống quản lý và phân tích log tập trung elk stack
Hệ thống quản lý và phân tích log tập trung elk stacklaonap166
 
01a udpt tong quan internet, web
01a udpt   tong quan internet, web01a udpt   tong quan internet, web
01a udpt tong quan internet, webNguyen Son
 
Python Beginner Class day-15-networking
Python Beginner Class day-15-networkingPython Beginner Class day-15-networking
Python Beginner Class day-15-networkingKhánh Nguyễn
 
ITEC - Qua trinh phat trien he thong BigData
ITEC - Qua trinh phat trien he thong BigDataITEC - Qua trinh phat trien he thong BigData
ITEC - Qua trinh phat trien he thong BigDataIT Expert Club
 
Chuong 1 - Gioi Thieu.pptx
Chuong 1 - Gioi Thieu.pptxChuong 1 - Gioi Thieu.pptx
Chuong 1 - Gioi Thieu.pptxCngNguynPhmHuy
 
Slide Báo Cáo Cuối Kỳ
Slide Báo Cáo Cuối KỳSlide Báo Cáo Cuối Kỳ
Slide Báo Cáo Cuối KỳLy ND
 
Alfresco hệ quản lý nội dung doanh nghiệp nguồn mở
Alfresco   hệ quản lý nội dung doanh nghiệp nguồn mởAlfresco   hệ quản lý nội dung doanh nghiệp nguồn mở
Alfresco hệ quản lý nội dung doanh nghiệp nguồn mởHọc Huỳnh Bá
 

Ähnlich wie 1 số ứng dụng của Redis, NoSQL tại MXH Tamtay.vn (20)

Hadoop trong triển khai Big Data
Hadoop trong triển khai Big DataHadoop trong triển khai Big Data
Hadoop trong triển khai Big Data
 
Hadoop
HadoopHadoop
Hadoop
 
ITLC HN 14 - Bizweb Microservices Architecture
ITLC HN 14  - Bizweb Microservices ArchitectureITLC HN 14  - Bizweb Microservices Architecture
ITLC HN 14 - Bizweb Microservices Architecture
 
Bizweb Microservices Architecture
Bizweb Microservices ArchitectureBizweb Microservices Architecture
Bizweb Microservices Architecture
 
Slide 01-Web Application Overview (1).pdf
Slide 01-Web Application Overview (1).pdfSlide 01-Web Application Overview (1).pdf
Slide 01-Web Application Overview (1).pdf
 
Chuong 1 tong quan về lập trình web động
Chuong 1 tong quan về lập trình web độngChuong 1 tong quan về lập trình web động
Chuong 1 tong quan về lập trình web động
 
Nhom 16 big data
Nhom 16 big dataNhom 16 big data
Nhom 16 big data
 
He thong chiu tai cao
He thong chiu tai caoHe thong chiu tai cao
He thong chiu tai cao
 
Báo cáo thực tập tuần - VPS
Báo cáo thực tập tuần - VPSBáo cáo thực tập tuần - VPS
Báo cáo thực tập tuần - VPS
 
Design a scalable social network: Problems and Solutions
Design a scalable social network: Problems and SolutionsDesign a scalable social network: Problems and Solutions
Design a scalable social network: Problems and Solutions
 
Design a scalable social network: Problems and solutions
Design a scalable social network: Problems and solutionsDesign a scalable social network: Problems and solutions
Design a scalable social network: Problems and solutions
 
Hệ thống quản lý và phân tích log tập trung elk stack
Hệ thống quản lý và phân tích log tập trung elk stackHệ thống quản lý và phân tích log tập trung elk stack
Hệ thống quản lý và phân tích log tập trung elk stack
 
Zing
ZingZing
Zing
 
01a udpt tong quan internet, web
01a udpt   tong quan internet, web01a udpt   tong quan internet, web
01a udpt tong quan internet, web
 
Bao cao thuc tap vps
Bao cao thuc tap vpsBao cao thuc tap vps
Bao cao thuc tap vps
 
Python Beginner Class day-15-networking
Python Beginner Class day-15-networkingPython Beginner Class day-15-networking
Python Beginner Class day-15-networking
 
ITEC - Qua trinh phat trien he thong BigData
ITEC - Qua trinh phat trien he thong BigDataITEC - Qua trinh phat trien he thong BigData
ITEC - Qua trinh phat trien he thong BigData
 
Chuong 1 - Gioi Thieu.pptx
Chuong 1 - Gioi Thieu.pptxChuong 1 - Gioi Thieu.pptx
Chuong 1 - Gioi Thieu.pptx
 
Slide Báo Cáo Cuối Kỳ
Slide Báo Cáo Cuối KỳSlide Báo Cáo Cuối Kỳ
Slide Báo Cáo Cuối Kỳ
 
Alfresco hệ quản lý nội dung doanh nghiệp nguồn mở
Alfresco   hệ quản lý nội dung doanh nghiệp nguồn mởAlfresco   hệ quản lý nội dung doanh nghiệp nguồn mở
Alfresco hệ quản lý nội dung doanh nghiệp nguồn mở
 

Mehr von AiTi Education

AiTi Education Profile
AiTi Education ProfileAiTi Education Profile
AiTi Education ProfileAiTi Education
 
AiTi Education Software Testing Session 03
AiTi Education Software Testing Session 03AiTi Education Software Testing Session 03
AiTi Education Software Testing Session 03AiTi Education
 
AiTi Education Software Testing Session 02 b
AiTi Education Software Testing Session 02 bAiTi Education Software Testing Session 02 b
AiTi Education Software Testing Session 02 bAiTi Education
 
AiTi Education Software Testing Session 02 a
AiTi Education Software Testing Session 02 aAiTi Education Software Testing Session 02 a
AiTi Education Software Testing Session 02 aAiTi Education
 
AiTi Education Software Testing Session 01 b
AiTi Education Software Testing Session 01 bAiTi Education Software Testing Session 01 b
AiTi Education Software Testing Session 01 bAiTi Education
 
AiTi Education Software Testing Session 01 a
AiTi Education Software Testing Session 01 aAiTi Education Software Testing Session 01 a
AiTi Education Software Testing Session 01 aAiTi Education
 
Vietnam mobile internet_2014_mwork_vietnam_mobile_day
Vietnam mobile internet_2014_mwork_vietnam_mobile_dayVietnam mobile internet_2014_mwork_vietnam_mobile_day
Vietnam mobile internet_2014_mwork_vietnam_mobile_dayAiTi Education
 
[Vietnam Mobile Day 2014] Tăng doanh thu quảng cáo cho mobile site và ứng dụn...
[Vietnam Mobile Day 2014] Tăng doanh thu quảng cáo cho mobile site và ứng dụn...[Vietnam Mobile Day 2014] Tăng doanh thu quảng cáo cho mobile site và ứng dụn...
[Vietnam Mobile Day 2014] Tăng doanh thu quảng cáo cho mobile site và ứng dụn...AiTi Education
 
[Vietnam Mobile Day 2014] Mobile money - Xu hướng thanh toán nhỏ trên mobile ...
[Vietnam Mobile Day 2014] Mobile money - Xu hướng thanh toán nhỏ trên mobile ...[Vietnam Mobile Day 2014] Mobile money - Xu hướng thanh toán nhỏ trên mobile ...
[Vietnam Mobile Day 2014] Mobile money - Xu hướng thanh toán nhỏ trên mobile ...AiTi Education
 
[Vietnam Mobile Day 2014] Mobile kết nối thế giới số và thế giới thực và vai ...
[Vietnam Mobile Day 2014] Mobile kết nối thế giới số và thế giới thực và vai ...[Vietnam Mobile Day 2014] Mobile kết nối thế giới số và thế giới thực và vai ...
[Vietnam Mobile Day 2014] Mobile kết nối thế giới số và thế giới thực và vai ...AiTi Education
 
[Vietnam Mobile Day 2014] The new mobile marketing channel: Social Wifi Marke...
[Vietnam Mobile Day 2014] The new mobile marketing channel: Social Wifi Marke...[Vietnam Mobile Day 2014] The new mobile marketing channel: Social Wifi Marke...
[Vietnam Mobile Day 2014] The new mobile marketing channel: Social Wifi Marke...AiTi Education
 
[Vietnam Mobile Day 2014] Cá nhân hóa và xác định Khách hàng mục tiêu trong q...
[Vietnam Mobile Day 2014] Cá nhân hóa và xác định Khách hàng mục tiêu trong q...[Vietnam Mobile Day 2014] Cá nhân hóa và xác định Khách hàng mục tiêu trong q...
[Vietnam Mobile Day 2014] Cá nhân hóa và xác định Khách hàng mục tiêu trong q...AiTi Education
 
[Vietnam Mobile Day 2014] Chiến lược thu hút người dùng cho ứng dụng tại thị ...
[Vietnam Mobile Day 2014] Chiến lược thu hút người dùng cho ứng dụng tại thị ...[Vietnam Mobile Day 2014] Chiến lược thu hút người dùng cho ứng dụng tại thị ...
[Vietnam Mobile Day 2014] Chiến lược thu hút người dùng cho ứng dụng tại thị ...AiTi Education
 
[Vietnam Mobile Day 2014] Thanh toán mobile, hiện tại và xu hướng- Nguyễn Chi...
[Vietnam Mobile Day 2014] Thanh toán mobile, hiện tại và xu hướng- Nguyễn Chi...[Vietnam Mobile Day 2014] Thanh toán mobile, hiện tại và xu hướng- Nguyễn Chi...
[Vietnam Mobile Day 2014] Thanh toán mobile, hiện tại và xu hướng- Nguyễn Chi...AiTi Education
 
[Vietnam Mobile Day 2014] Thanh toán bằng thẻ ngân hàng trên mobile chưa bao ...
[Vietnam Mobile Day 2014] Thanh toán bằng thẻ ngân hàng trên mobile chưa bao ...[Vietnam Mobile Day 2014] Thanh toán bằng thẻ ngân hàng trên mobile chưa bao ...
[Vietnam Mobile Day 2014] Thanh toán bằng thẻ ngân hàng trên mobile chưa bao ...AiTi Education
 
[Vietnam Mobile Day 2014] How to build a mobile store app in 5 minutes - Ng...
[Vietnam Mobile Day 2014] How to build a mobile store app in 5 minutes - 	 Ng...[Vietnam Mobile Day 2014] How to build a mobile store app in 5 minutes - 	 Ng...
[Vietnam Mobile Day 2014] How to build a mobile store app in 5 minutes - Ng...AiTi Education
 
[Vietnam Mobile Day 2014] Touch the future of the web - Nguyễn Việt Anh - Cou...
[Vietnam Mobile Day 2014] Touch the future of the web - Nguyễn Việt Anh - Cou...[Vietnam Mobile Day 2014] Touch the future of the web - Nguyễn Việt Anh - Cou...
[Vietnam Mobile Day 2014] Touch the future of the web - Nguyễn Việt Anh - Cou...AiTi Education
 
[Vietnam Mobile Day 2014] Xu hướng trong Mobile Learning, 2014 - Nguyễn Thàn...
[Vietnam Mobile Day 2014] Xu hướng trong Mobile Learning, 2014  - Nguyễn Thàn...[Vietnam Mobile Day 2014] Xu hướng trong Mobile Learning, 2014  - Nguyễn Thàn...
[Vietnam Mobile Day 2014] Xu hướng trong Mobile Learning, 2014 - Nguyễn Thàn...AiTi Education
 
[Vietnam Mobile Day 2014] Toàn cảnh thị trường game smartphone Việt Nam 2013....
[Vietnam Mobile Day 2014] Toàn cảnh thị trường game smartphone Việt Nam 2013....[Vietnam Mobile Day 2014] Toàn cảnh thị trường game smartphone Việt Nam 2013....
[Vietnam Mobile Day 2014] Toàn cảnh thị trường game smartphone Việt Nam 2013....AiTi Education
 
[Vietnam Mobile Day 2014] Toàn cảnh thị trường game smartphone Việt Nam 2013....
[Vietnam Mobile Day 2014] Toàn cảnh thị trường game smartphone Việt Nam 2013....[Vietnam Mobile Day 2014] Toàn cảnh thị trường game smartphone Việt Nam 2013....
[Vietnam Mobile Day 2014] Toàn cảnh thị trường game smartphone Việt Nam 2013....AiTi Education
 

Mehr von AiTi Education (20)

AiTi Education Profile
AiTi Education ProfileAiTi Education Profile
AiTi Education Profile
 
AiTi Education Software Testing Session 03
AiTi Education Software Testing Session 03AiTi Education Software Testing Session 03
AiTi Education Software Testing Session 03
 
AiTi Education Software Testing Session 02 b
AiTi Education Software Testing Session 02 bAiTi Education Software Testing Session 02 b
AiTi Education Software Testing Session 02 b
 
AiTi Education Software Testing Session 02 a
AiTi Education Software Testing Session 02 aAiTi Education Software Testing Session 02 a
AiTi Education Software Testing Session 02 a
 
AiTi Education Software Testing Session 01 b
AiTi Education Software Testing Session 01 bAiTi Education Software Testing Session 01 b
AiTi Education Software Testing Session 01 b
 
AiTi Education Software Testing Session 01 a
AiTi Education Software Testing Session 01 aAiTi Education Software Testing Session 01 a
AiTi Education Software Testing Session 01 a
 
Vietnam mobile internet_2014_mwork_vietnam_mobile_day
Vietnam mobile internet_2014_mwork_vietnam_mobile_dayVietnam mobile internet_2014_mwork_vietnam_mobile_day
Vietnam mobile internet_2014_mwork_vietnam_mobile_day
 
[Vietnam Mobile Day 2014] Tăng doanh thu quảng cáo cho mobile site và ứng dụn...
[Vietnam Mobile Day 2014] Tăng doanh thu quảng cáo cho mobile site và ứng dụn...[Vietnam Mobile Day 2014] Tăng doanh thu quảng cáo cho mobile site và ứng dụn...
[Vietnam Mobile Day 2014] Tăng doanh thu quảng cáo cho mobile site và ứng dụn...
 
[Vietnam Mobile Day 2014] Mobile money - Xu hướng thanh toán nhỏ trên mobile ...
[Vietnam Mobile Day 2014] Mobile money - Xu hướng thanh toán nhỏ trên mobile ...[Vietnam Mobile Day 2014] Mobile money - Xu hướng thanh toán nhỏ trên mobile ...
[Vietnam Mobile Day 2014] Mobile money - Xu hướng thanh toán nhỏ trên mobile ...
 
[Vietnam Mobile Day 2014] Mobile kết nối thế giới số và thế giới thực và vai ...
[Vietnam Mobile Day 2014] Mobile kết nối thế giới số và thế giới thực và vai ...[Vietnam Mobile Day 2014] Mobile kết nối thế giới số và thế giới thực và vai ...
[Vietnam Mobile Day 2014] Mobile kết nối thế giới số và thế giới thực và vai ...
 
[Vietnam Mobile Day 2014] The new mobile marketing channel: Social Wifi Marke...
[Vietnam Mobile Day 2014] The new mobile marketing channel: Social Wifi Marke...[Vietnam Mobile Day 2014] The new mobile marketing channel: Social Wifi Marke...
[Vietnam Mobile Day 2014] The new mobile marketing channel: Social Wifi Marke...
 
[Vietnam Mobile Day 2014] Cá nhân hóa và xác định Khách hàng mục tiêu trong q...
[Vietnam Mobile Day 2014] Cá nhân hóa và xác định Khách hàng mục tiêu trong q...[Vietnam Mobile Day 2014] Cá nhân hóa và xác định Khách hàng mục tiêu trong q...
[Vietnam Mobile Day 2014] Cá nhân hóa và xác định Khách hàng mục tiêu trong q...
 
[Vietnam Mobile Day 2014] Chiến lược thu hút người dùng cho ứng dụng tại thị ...
[Vietnam Mobile Day 2014] Chiến lược thu hút người dùng cho ứng dụng tại thị ...[Vietnam Mobile Day 2014] Chiến lược thu hút người dùng cho ứng dụng tại thị ...
[Vietnam Mobile Day 2014] Chiến lược thu hút người dùng cho ứng dụng tại thị ...
 
[Vietnam Mobile Day 2014] Thanh toán mobile, hiện tại và xu hướng- Nguyễn Chi...
[Vietnam Mobile Day 2014] Thanh toán mobile, hiện tại và xu hướng- Nguyễn Chi...[Vietnam Mobile Day 2014] Thanh toán mobile, hiện tại và xu hướng- Nguyễn Chi...
[Vietnam Mobile Day 2014] Thanh toán mobile, hiện tại và xu hướng- Nguyễn Chi...
 
[Vietnam Mobile Day 2014] Thanh toán bằng thẻ ngân hàng trên mobile chưa bao ...
[Vietnam Mobile Day 2014] Thanh toán bằng thẻ ngân hàng trên mobile chưa bao ...[Vietnam Mobile Day 2014] Thanh toán bằng thẻ ngân hàng trên mobile chưa bao ...
[Vietnam Mobile Day 2014] Thanh toán bằng thẻ ngân hàng trên mobile chưa bao ...
 
[Vietnam Mobile Day 2014] How to build a mobile store app in 5 minutes - Ng...
[Vietnam Mobile Day 2014] How to build a mobile store app in 5 minutes - 	 Ng...[Vietnam Mobile Day 2014] How to build a mobile store app in 5 minutes - 	 Ng...
[Vietnam Mobile Day 2014] How to build a mobile store app in 5 minutes - Ng...
 
[Vietnam Mobile Day 2014] Touch the future of the web - Nguyễn Việt Anh - Cou...
[Vietnam Mobile Day 2014] Touch the future of the web - Nguyễn Việt Anh - Cou...[Vietnam Mobile Day 2014] Touch the future of the web - Nguyễn Việt Anh - Cou...
[Vietnam Mobile Day 2014] Touch the future of the web - Nguyễn Việt Anh - Cou...
 
[Vietnam Mobile Day 2014] Xu hướng trong Mobile Learning, 2014 - Nguyễn Thàn...
[Vietnam Mobile Day 2014] Xu hướng trong Mobile Learning, 2014  - Nguyễn Thàn...[Vietnam Mobile Day 2014] Xu hướng trong Mobile Learning, 2014  - Nguyễn Thàn...
[Vietnam Mobile Day 2014] Xu hướng trong Mobile Learning, 2014 - Nguyễn Thàn...
 
[Vietnam Mobile Day 2014] Toàn cảnh thị trường game smartphone Việt Nam 2013....
[Vietnam Mobile Day 2014] Toàn cảnh thị trường game smartphone Việt Nam 2013....[Vietnam Mobile Day 2014] Toàn cảnh thị trường game smartphone Việt Nam 2013....
[Vietnam Mobile Day 2014] Toàn cảnh thị trường game smartphone Việt Nam 2013....
 
[Vietnam Mobile Day 2014] Toàn cảnh thị trường game smartphone Việt Nam 2013....
[Vietnam Mobile Day 2014] Toàn cảnh thị trường game smartphone Việt Nam 2013....[Vietnam Mobile Day 2014] Toàn cảnh thị trường game smartphone Việt Nam 2013....
[Vietnam Mobile Day 2014] Toàn cảnh thị trường game smartphone Việt Nam 2013....
 

1 số ứng dụng của Redis, NoSQL tại MXH Tamtay.vn

  • 1. Một số ứng dụng của REDIS, NoSQL ở mạng xã hội Tamtay.vn Người trình bày: Bùi Ngọc Sơn PHP day Hà nội, 15-12-2012
  • 2. Nội dung 1. Tamtay.vn 2. Redis & NoSQL @ Tamtay.vn 1. Cache 2. Chat 3. Friends 4. Activities Feed 3. Nhận xét
  • 3. 1. Tamtay.vn • Blog • Photo • Event • Game • … SOCIAL Content & Entertainment
  • 4. 1. Tamtay.vn Mạng xã hội – Social network • Từ năm 2007 • Đến tháng 11/2012 • ~ 9m registered users • ~ 1m MAU • Cấu thành từ 3 yếu tố 1. Chủ thể (subjects): người dùng, blog, album ảnh, game … 2. Quan hệ (relationships): bạn bè, hâm mộ, sở hữu … 3. Hành động (activities): kết bạn, đăng ảnh, chơi game …
  • 5. 2. Redis & NoSQL “Cặp đôi hoàn hảo” > 1M người dùng Memcache
  • 6. 2. Redis & NoSQL 10M người dùng? •PHP: ok •MySQL: Chậm chạp, nhiều ràng buộc •Memcache: đơn giản! => NoSQL
  • 7. 2. Redis & NoSQL Redis, HBase/Hadoop, Memcache
  • 8. 2. Redis & NoSQL Một số ứng dụng
  • 9. 2.1. Cache • Cache dữ liệu theo trang: danh sách album mới nhất • Memcache: • Key: “album_list” • Value: PHP array • album_list[0] = array(item0, item1, … item 9); • album_list[1] = array(item10, item11, … item 19); • … • Vấn đề: không linh hoạt trong việc thêm/bớt/sửa cache
  • 10. 2.1. Cache • Redis LISTS • List “album_list” • Lấy page đầu tiên: • LRange(‘album_list’, 0, 9); • Sửa phần tử trong cache: • LSet(‘album_list, 7, $data); • Thêm dữ liệu: LPush, RPush • Mềm dẻo hơn memcache rất nhiều. • Tiết kiệm bộ nhớ cho PHP.
  • 11. 2.1. Cache Benchmark: •30 phần tử, chia làm 3 trang (mỗi trang 10 phần tử) •Độ lớn mỗi phần tử: 1KB •Thực hiện 1.000.000 lần việc lấy dữ liệu thuộc 1 trang ngẫu nhiên (1-3) •Thời gian trung bình: • Redis: 0,36ms • Memcache: 0,16ms
  • 12. 2.2. Chat • Instant Webchat • History • Offline messages Vấn đề: - Realtime over HTTP - Presence System - Message channel
  • 13. 2.2. Chat Normal POST requests /init PHP Server /online_list /send_message Redis Chat -Database Proxy -Message Queue Clients System (Pub-Sub) Tornado Long-polling WebServer request Backend Scripts /updates (Python) -Presence System -Message Delivery System
  • 14. 2.2. Chat Presence System •Key: “<uid>_connection_count” •Value: NULL | 0 | 1 | … | n | •uid connected: INCR uid_connection_count • 1 == uid_connection_count => uid went online •uid disconnected: DECR uid_connection_count • 0 == uid_connection_count ⇒ EXPIRE uid_connection_count 10s ⇒ uid_connection_count expired: uid went offline
  • 15. 2.2. Chat Message Channel •A connect đến server: SUBSCRIBE channel_A; •B connect đến server: SUBSCRIBE channel_B; ⇒Mỗi channel có nhiều subscribers (mỗi user có nhiều connection đến server) •A gửi tin cho B • A: PUBLISH channel_B “nội dung chat” • B(s) được notify: “nội dung chat” from A. •Message Archive: SUBSCRIBE channel_*
  • 16. 2.3. Friends Vấn đề: •~ 20M quan hệ bạn bè •> 2M users có ít nhất 1 bạn •Nhiều bạn nhất: ~7K uid friend_id created •MySQL table với 20M dòng 1 2 1355130334 2 1 1355130334 • Query theo uid: chậm • Insert / delete: chậm (indexing)
  • 17. 2.3. Friends Redis SETS •Danh sách bạn của 1 user tương ứng với 1 SET: <uid>_friends •Thêm bạn: SADD <uid>_friends friend_uid •Bớt bạn: SREM <uid>_friends friend_uid •Check bạn bè: SISMEMBER <uid>_friends friend_uid •Danh sách bạn: SMEMBERS <uid>_friends
  • 18. 2.3. Friends Tính năng mới: •Bạn chung của A và B: • SINTER A_friends B_friends •Bạn của bạn • SUNION (SMEMBERS A_friends)_friends Benchmark: •Lấy danh sách bạn của 1 user bất kỳ • Redis: 0,59ms • MySQL: 0.95ms
  • 19. 2.4. Feeds Vấn đề: •~1M MAU. •Log hoạt động của người dùng: đăng blog, bình luận ảnh, chơi game … •~50M Activities log / tháng •Feeds: danh sách hoạt động của bạn bè mình •Mỗi người có trung bình 2,3 bạn => 2,3 x 50M = 115M feed / tháng! •Nội dung từng feed khác nhau!
  • 20. 2.4. Feeds Giải pháp: •HBase: • Lưu trữ hàng tỷ dòng. • Cấu trúc dòng flexible. •Table activities log_id content • log_id = uid_timestamp 10_1355130334 content:type = blog.comment content:blog_id = 1 11_1355130335 content:type = friend.create content:friend_id = 12 … …
  • 21. 2.4. Feeds • Table user_timelines Uid timeline 5 timeline:1355130334 = 10_1355130334 timeline:1355130335 = 11_1355130335 … timeline:xxxxxxxxxxxx = uid_timestamp 6 timeline:1355130334 = 10_1355130334 timeline:1355130335 = 11_1355130335 … timeline:yyyyyyyyyyy = uid_timestamp … …
  • 22. 2.4. Feeds Vấn đề: •HBase: • Lưu trữ số lượng lớn: tốt • Đọc số lượng lớn (vài nghìn – vài triệu dòng): tốt • Đọc số lượng nhỏ: tệ! Giải pháp: Redis •Table user_timelines => mỗi user có 1 list <uid>_timeline chứa danh sách các log_id theo thứ tự thời gian
  • 23. 3. Một số nhận xét Memcache •Tốc độ tốt nhất •Đơn giản và ít chức năng Redis: •Mềm dẻo. Có PHP Extension support •Tương đối tốn RAM ⇒Đưa dữ liệu gì lên Redis? HBase: •Lưu trữ số lượng lớn. Độ ổn định cao •Cấu trúc lưu trữ mềm dẻo => thay đổi tư duy thiết kế DB •NoSQL: thay đổi tư duy lưu trữ & truy vấn dữ liệu.
  • 24. THANK YOU Contact: son.bui@tamtay.vn Tamtay homepage: http://www.tamtay.vn/home/gemmountain Công ty cổ phần Tamtay 43 làng Yên Phụ, Hà Nội