SlideShare a Scribd company logo
使用 PostgreSQL 及 MongoDB 從零開始建
置社群必備的按讚追蹤功能
Kewang, Funliday
Kewang
●
王慕羣 Kewang
●
Java / JavaScript
●
HBase / PostgreSQL / MongoDB / Elasticsearch
●
Git / DevOps
●
熱愛開源
Linkedin
Linkedin kewangtw
kewangtw
SlideShare
SlideShare kewang
kewang
Gmail
Gmail cpckewang
cpckewang
Facebook
Facebook Kewang 的資訊進化論
Kewang 的資訊進化論
devopsday taipei
devopsday taipei '17
'17
hadoopcon
hadoopcon '14 '15
'14 '15
jcconf
jcconf '16 '17 '18
'16 '17 '18
modernweb
modernweb '18 '19 '20
'18 '19 '20
GitHub
GitHub kewang
kewang
Funliday
Funliday kewang
kewang
coscup
coscup '20
'20
mopcon
mopcon '14 '20
'14 '20
使用 PostgreSQL 及 MongoDB 從零開始建置社群必備的按讚追蹤功能
4
分享的內容
5
這次會提到
6
這次會提到
1. PostgreSQL table 設計
7
這次會提到
1. PostgreSQL table 設計
2. Redis lock 應用
8
這次會提到
1. PostgreSQL table 設計
2. Redis lock 應用
3. Message Queue 發送通知
9
這次會提到
1. PostgreSQL table 設計
2. Redis lock 應用
3. Message Queue 發送通知
4. MongoDB collection 設計
10
這次不會提到
11
這次不會提到
1. Facebook API
12
這次不會提到
1. Facebook API
2. PostgreSQL 及 MongoDB 的維護及參數調校
13
開始
14
按讚前
15
按讚後
16
問題:如何設計資料庫?
17
最直覺的作法: table schema
18
最直覺的作法: table schema
19
最直覺的作法: table schema
20
最直覺的作法:按讚
21
最直覺的作法:按讚
22
最直覺的作法:如何取得按讚數?
23
最直覺的作法:如何取得按讚數?
24
比較好的作法: table schema
25
比較好的作法: table schema
26
比較好的作法: table schema
27
比較好的作法: table schema
28
比較好的作法:按讚
29
比較好的作法:按讚
30
比較好的作法:按讚
31
比較好的作法:如何取得按讚數?
32
比較好的作法:如何取得按讚數?
33
社群網路服務的資料庫設計方式
34
社群網路服務的資料庫設計方式
1.使用者的行為,看文遠大於發文
35
社群網路服務的資料庫設計方式
1.使用者的行為,看文遠大於發文
2.硬碟便宜,空間換取時間
36
社群網路服務的資料庫設計方式
1.使用者的行為,看文遠大於發文
2.硬碟便宜,空間換取時間
3.單一動作多 table 操作,需加上 transaction
37
問題:如何避免重複按讚?
38
使用 lock
39
Simple sequential diagram
client A Redis client A'
40
Simple sequential diagram
client A Redis client A'
acquire lock
41
Simple sequential diagram
client A Redis client A'
acquire lock
acquire success
42
Simple sequential diagram
client A Redis client A'
acquire lock
acquire success
acquire lock
43
Simple sequential diagram
client A Redis client A'
acquire lock
acquire success
acquire lock
acquire fail
44
Simple sequential diagram
client A Redis client A'
acquire lock
acquire success
acquire lock
acquire fail
write to DB
45
Simple sequential diagram
client A Redis client A'
acquire lock
acquire success
acquire lock
acquire fail
write to DB
release lock
46
Simple sequential diagram
client A Redis client A'
acquire lock
acquire success
acquire lock
acquire fail
write to DB
release lock
release success
47
Acquire lock
48
Acquire lock
49
Acquire lock
1. journalid_like : lock 時,同一篇 journal 僅允許按讚一次
2. like_memberid : lock 時,同一人僅允許按讚一次
3. journalid_like_memberid : lock 時,同一篇 journal 僅允許同一人按讚一次
50
Acquire lock
Set if key doesn’t exist
1. journalid_like : lock 時,同一篇 journal 僅允許按讚一次
2. like_memberid : lock 時,同一人僅允許按讚一次
3. journalid_like_memberid : lock 時,同一篇 journal 僅允許同一人按讚一次
51
Acquire lock
Set expire time
Set if key doesn’t exist
1. journalid_like : lock 時,同一篇 journal 僅允許按讚一次
2. like_memberid : lock 時,同一人僅允許按讚一次
3. journalid_like_memberid : lock 時,同一篇 journal 僅允許同一人按讚一次
52
Release lock
53
問題:如何發送 App 通知?
54
Architecture diagram - wrong way
client A server
FCM
client B
55
Architecture diagram - wrong way
client A server
FCM
like req.
client B
56
Architecture diagram - wrong way
client A server
FCM
like req.
client B
FCM req.
57
Architecture diagram - wrong way
client A server
FCM
like req.
like res.
client B
FCM req.
58
Architecture diagram - wrong way
client A server
FCM
like req.
like res.
client B send push
FCM req.
59
Architecture diagram - right way
60
Architecture diagram - right way
client A server MQ
FCM
client B
worker
61
Architecture diagram - right way
client A server MQ
FCM
like req.
client B
worker
62
Architecture diagram - right way
client A server MQ
FCM
like req.
produce job
client B
worker
63
Architecture diagram - right way
client A server MQ
FCM
like req.
produce job
like res.
client B
worker
64
Architecture diagram - right way
client A server MQ
FCM
like req.
produce job
like res. consume job
client B
worker
65
Architecture diagram - right way
client A server MQ
FCM
like req.
produce job
like res. consume job
client B
worker
FCM req.
66
Architecture diagram - right way
client A server MQ
FCM
like req.
produce job
like res. consume job
client B send push
worker
FCM req.
67
Architecture diagram - MQ
68
Architecture diagram - MQ
producer broker consumer
69
Architecture diagram - MQ
producer broker consumer
job
70
Architecture diagram - MQ
producer broker consumer
job job
71
Implementation
72
Implementation
73
Implementation
74
問題:如何讓所有內容都可以按讚?
75
改變資料庫設計
76
改變資料庫設計
77
改變資料庫設計
78
改變資料庫設計
79
共用 API
80
共用 API
81
共用 API
82
共用 API
83
MQ 有多種 producer 及 consumer
84
MQ 有多種 producer 及 consumer
trip producer
product producer
journal producer
85
MQ 有多種 producer 及 consumer
broker
trip producer
product producer
journal producer
86
MQ 有多種 producer 及 consumer
broker trip consumer
trip producer
product producer
journal producer
product consumer
journal consumer
87
問題:如何追蹤使用者?
88
需求
89
需求
1.追蹤後要通知被追蹤者
90
需求
1.追蹤後要通知被追蹤者
2.在首頁能看到被追蹤者近兩週的公開文章
91
需求
1.追蹤後要通知被追蹤者
2.在首頁能看到被追蹤者近兩週的公開文章
3.被追蹤者發文後要即時通知追蹤者
92
追蹤使用者就是對使用者按讚
93
追蹤使用者就是對使用者按讚
94
追蹤使用者就是對使用者按讚
95
首頁 layout 設計方式
96
首頁 layout 設計方式
feature list
popular journal
following
97
首頁 layout 設計方式
feature list
popular journal
following
98
首頁 layout 設計方式
feature list
popular journal
following
存在 MongoDB
99
首頁 layout 設計方式
feature list
popular journal
following
個人化
100
following layout 設計方式
feature list
popular journal
following
101
following layout 設計方式
feature list
popular journal
following
102
following layout 設計方式
feature list
popular journal
following
每日定期清理
103
被追蹤者發文後要即時通知追蹤者
104
被追蹤者發文後要即時通知追蹤者
105
被追蹤者發文後要即時通知追蹤者
106
番外篇: MQ 的應用
107
MQ 的應用
108
MQ 的應用
1.較耗時的工作
109
MQ 的應用
1.較耗時的工作
2.非即時性的工作
110
MQ 的應用
1.較耗時的工作
2.非即時性的工作
3.儲存記錄的工作
111
MQ 不是想用就能用
112
MQ 不是想用就能用
1.業務邏輯要調整
113
MQ 不是想用就能用
1.業務邏輯要調整
2.畫面要調整
114
MQ 不是想用就能用
1.業務邏輯要調整
2.畫面要調整
3.使用者要能忍受非即時性
115
舉例:建立索引
116
舉例:建立索引
117
舉例:建立索引
118
舉例:建立索引
選擇「公開」後,可以在
站內及站外被搜尋到
119
舉例:建立索引
client A server MQ
Elasticsearch worker
120
舉例:建立索引
client A server MQ
Elasticsearch
public req.
worker
121
舉例:建立索引
client A server MQ
Elasticsearch
public req.
produce job
worker
122
舉例:建立索引
client A server MQ
Elasticsearch
public req.
produce job
public res.
worker
123
舉例:建立索引
client A server MQ
Elasticsearch
public req.
produce job
public res. consume job
worker
124
舉例:建立索引
client A server MQ
Elasticsearch
public req.
produce job
public res. consume job
worker
indexing content
125
舉例:計算行程經過的城市
126
舉例:計算行程經過的城市
127
舉例:計算行程經過的城市
景點加入行程後,可以列
出該行程經過的所有城市
128
舉例:計算行程經過的城市
client A server MQ
PostgreSQL worker
129
舉例:計算行程經過的城市
client A server MQ
PostgreSQL
add POI req.
worker
130
舉例:計算行程經過的城市
client A server MQ
PostgreSQL
add POI req.
produce job
worker
131
舉例:計算行程經過的城市
client A server MQ
PostgreSQL
add POI req.
produce job
add POI res.
worker
132
舉例:計算行程經過的城市
client A server MQ
PostgreSQL
add POI req.
produce job
add POI res. consume job
worker
133
舉例:計算行程經過的城市
client A server MQ
PostgreSQL
add POI req.
produce job
add POI res. consume job
worker
query cities from trip
134
Conclusion
135
Conclusion
136
Conclusion
1.為了讓系統變快,反正規化是必要之惡
137
Conclusion
1.為了讓系統變快,反正規化是必要之惡
2.慎選 lock key
138
Conclusion
1.為了讓系統變快,反正規化是必要之惡
2.慎選 lock key
3.善用 MQ 可以加快系統效能
139
工商時間
140
工商時間
https://hahow.in/cr/kewang-backend https://bit.ly/3AueOxt
141
References
1. Distributed locks with Redis
2. The Architecture Twitter Uses To Deal With 150M Active Users,
300K QPS, A 22 MB/S Firehose, And Send Tweets In Under 5 Se
conds
3. BullMQ - Premium Message Queue for NodeJS based on Redis
142

