SlideShare una empresa de Scribd logo
1 de 27
Descargar para leer sin conexión
PinQAでのMongoDB活用事例


          NTT レゾナント株式会社
          近藤 美沙
サービス紹介
場所を指定して質問
場所を指定して回答
質問は範囲=矩形
回答はポイント=点
MongoDBを使ってます



PinQAは位置情報ベースのQ&Aサービスです。
                http://pinqa.com/
MongoDBとは
● JSONをベースとしたスキーマレスなデー
  タモデル
● フェイルオーバー構成が選択可能
● B-treeインデックスをサポートする高速な
  クエリ
● 分散データベース
● 二次元の地理空間のインデックス
  (geospatial index)
   PinQAは位置情報ベースのQ&Aサービスです。
                   http://pinqa.com/
色々特徴がありますが



PinQAは位置情報ベースのQ&Aサービスです。
                http://pinqa.com/
本日のお題は



PinQAは位置情報ベースのQ&Aサービスです。
                http://pinqa.com/
二次元地理空間のインデックス
     (geospatial index)


 PinQAは位置情報ベースのQ&Aサービスです。
                 http://pinqa.com/
地理空間インデックスとは
位置情報をベースにしたクエリのためのインデックス
例)神保町駅から半径300m以内にある喫茶店を検索
インデックスを作る前に
● db #データベース
● squares # コレクション
データベースはその名の通りデータベース、コレクション
の集合体。

コレクションというのは、RDBでいうところのテーブルに近
いもの。ドキュメントの集合体。



    PinQAは位置情報ベースのQ&Aサービスです。
                    http://pinqa.com/
地理空間インデックスの作り方
● MongoDB側で直接叩く場合
$ db.squares.ensureIndex({latlng:"2d"})

● Mongoid側で行う場合
$ Mongoid.master.collections.each do |c|
$ if c.name == "squares"
$     c.create_index([['latlng', Mongo::GEO2D]])
$ end
$ end


       PinQAは位置情報ベースのQ&Aサービスです。
                       http://pinqa.com/
PinQAでの活用事例



PinQAは位置情報ベースのQ&Aサービスです。
                http://pinqa.com/
●質問データをMongoDBに投入

●MongoDBに入ってしまえば



   PinQAは位置情報ベースのQ&Aサービスです。
                   http://pinqa.com/
