mongodb x business
TRANSCRIPT
emin = Emotion Intelligence 気持ちを解するテクノロジーの探究
Emotion Intelligenceは、「無意識の行動から、
人の気持ちの機微を解する知性」を、人工知能および機械学習の応用技術を用いて
開発し、ビジネスに応用しています。
ZenClerk 当社が開発した予測エンジン「Emotion I/O」が、ウェブサイト上のユーザーの無意識の行動をリアルタイムで検知、解析します。ユーザーの購買行動における迷いを察知し、最適なタイミングでオファーを提示する「コンバージョン・オプティマイザー」が、ECサイトのCVRを最適化します。
正しい技術はビジネスの要件を満たす
よく受ける相談
□□使わないの?
△△がつらい
××使ってるけど このままでいいのかな
○○ってどう思う?
技術なんて何使っても一緒でしょ?って言われた
んだけどどうすれば…
Depth of Functionality
Scal
abili
ty &
Per
form
ance
memcached
RDBMS
key/value store MongoDB
MongoDBの立ち位置
Relational Databases Fight NoSQL Gravity https://www.mongodb.com/blog/post/relational-databases-nosql-gravity
構造化データ
db.events.insert({ event: “touch”, touches: [ {pageX: 150, pageY: 100, …}, {pageX: 47, pageY: 171, …} ], touchCount: 2 });
db.events.createIndex({ event: 1});
行列に縛られないデータ構造を表現できる
検索したいフィールドに
自由にインデックスが貼れることが大きな強み
Point!
MongoDBはRDBMSと似たインデックス構造を
持っているので、RDBの知識を生かすことができます
B-Tree, Compound Index, Covered Index, etc.
スキーマレス
db.events.insert({ event: “touch”, touches: [ {pageX: 150, pageY: 100, …}, {pageX: 47, pageY: 171, …} ], // delete touchCount: 2, // new orientation: -90, touchStart: new Date(), … });
取得したいデータは日々変化していきます
RDBの強みであるはずの
スキーマが、ビジネスの足かせになってしまう
https://www.mongodb.com/presentations/schema-design-scale-1
レプリカセット&シャーディング
replica set shard
mongos
replica set shard
replica set shard
delayed replica
delayed replica
delayed replica
mongoc
サービスに集中するために ホスティングサービスを利用するという選択は検討の価値あり
http://www.slideshare.net/yujiosaka/starting-mongo-db-on-hosting-services
http://www.sarahmei.com/blog/2013/11/11/why-you-should-never-use-mongodb/
http://blog.scrapinghub.com/2013/05/13/mongo-bad-for-scraped-data/
Customer Count
Tota
l Cos
tsOptimizationMore
hardwareCosts too
high! optimize
Changing the Growth Formula https://www.compose.io/articles/changing-the-growth-formula/
Low totalcosts
Low total costs コスト・パフォーマンスの問題もなくサービスを提供できている
More hardwareビジネスの成長を支えるために投資をする時期
Costs too high! optimizeコストへの警告が上がり、アーキテクチャの見直しが求められる
Optimizationアーキテクチャが経済的にもパフォーマンス的にも最適化される
フェーズ
Changing the Growth Formula https://www.compose.io/articles/changing-the-growth-formula/
Customer Count
Tota
l Cos
tsOptimizationMore
hardwareCosts too
high! optimize
Changing the Growth Formula https://www.compose.io/articles/changing-the-growth-formula/
Low totalcosts
ボトルネックを見つけて、一つ一つ解消していく
https://speakerdeck.com/yujiosaka/yue-jian-10yi-pvkaraxue-ndamongodbantipatan
インデックスをチューニングしたり…
https://speakerdeck.com/yujiosaka/yue-jian-10yi-pvkaraxue-ndamongodbantipatan
インデックスをさらにチューニングしたり…
https://speakerdeck.com/yujiosaka/yue-jian-10yi-pvkaraxue-ndamongodbantipatan
常にホットデータを使うように意識したり…
https://speakerdeck.com/yujiosaka/yue-jian-10yi-pvkaraxue-ndamongodbantipatan
クエリをチューニングしたり…
https://speakerdeck.com/yujiosaka/yue-jian-10yi-pvkaraxue-ndamongodbantipatan
セカンダリへのクエリが向くようにしたり…
https://speakerdeck.com/yujiosaka/yue-jian-10yi-pvkaraxue-ndamongodbantipatan
アップデートをチューニングしたり…
https://speakerdeck.com/yujiosaka/yue-jian-10yi-pvkaraxue-ndamongodbantipatan
Redisを使ってバッファリングしたり…
https://speakerdeck.com/yujiosaka/yue-jian-10yi-pvkaraxue-ndamongodbantipatan
目的に応じてDBを分けたり…
https://speakerdeck.com/yujiosaka/yue-jian-10yi-pvkaraxue-ndamongodbantipatan