More Related Content

What's hot (20)

Secure your app with keycloak
Secure your app with keycloakSecure your app with keycloak
Secure your app with keycloak
Guy Marom
 
Oracle Exadata Management with Oracle Enterprise Manager
Oracle Exadata Management with Oracle Enterprise ManagerOracle Exadata Management with Oracle Enterprise Manager
Oracle Exadata Management with Oracle Enterprise Manager
Enkitec
 
My first 90 days with ClickHouse.pdf
My first 90 days with ClickHouse.pdfMy first 90 days with ClickHouse.pdf
My first 90 days with ClickHouse.pdf
Alkin Tezuysal
 
6 Nines: How Stripe keeps Kafka highly-available across the globe with Donny ...
6 Nines: How Stripe keeps Kafka highly-available across the globe with Donny ...6 Nines: How Stripe keeps Kafka highly-available across the globe with Donny ...
6 Nines: How Stripe keeps Kafka highly-available across the globe with Donny ...
HostedbyConfluent
 
Introduction to machine learning
Introduction to machine learningIntroduction to machine learning
Introduction to machine learning
Ganesh Satpute
 
Blockchain - HyperLedger Fabric
Blockchain - HyperLedger FabricBlockchain - HyperLedger Fabric
Blockchain - HyperLedger Fabric
Araf Karsh Hamid
 