within(box)=矩形内の質問取得
within(box)
$ def self.find_in_bounds(hash)
$   self.where(:latlng.within =>
$          { "$box" => [
$                      [hash[:southwest_lat],
$                        hash[:southwest_lng]],
$                      [hash[:northeast_lat],
$                        hash[:northeast_lng]]
$                      ]
$            }
$    )
$ end
$
within(center)=円形内の質問取得
within(center)
$ def self.find_in_circle(hash)
$   self.where(:latlng.within =>
$          { "$center" =>[[hash[:lat],hash[:lng]],
$                         hash[:distance]
$          }
$    )
$ end
$



         PinQAは位置情報ベースのQ&Aサービスです。
                         http://pinqa.com/
near = 近くにある質問を取得
      基点から近い順に取得
near
$ def self.find(hash)
$   self.where(:latlng.near => [hash[:lat], hash[:lng]])
$ end
$




         PinQAは位置情報ベースのQ&Aサービスです。
                         http://pinqa.com/
geoNear
$ db.runCommand( {geoNear : "squares",
$                 near : [lat,lng], num : 10} );


Mongoid (1.9.1)ではgeoNearはサポートされてない模
様。

別途拡張ライブラリが必要。



         PinQAは位置情報ベースのQ&Aサービスです。
                         http://pinqa.com/
geoNear = near + オプション
・結果に詳細情報が付加される
地理空間インデックスでできること
● near:近くのデータを取得

● within:領域内のデータを取得 
          boxとcirculeがある。

● geoNear:near+詳細情報の取得



    PinQAは位置情報ベースのQ&Aサービスです。
                    http://pinqa.com/
最後にちょっと宣伝




PinQAは位置情報ベースのQ&Aサービスです。
                http://pinqa.com/
Comming soon

Más contenido relacionado

Destacado

Introduction git
Introduction gitIntroduction git
Introduction gitMisa Kondo
 
バージョン管理
バージョン管理バージョン管理
バージョン管理Misa Kondo
 
Git introduction2
Git introduction2Git introduction2
Git introduction2Misa Kondo
 
Application Release Utilizing MCollective
Application Release  Utilizing MCollectiveApplication Release  Utilizing MCollective
Application Release Utilizing MCollectiveMisa Kondo
 
Challenge ogx gip 2012.1
Challenge ogx gip 2012.1Challenge ogx gip 2012.1
Challenge ogx gip 2012.1Leotornel
 
Chefのはじめの一歩
Chefのはじめの一歩Chefのはじめの一歩
Chefのはじめの一歩Misa Kondo
 
Jenkinsとpull requestを利用した、継続的なbundle update.
Jenkinsとpull requestを利用した、継続的なbundle update.Jenkinsとpull requestを利用した、継続的なbundle update.
Jenkinsとpull requestを利用した、継続的なbundle update.Misa Kondo
 
ワンクリックデプロイ見習い勉強会
ワンクリックデプロイ見習い勉強会ワンクリックデプロイ見習い勉強会
ワンクリックデプロイ見習い勉強会Misa Kondo
 
Coffee script初めの一歩
Coffee script初めの一歩Coffee script初めの一歩
Coffee script初めの一歩Misa Kondo
 
Challenge ogx gip 2012.1
Challenge ogx gip 2012.1Challenge ogx gip 2012.1
Challenge ogx gip 2012.1Leotornel
 
Me aiesec and the world
Me aiesec and the worldMe aiesec and the world
Me aiesec and the worldLeotornel
 
Rubyとの出会いから黒歴史を築くまで
Rubyとの出会いから黒歴史を築くまでRubyとの出会いから黒歴史を築くまで
Rubyとの出会いから黒歴史を築くまでMisa Kondo
 
Capistrano introduction
Capistrano introductionCapistrano introduction
Capistrano introductionMisa Kondo
 
Analisis SYBIL dengan PSIKOLOGI
Analisis SYBIL dengan PSIKOLOGIAnalisis SYBIL dengan PSIKOLOGI
Analisis SYBIL dengan PSIKOLOGIYosi Rp
 
PPT Agama Jumlah Rasul dan Nabi
PPT Agama Jumlah Rasul dan NabiPPT Agama Jumlah Rasul dan Nabi
PPT Agama Jumlah Rasul dan NabiLungit Fauzia
 
K.chitra ppaper presentation
K.chitra ppaper presentationK.chitra ppaper presentation
K.chitra ppaper presentationTreesa Jos
 

Destacado (18)

Introduction git
Introduction gitIntroduction git
Introduction git
 
TDDの神秘
TDDの神秘TDDの神秘
TDDの神秘
 
バージョン管理
バージョン管理バージョン管理
バージョン管理
 
Git introduction2
Git introduction2Git introduction2
Git introduction2
 
Application Release Utilizing MCollective
Application Release  Utilizing MCollectiveApplication Release  Utilizing MCollective
Application Release Utilizing MCollective
 
Challenge ogx gip 2012.1
Challenge ogx gip 2012.1Challenge ogx gip 2012.1
Challenge ogx gip 2012.1
 
Chefのはじめの一歩
Chefのはじめの一歩Chefのはじめの一歩
Chefのはじめの一歩
 
Tired to tdd
Tired to tddTired to tdd
Tired to tdd
 
Jenkinsとpull requestを利用した、継続的なbundle update.
Jenkinsとpull requestを利用した、継続的なbundle update.Jenkinsとpull requestを利用した、継続的なbundle update.
Jenkinsとpull requestを利用した、継続的なbundle update.
 
ワンクリックデプロイ見習い勉強会
ワンクリックデプロイ見習い勉強会ワンクリックデプロイ見習い勉強会
ワンクリックデプロイ見習い勉強会
 
Coffee script初めの一歩
Coffee script初めの一歩Coffee script初めの一歩
Coffee script初めの一歩
 
Challenge ogx gip 2012.1
Challenge ogx gip 2012.1Challenge ogx gip 2012.1
Challenge ogx gip 2012.1
 
Me aiesec and the world
Me aiesec and the worldMe aiesec and the world
Me aiesec and the world
 
Rubyとの出会いから黒歴史を築くまで
Rubyとの出会いから黒歴史を築くまでRubyとの出会いから黒歴史を築くまで
Rubyとの出会いから黒歴史を築くまで
 
Capistrano introduction
Capistrano introductionCapistrano introduction
Capistrano introduction
 
Analisis SYBIL dengan PSIKOLOGI
Analisis SYBIL dengan PSIKOLOGIAnalisis SYBIL dengan PSIKOLOGI
Analisis SYBIL dengan PSIKOLOGI
 
PPT Agama Jumlah Rasul dan Nabi
PPT Agama Jumlah Rasul dan NabiPPT Agama Jumlah Rasul dan Nabi
PPT Agama Jumlah Rasul dan Nabi
 
K.chitra ppaper presentation
K.chitra ppaper presentationK.chitra ppaper presentation
K.chitra ppaper presentation
 

Similar a PinQAでのMongoDB活用事例

20181031 springfest spring data geode
20181031 springfest spring data geode20181031 springfest spring data geode
20181031 springfest spring data geodeMasaki Yamakawa
 
はてなブックマーク in Scala
はてなブックマーク in Scalaはてなブックマーク in Scala
はてなブックマーク in ScalaLintaro Ina
 
AWS SDK for Smalltalk
AWS SDK for SmalltalkAWS SDK for Smalltalk
AWS SDK for SmalltalkSho Yoshida
 
PostgreSQL 10 新機能 @オープンセミナー香川 2017
PostgreSQL 10 新機能 @オープンセミナー香川 2017PostgreSQL 10 新機能 @オープンセミナー香川 2017
PostgreSQL 10 新機能 @オープンセミナー香川 2017Shigeru Hanada
 
Spring data-rest-and-spring-cloud-contract
Spring data-rest-and-spring-cloud-contractSpring data-rest-and-spring-cloud-contract
Spring data-rest-and-spring-cloud-contractTakeshi Ogawa
 
LODを使ってみよう!
LODを使ってみよう!LODを使ってみよう!
LODを使ってみよう!uedayou
 

Similar a PinQAでのMongoDB活用事例 (6)

20181031 springfest spring data geode
20181031 springfest spring data geode20181031 springfest spring data geode
20181031 springfest spring data geode
 
はてなブックマーク in Scala
はてなブックマーク in Scalaはてなブックマーク in Scala
はてなブックマーク in Scala
 
AWS SDK for Smalltalk
AWS SDK for SmalltalkAWS SDK for Smalltalk
AWS SDK for Smalltalk
 
PostgreSQL 10 新機能 @オープンセミナー香川 2017
PostgreSQL 10 新機能 @オープンセミナー香川 2017PostgreSQL 10 新機能 @オープンセミナー香川 2017
PostgreSQL 10 新機能 @オープンセミナー香川 2017
 
Spring data-rest-and-spring-cloud-contract
Spring data-rest-and-spring-cloud-contractSpring data-rest-and-spring-cloud-contract
Spring data-rest-and-spring-cloud-contract
 
LODを使ってみよう!
LODを使ってみよう!LODを使ってみよう!
LODを使ってみよう!
 

Último

20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdf20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdfAyachika Kitazaki
 
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦Sadao Tokuyama
 
2024 01 Virtual_Counselor
2024 01 Virtual_Counselor 2024 01 Virtual_Counselor
2024 01 Virtual_Counselor arts yokohama
 
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~arts yokohama
 
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法ssuser370dd7
 
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見Shumpei Kishi
 
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdfTaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdfMatsushita Laboratory
 
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-LoopへTetsuya Nihonmatsu
 
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)ssuser539845
 

Último (12)

20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdf20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdf
 
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
 
2024 01 Virtual_Counselor
2024 01 Virtual_Counselor 2024 01 Virtual_Counselor
2024 01 Virtual_Counselor
 
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
 
What is the world where you can make your own semiconductors?
What is the world where you can make your own semiconductors?What is the world where you can make your own semiconductors?
What is the world where you can make your own semiconductors?
 
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
 
2024 03 CTEA
2024 03 CTEA2024 03 CTEA
2024 03 CTEA
 
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
 
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdfTaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
 
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
 
2024 04 minnanoito
2024 04 minnanoito2024 04 minnanoito
2024 04 minnanoito
 
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
 

PinQAでのMongoDB活用事例