Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

NoSQLデータベースと位置情報

11,700 views

Published on

FOSS4G 2013 東京での発表スライド

Published in: Technology
  • Dating for everyone is here: ♥♥♥ http://bit.ly/2F90ZZC ♥♥♥
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Sex in your area is here: ❤❤❤ http://bit.ly/2F90ZZC ❤❤❤
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

NoSQLデータベースと位置情報

  1. 1. 株式会社オークニー 市脇康二 NoSQLデータベースと位置情報 1
  2. 2. 自己紹介 NoSQLって何? MongoDB Neo4j アジェンダ 2
  3. 3. 株式会社オークニー プロダクトサービス部市脇康二 お仕事 ソリューション開発 クラウドサービス 自己紹介 GeoGraph GeoGraphSDK 地図配信ジオコーディング空間DB 3
  4. 4. NoSQL? 4
  5. 5. NoSQLって何? 一般的にデータベースといえばリレーショナル データベースを指すことが多い リレーショナルデータベースの操作にはSQLとい う問い合わせ言語を用いる NoSQLとは「Not only SQL」であり、リレー ショナルデータベースではない、新しいデータ ベース群を表す総称のようなもの ※明確な定義があるわけではない 5
  6. 6. NoSQLって何? NoSQLでもデータモデルの違いでいくつ かのタイプにわかれる キーバリュー型 列指向型 ドキュメント指向型 グラフ指向型 http://nosql-database.org/ 6
  7. 7. ①キーバリュー型 キーとペアになる値を保持するシンプルな構造 シンプルな構造なので使い方もシンプル キャッシュ的な使い方が有効 Webのセッション情報など、頻繁にアクセスされる が永続化はしなくてもいいデータに向く 代表的なソフトウェア Memcached, Redis, Amazon DynamoDB 7
  8. 8. ②列指向型 従来型RDBは行でデータを扱うのに対し、それを列で 行う それにより必要なデータのみを効率良く抽出でき、内 部的なデータの圧縮効率も上がることから高速に大量 のデータを扱うことができる 代表的なソフトウェア Hbase(Hadoop), Apache Cassandra, Amazon SimpleDB 大量のデータ読み出しは得意な反面、更新が苦手なの で、OLAPのような分析処理に有効 8
  9. 9. ③ドキュメント指向型 スキーマレス 事前にデータ構造を決めておかなくても良い為、柔軟性に優れ る スケーラブル 標準でシャーディング機能を持ち更新、検索処理を分散できる 仕組みを備えている 代表的なソフトウェア MongoDB, Apache CouchDB, RavenDB スキーマを固定できない用途やスケーラビリティを活かした 大規模アプリケーションのバックエンドDBとして有効 9
  10. 10. ④グラフ指向型 ノードとリレーション(エッジ)でデータの関連を表 現 ノード、リレーションそれぞれに属性を持つプロパ ティグラフ SQLで自己結合や再帰クエリを用いるようなケースで 有効かも? ソーシャルな人間関係…友達の友達を探す 製造業のBOM 代表的なソフトウェア Neo4j、Infinite Graph 10
  11. 11. MongoDB 11
  12. 12. ドキュメント指向型データベースの代表格 データはJSON(BSON= Binary JSON) コマンドラインはJavaScriptで操作するのでWeb開発者との親和性は高い とにかくRead/Writeが多い!というケースに向く ACIDなトランザクションはない 開発元 MongoDB(旧10gen) ライセ ンス AGPLv3 言語 C++(Driverは各種言語あり) OS Windows, Mac OSX, Linux, Solaris UI コマンドライン http://www.mongodb.org/ 12
  13. 13. 各OSごとのバイナリが配布されているのでインストールも容易 AWSのマーケットプレイスにはインストール済みインスタンスもある 13
  14. 14. 位置情報機能 GeoJSON WGS84 FeatureType Point, LineString, Polygon (Multi*はダメ) ※LineString, Polygonは最新の2.4系から Function$geoWithin, $geoIntersects, $near 14
  15. 15. 空間検索クエリ例 SELECT COUNT(*) FROM points WHERE geom&& ST_MakeBox2D(ST_Point(139.5, 35.6), ST_Point(139.6, 35.7)) db.points.find({"geometry": { $geoIntersects: { $geometry: { type: "Polygon", coordinates: [[ [139.5, 35.6], [139.5, 35.7], [139.6, 35.7], [139.6, 35.6], [139.5, 35.6] ]] } } }}).count() PostGIS MongoDB 国土数値情報から東京都のバス停データを入れたところ、同じ件数(607件)が得 られた。 15
  16. 16. Point:バス停 LineString:河川 Polygon:行政区域 16
  17. 17. Neo4j 17
  18. 18. グラフ指向型データベースの代表格(勝手に) OSSのCommunity EditionでもDBとしての基本機能は全部使える 上位エディションでは更にオンラインバックアップ、クラスタリング、モニタリング機能 が使える トランザクションはACIDに完全準拠 開発元 Neo Technology ライセ ンス Community EditionはGPLv3 それ以外は商用ライセンス 言語 Java OS Javaが動くOS UI WebUI, コマンドライン http://www.neo4j.org/ 18
  19. 19. Matrixの登場人物をノード、関係をリレーショ ンタイプで表現しており、ノードとリレーショ ンにはそれぞれ属性を持たせることができる Neo4jを調べていると よく見かける画像 19
  20. 20. こんな比較データがありました 100万件のデータ(ユーザー)の中から、と あるユーザーの友達、さらに友達の友達…の ような検索 depth Neo4j (sec) RDBMS (sec) 1 … … 2 0.01 0.016 3 0.168 30.267 4 1.359 1543.505 5 2.132 Not finished 20
  21. 21. 属性の一覧を見ること ができる ノードとリレーションの 関連を直感的な図として 見ることができる ← → 21
  22. 22. Spatialなエクステンションもあります R-Treeインデックス Spatial Query Contain, Cross, Intersect, Overlap, Touch, Within Importer Class (Java) OpenStreetMap(.osm) Shapefile GraphDatabaseServicedb= new GraphDatabaseFactory() .newEmbeddedDatabase("D:/neo4j_OSM"); ShapefileImporterimporter = new ShapefileImporter(db); importer.importFile("tokyo_highway.shp", "layer_roads"); db.shutdown(); 22
  23. 23. OSM道路データ(みなとみらい付近) 23
  24. 24. Dijkstra、A*が実装されており、すぐに使える これら以外にもあります データを準備 1.OpenStreetMapのデータを投入 •CloudMadeから東京のosm.bz2データをダウンロード 2.osm2poでPostGIS用SQLファイルを作成してロード 3.ここまででエッジのテーブルは出来るがノードのテーブルがない ので自分で作成 •エッジテーブルの緯度・経度からPointのGeometryを作ってインデック スを作成しておく 4.エッジテーブルからNeo4jのネットワークデータを作成 •PostGISからNeo4jのデータ作成処理は自前で実装 ルーティング 24
  25. 25. PostGISとNeo4jのハイブリッド Neo4jはEmbeddedモードで使用 ルーティング 25
  26. 26. まとめ NoSQLデータベースはその強みを活かし、リレーショ ナルデータベースを補完できる 大量データ スキーマフリーな柔軟性 ジオな機能はPostGISと比較すると少ない シンプルな"位置情報サービス"ならそれで十分 用途特化型のNoSQLデータベースが今後もジオな機能 と共に進化していけば、解決できるようになる問題や新 しいサービスが生まれる可能性 26
  27. 27. ご清聴ありがとうございました。 27

×