データセンターの作り方
データセンターの作り方データセンターの作り方
データセンターの作り方
Tadashi Sugita
 
Sharding
ShardingSharding
Sharding
MongoDB
 
Introduction to Apache ZooKeeper | Big Data Hadoop Spark Tutorial | CloudxLab
Introduction to Apache ZooKeeper | Big Data Hadoop Spark Tutorial | CloudxLabIntroduction to Apache ZooKeeper | Big Data Hadoop Spark Tutorial | CloudxLab
Introduction to Apache ZooKeeper | Big Data Hadoop Spark Tutorial | CloudxLab
CloudxLab
 
Database migration from Sybase ASE to PostgreSQL @2013.pgconf.eu
Database migration from Sybase ASE to PostgreSQL @2013.pgconf.euDatabase migration from Sybase ASE to PostgreSQL @2013.pgconf.eu
Database migration from Sybase ASE to PostgreSQL @2013.pgconf.eu
aldaschwede80
 
Vulkan introduction
Vulkan introductionVulkan introduction
Vulkan introduction
Jiahan Su
 
Blockchain Technology & Capstone Project
Blockchain Technology & Capstone ProjectBlockchain Technology & Capstone Project
Blockchain Technology & Capstone Project
Kevin Zheng
 
Kafka High Availability in multi data center setup with floating Observers wi...
Kafka High Availability in multi data center setup with floating Observers wi...Kafka High Availability in multi data center setup with floating Observers wi...
Kafka High Availability in multi data center setup with floating Observers wi...
HostedbyConfluent
 
NLP techniques for log analysis
NLP techniques for log analysisNLP techniques for log analysis
NLP techniques for log analysis
Jacob Perkins
 
俺の俺による俺のための App Service Environment
俺の俺による俺のための App Service Environment俺の俺による俺のための App Service Environment
俺の俺による俺のための App Service Environment
Sunao Tomita
 
Oracle WebLogic Server製品紹介資料(2020年/3月版)
Oracle WebLogic Server製品紹介資料(2020年/3月版)Oracle WebLogic Server製品紹介資料(2020年/3月版)
Oracle WebLogic Server製品紹介資料(2020年/3月版)
オラクルエンジニア通信
 
Oracle GoldenGateでの資料採取(トラブル時に採取すべき資料)
Oracle GoldenGateでの資料採取(トラブル時に採取すべき資料)Oracle GoldenGateでの資料採取(トラブル時に採取すべき資料)
Oracle GoldenGateでの資料採取(トラブル時に採取すべき資料)
オラクルエンジニア通信
 
新機能によるデータベースシステムの改善ポイント
新機能によるデータベースシステムの改善ポイント新機能によるデータベースシステムの改善ポイント
新機能によるデータベースシステムの改善ポイント
オラクルエンジニア通信
 
GPT : Generative Pre-Training Model
GPT : Generative Pre-Training ModelGPT : Generative Pre-Training Model
GPT : Generative Pre-Training Model
Zimin Park
 
Privacy-Preserving Authentication, Another Reason to Care about Zero-Knowledg...
Privacy-Preserving Authentication, Another Reason to Care about Zero-Knowledg...Privacy-Preserving Authentication, Another Reason to Care about Zero-Knowledg...
Privacy-Preserving Authentication, Another Reason to Care about Zero-Knowledg...
Clare Nelson, CISSP, CIPP-E
 
Secure your app with keycloak
Secure your app with keycloakSecure your app with keycloak
Secure your app with keycloak
Guy Marom
 
Oracle Exadata Management with Oracle Enterprise Manager
Oracle Exadata Management with Oracle Enterprise ManagerOracle Exadata Management with Oracle Enterprise Manager
Oracle Exadata Management with Oracle Enterprise Manager
Enkitec
 
My first 90 days with ClickHouse.pdf
My first 90 days with ClickHouse.pdfMy first 90 days with ClickHouse.pdf
My first 90 days with ClickHouse.pdf
Alkin Tezuysal
 
6 Nines: How Stripe keeps Kafka highly-available across the globe with Donny ...
6 Nines: How Stripe keeps Kafka highly-available across the globe with Donny ...6 Nines: How Stripe keeps Kafka highly-available across the globe with Donny ...
6 Nines: How Stripe keeps Kafka highly-available across the globe with Donny ...
HostedbyConfluent
 
Introduction to machine learning
Introduction to machine learningIntroduction to machine learning
Introduction to machine learning
Ganesh Satpute
 
Blockchain - HyperLedger Fabric
Blockchain - HyperLedger FabricBlockchain - HyperLedger Fabric
Blockchain - HyperLedger Fabric
Araf Karsh Hamid
 
データセンターの作り方
データセンターの作り方データセンターの作り方
データセンターの作り方
Tadashi Sugita
 
Sharding
ShardingSharding
Sharding
MongoDB
 
Introduction to Apache ZooKeeper | Big Data Hadoop Spark Tutorial | CloudxLab
Introduction to Apache ZooKeeper | Big Data Hadoop Spark Tutorial | CloudxLabIntroduction to Apache ZooKeeper | Big Data Hadoop Spark Tutorial | CloudxLab
Introduction to Apache ZooKeeper | Big Data Hadoop Spark Tutorial | CloudxLab
CloudxLab
 
Database migration from Sybase ASE to PostgreSQL @2013.pgconf.eu
Database migration from Sybase ASE to PostgreSQL @2013.pgconf.euDatabase migration from Sybase ASE to PostgreSQL @2013.pgconf.eu
Database migration from Sybase ASE to PostgreSQL @2013.pgconf.eu
aldaschwede80
 
Vulkan introduction
Vulkan introductionVulkan introduction
Vulkan introduction
Jiahan Su
 
Blockchain Technology & Capstone Project
Blockchain Technology & Capstone ProjectBlockchain Technology & Capstone Project
Blockchain Technology & Capstone Project
Kevin Zheng
 
Kafka High Availability in multi data center setup with floating Observers wi...
Kafka High Availability in multi data center setup with floating Observers wi...Kafka High Availability in multi data center setup with floating Observers wi...
Kafka High Availability in multi data center setup with floating Observers wi...
HostedbyConfluent
 
NLP techniques for log analysis
NLP techniques for log analysisNLP techniques for log analysis
NLP techniques for log analysis
Jacob Perkins
 
俺の俺による俺のための App Service Environment
俺の俺による俺のための App Service Environment俺の俺による俺のための App Service Environment
俺の俺による俺のための App Service Environment
Sunao Tomita
 
Oracle WebLogic Server製品紹介資料(2020年/3月版)
Oracle WebLogic Server製品紹介資料(2020年/3月版)Oracle WebLogic Server製品紹介資料(2020年/3月版)
Oracle WebLogic Server製品紹介資料(2020年/3月版)
オラクルエンジニア通信
 
Oracle GoldenGateでの資料採取(トラブル時に採取すべき資料)
Oracle GoldenGateでの資料採取(トラブル時に採取すべき資料)Oracle GoldenGateでの資料採取(トラブル時に採取すべき資料)
Oracle GoldenGateでの資料採取(トラブル時に採取すべき資料)
オラクルエンジニア通信
 
新機能によるデータベースシステムの改善ポイント
新機能によるデータベースシステムの改善ポイント新機能によるデータベースシステムの改善ポイント
新機能によるデータベースシステムの改善ポイント
オラクルエンジニア通信
 
GPT : Generative Pre-Training Model
GPT : Generative Pre-Training ModelGPT : Generative Pre-Training Model
GPT : Generative Pre-Training Model
Zimin Park
 
Privacy-Preserving Authentication, Another Reason to Care about Zero-Knowledg...
Privacy-Preserving Authentication, Another Reason to Care about Zero-Knowledg...Privacy-Preserving Authentication, Another Reason to Care about Zero-Knowledg...
Privacy-Preserving Authentication, Another Reason to Care about Zero-Knowledg...
Clare Nelson, CISSP, CIPP-E
 

Similar to 使用 PostgreSQL 及 MongoDB 從零開始建置社群必備的按讚追蹤功能 (20)

Mysql HandleSocket技术在SNS Feed存储中的应用
Mysql HandleSocket技术在SNS Feed存储中的应用Mysql HandleSocket技术在SNS Feed存储中的应用
Mysql HandleSocket技术在SNS Feed存储中的应用
iammutex
 
Scaling Offline Database Usage On GCP @ Dcard
Scaling Offline Database Usage On GCP @ DcardScaling Offline Database Usage On GCP @ Dcard
Scaling Offline Database Usage On GCP @ Dcard
Jui An Huang (黃瑞安)
 
Nosql及其主要产品简介
Nosql及其主要产品简介Nosql及其主要产品简介
Nosql及其主要产品简介
振林 谭
 
老司機帶你上手 PostgreSQL 關聯式資料庫系統
老司機帶你上手 PostgreSQL 關聯式資料庫系統老司機帶你上手 PostgreSQL 關聯式資料庫系統
老司機帶你上手 PostgreSQL 關聯式資料庫系統
Mu Chun Wang
 
RESTful API Design
RESTful API DesignRESTful API Design
RESTful API Design
Amigo 陳兆祥
 
Douban qcon2009 beijing
Douban qcon2009 beijingDouban qcon2009 beijing
Douban qcon2009 beijing
drewz lin
 
优酷 Web网站架构案例分析
优酷   Web网站架构案例分析优酷   Web网站架构案例分析
优酷 Web网站架构案例分析
George Ang
 
Youku arch qcon2009_beijing
Youku arch qcon2009_beijingYouku arch qcon2009_beijing
Youku arch qcon2009_beijing
drewz lin
 
Key value store
Key value storeKey value store
Key value store
xuanhan863
 
Nosql三步曲
Nosql三步曲Nosql三步曲
Nosql三步曲
84zhu
 
美丽说的架构发展与变迁 New
美丽说的架构发展与变迁 New美丽说的架构发展与变迁 New
美丽说的架构发展与变迁 New
翀 刘
 
Mongo db 特性
Mongo db 特性Mongo db 特性
Mongo db 特性
Hermes Chiang
 
MOPCON 2012 - 網路服務從 K 到 M
MOPCON 2012 - 網路服務從 K 到 MMOPCON 2012 - 網路服務從 K 到 M
MOPCON 2012 - 網路服務從 K 到 M
ericpi Bi
 
如何在有限資源下實現十年的後端服務演進
如何在有限資源下實現十年的後端服務演進如何在有限資源下實現十年的後端服務演進
如何在有限資源下實現十年的後端服務演進
Mu Chun Wang
 
Introduction to CodeIgniter
Introduction to CodeIgniterIntroduction to CodeIgniter
Introduction to CodeIgniter
Chun-Kai Wang
 
Bluemix Node-Red Part I
Bluemix Node-Red Part IBluemix Node-Red Part I
Bluemix Node-Red Part I
Joseph Chang
 
Another Introduce to Redis
Another Introduce to RedisAnother Introduce to Redis
Another Introduce to Redis
jiaqing zheng
 
Qcon 2011:Beansdb 的设计与实现
Qcon 2011:Beansdb 的设计与实现Qcon 2011:Beansdb 的设计与实现
Qcon 2011:Beansdb 的设计与实现
Davies Liu
 
MySQL 網路參考架構
MySQL 網路參考架構MySQL 網路參考架構
MySQL 網路參考架構
郁萍 王
 
Res tful api design tw-2.0
Res tful api design tw-2.0Res tful api design tw-2.0
Res tful api design tw-2.0
昀陞 李
 
Mysql HandleSocket技术在SNS Feed存储中的应用
Mysql HandleSocket技术在SNS Feed存储中的应用Mysql HandleSocket技术在SNS Feed存储中的应用
Mysql HandleSocket技术在SNS Feed存储中的应用
iammutex
 
Scaling Offline Database Usage On GCP @ Dcard
Scaling Offline Database Usage On GCP @ DcardScaling Offline Database Usage On GCP @ Dcard
Scaling Offline Database Usage On GCP @ Dcard
Jui An Huang (黃瑞安)
 
Nosql及其主要产品简介
Nosql及其主要产品简介Nosql及其主要产品简介
Nosql及其主要产品简介
振林 谭
 
老司機帶你上手 PostgreSQL 關聯式資料庫系統
老司機帶你上手 PostgreSQL 關聯式資料庫系統老司機帶你上手 PostgreSQL 關聯式資料庫系統
老司機帶你上手 PostgreSQL 關聯式資料庫系統
Mu Chun Wang
 
Douban qcon2009 beijing
Douban qcon2009 beijingDouban qcon2009 beijing
Douban qcon2009 beijing
drewz lin
 
优酷 Web网站架构案例分析
优酷   Web网站架构案例分析优酷   Web网站架构案例分析
优酷 Web网站架构案例分析
George Ang
 
Youku arch qcon2009_beijing
Youku arch qcon2009_beijingYouku arch qcon2009_beijing
Youku arch qcon2009_beijing
drewz lin
 
Key value store
Key value storeKey value store
Key value store
xuanhan863
 
Nosql三步曲
Nosql三步曲Nosql三步曲
Nosql三步曲
84zhu
 
美丽说的架构发展与变迁 New
美丽说的架构发展与变迁 New美丽说的架构发展与变迁 New
美丽说的架构发展与变迁 New
翀 刘
 
MOPCON 2012 - 網路服務從 K 到 M
MOPCON 2012 - 網路服務從 K 到 MMOPCON 2012 - 網路服務從 K 到 M
MOPCON 2012 - 網路服務從 K 到 M
ericpi Bi
 
如何在有限資源下實現十年的後端服務演進
如何在有限資源下實現十年的後端服務演進如何在有限資源下實現十年的後端服務演進
如何在有限資源下實現十年的後端服務演進
Mu Chun Wang
 
Introduction to CodeIgniter
Introduction to CodeIgniterIntroduction to CodeIgniter
Introduction to CodeIgniter
Chun-Kai Wang
 
Bluemix Node-Red Part I
Bluemix Node-Red Part IBluemix Node-Red Part I
Bluemix Node-Red Part I
Joseph Chang
 
Another Introduce to Redis
Another Introduce to RedisAnother Introduce to Redis
Another Introduce to Redis
jiaqing zheng
 
Qcon 2011:Beansdb 的设计与实现
Qcon 2011:Beansdb 的设计与实现Qcon 2011:Beansdb 的设计与实现
Qcon 2011:Beansdb 的设计与实现
Davies Liu
 
MySQL 網路參考架構
MySQL 網路參考架構MySQL 網路參考架構
MySQL 網路參考架構
郁萍 王
 
Res tful api design tw-2.0
Res tful api design tw-2.0Res tful api design tw-2.0
Res tful api design tw-2.0
昀陞 李
 
Ad

More from Mu Chun Wang (20)

深入淺出 autocomplete
深入淺出 autocomplete深入淺出 autocomplete
深入淺出 autocomplete
Mu Chun Wang
 
你畢業後要任職的軟體業到底都在做些什麼事
你畢業後要任職的軟體業到底都在做些什麼事你畢業後要任職的軟體業到底都在做些什麼事
你畢業後要任職的軟體業到底都在做些什麼事
Mu Chun Wang
 
網路服務就是一連串搜尋的集合體
網路服務就是一連串搜尋的集合體網路服務就是一連串搜尋的集合體
網路服務就是一連串搜尋的集合體
Mu Chun Wang
 
Funliday 新創生活甘苦談
Funliday 新創生活甘苦談Funliday 新創生活甘苦談
Funliday 新創生活甘苦談
Mu Chun Wang
 
大解密!用 PostgreSQL 提升 350 倍的 Funliday 推薦景點計算速度
大解密!用 PostgreSQL 提升 350 倍的 Funliday 推薦景點計算速度大解密!用 PostgreSQL 提升 350 倍的 Funliday 推薦景點計算速度
大解密!用 PostgreSQL 提升 350 倍的 Funliday 推薦景點計算速度
Mu Chun Wang
 
如何使用 iframe 製作一個易於更新及更安全的前端套件
如何使用 iframe 製作一個易於更新及更安全的前端套件如何使用 iframe 製作一個易於更新及更安全的前端套件
如何使用 iframe 製作一個易於更新及更安全的前端套件
Mu Chun Wang
 
pppr - 解決 JavaScript 無法被搜尋引擎正確索引的問題
pppr - 解決 JavaScript 無法被搜尋引擎正確索引的問題pppr - 解決 JavaScript 無法被搜尋引擎正確索引的問題
pppr - 解決 JavaScript 無法被搜尋引擎正確索引的問題
Mu Chun Wang
 
模糊也是一種美 - 從 BlurHash 探討前後端上傳圖片架構
模糊也是一種美 - 從 BlurHash 探討前後端上傳圖片架構模糊也是一種美 - 從 BlurHash 探討前後端上傳圖片架構
模糊也是一種美 - 從 BlurHash 探討前後端上傳圖片架構
Mu Chun Wang
 
Google Maps 開始收費了該怎麼辦?
Google Maps 開始收費了該怎麼辦?Google Maps 開始收費了該怎麼辦?
Google Maps 開始收費了該怎麼辦?
Mu Chun Wang
 
Git 可以做到的事
Git 可以做到的事Git 可以做到的事
Git 可以做到的事
Mu Chun Wang
 
那些大家常忽略的 Cache-Control
那些大家常忽略的 Cache-Control那些大家常忽略的 Cache-Control
那些大家常忽略的 Cache-Control
Mu Chun Wang
 
如何利用 OpenAPI 及 WebHooks 讓老舊的網路服務也可程式化
如何利用 OpenAPI 及 WebHooks 讓老舊的網路服務也可程式化如何利用 OpenAPI 及 WebHooks 讓老舊的網路服務也可程式化
如何利用 OpenAPI 及 WebHooks 讓老舊的網路服務也可程式化
Mu Chun Wang
 
如何與全世界分享你的 Library
如何與全世界分享你的 Library如何與全世界分享你的 Library
如何與全世界分享你的 Library
Mu Chun Wang
 
如何與 Git 優雅地在樹上唱歌
如何與 Git 優雅地在樹上唱歌如何與 Git 優雅地在樹上唱歌
如何與 Git 優雅地在樹上唱歌
Mu Chun Wang
 
API Blueprint - API 文件規範的三大領頭之一
API Blueprint - API 文件規範的三大領頭之一API Blueprint - API 文件規範的三大領頭之一
API Blueprint - API 文件規範的三大領頭之一
Mu Chun Wang
 
團體共同協作與版本管理 - 01認識共同協作
團體共同協作與版本管理 - 01認識共同協作團體共同協作與版本管理 - 01認識共同協作
團體共同協作與版本管理 - 01認識共同協作
Mu Chun Wang
 
Git 經驗分享
Git 經驗分享Git 經驗分享
Git 經驗分享
Mu Chun Wang
 
手把手教你如何串接 Log 到各種網路服務
手把手教你如何串接 Log 到各種網路服務手把手教你如何串接 Log 到各種網路服務
手把手教你如何串接 Log 到各種網路服務
Mu Chun Wang
 
你有想過畢業九年後的你會變什麼樣子嗎?
你有想過畢業九年後的你會變什麼樣子嗎?你有想過畢業九年後的你會變什麼樣子嗎?
你有想過畢業九年後的你會變什麼樣子嗎?
Mu Chun Wang
 
HR Search - 輕鬆管理面試者
HR Search - 輕鬆管理面試者HR Search - 輕鬆管理面試者
HR Search - 輕鬆管理面試者
Mu Chun Wang
 
深入淺出 autocomplete
深入淺出 autocomplete深入淺出 autocomplete
深入淺出 autocomplete
Mu Chun Wang
 
你畢業後要任職的軟體業到底都在做些什麼事
你畢業後要任職的軟體業到底都在做些什麼事你畢業後要任職的軟體業到底都在做些什麼事
你畢業後要任職的軟體業到底都在做些什麼事
Mu Chun Wang
 
網路服務就是一連串搜尋的集合體
網路服務就是一連串搜尋的集合體網路服務就是一連串搜尋的集合體
網路服務就是一連串搜尋的集合體
Mu Chun Wang
 
Funliday 新創生活甘苦談
Funliday 新創生活甘苦談Funliday 新創生活甘苦談
Funliday 新創生活甘苦談
Mu Chun Wang
 
大解密!用 PostgreSQL 提升 350 倍的 Funliday 推薦景點計算速度
大解密!用 PostgreSQL 提升 350 倍的 Funliday 推薦景點計算速度大解密!用 PostgreSQL 提升 350 倍的 Funliday 推薦景點計算速度
大解密!用 PostgreSQL 提升 350 倍的 Funliday 推薦景點計算速度
Mu Chun Wang
 
如何使用 iframe 製作一個易於更新及更安全的前端套件
如何使用 iframe 製作一個易於更新及更安全的前端套件如何使用 iframe 製作一個易於更新及更安全的前端套件
如何使用 iframe 製作一個易於更新及更安全的前端套件
Mu Chun Wang
 
pppr - 解決 JavaScript 無法被搜尋引擎正確索引的問題
pppr - 解決 JavaScript 無法被搜尋引擎正確索引的問題pppr - 解決 JavaScript 無法被搜尋引擎正確索引的問題
pppr - 解決 JavaScript 無法被搜尋引擎正確索引的問題
Mu Chun Wang
 
模糊也是一種美 - 從 BlurHash 探討前後端上傳圖片架構
模糊也是一種美 - 從 BlurHash 探討前後端上傳圖片架構模糊也是一種美 - 從 BlurHash 探討前後端上傳圖片架構
模糊也是一種美 - 從 BlurHash 探討前後端上傳圖片架構
Mu Chun Wang
 
Google Maps 開始收費了該怎麼辦?
Google Maps 開始收費了該怎麼辦?Google Maps 開始收費了該怎麼辦?
Google Maps 開始收費了該怎麼辦?
Mu Chun Wang
 
Git 可以做到的事
Git 可以做到的事Git 可以做到的事
Git 可以做到的事
Mu Chun Wang
 
那些大家常忽略的 Cache-Control
那些大家常忽略的 Cache-Control那些大家常忽略的 Cache-Control
那些大家常忽略的 Cache-Control
Mu Chun Wang
 
如何利用 OpenAPI 及 WebHooks 讓老舊的網路服務也可程式化
如何利用 OpenAPI 及 WebHooks 讓老舊的網路服務也可程式化如何利用 OpenAPI 及 WebHooks 讓老舊的網路服務也可程式化
如何利用 OpenAPI 及 WebHooks 讓老舊的網路服務也可程式化
Mu Chun Wang
 
如何與全世界分享你的 Library
如何與全世界分享你的 Library如何與全世界分享你的 Library
如何與全世界分享你的 Library
Mu Chun Wang
 
如何與 Git 優雅地在樹上唱歌
如何與 Git 優雅地在樹上唱歌如何與 Git 優雅地在樹上唱歌
如何與 Git 優雅地在樹上唱歌
Mu Chun Wang
 
API Blueprint - API 文件規範的三大領頭之一
API Blueprint - API 文件規範的三大領頭之一API Blueprint - API 文件規範的三大領頭之一
API Blueprint - API 文件規範的三大領頭之一
Mu Chun Wang
 
團體共同協作與版本管理 - 01認識共同協作
團體共同協作與版本管理 - 01認識共同協作團體共同協作與版本管理 - 01認識共同協作
團體共同協作與版本管理 - 01認識共同協作
Mu Chun Wang
 
手把手教你如何串接 Log 到各種網路服務
手把手教你如何串接 Log 到各種網路服務手把手教你如何串接 Log 到各種網路服務
手把手教你如何串接 Log 到各種網路服務
Mu Chun Wang
 
你有想過畢業九年後的你會變什麼樣子嗎?
你有想過畢業九年後的你會變什麼樣子嗎?你有想過畢業九年後的你會變什麼樣子嗎?
你有想過畢業九年後的你會變什麼樣子嗎?
Mu Chun Wang
 
HR Search - 輕鬆管理面試者
HR Search - 輕鬆管理面試者HR Search - 輕鬆管理面試者
HR Search - 輕鬆管理面試者
Mu Chun Wang
 
Ad

使用 PostgreSQL 及 MongoDB 從零開始建置社群必備的按讚追蹤功能