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.

Fosdem 2010 GT.M and OpenStreetMap

6,973 views

Published on

Geodata in a schemafree database. Using GT.M to implement XAPI for OpenStreetMap.

Published in: Technology
  • Be the first to comment

Fosdem 2010 GT.M and OpenStreetMap

  1. 1. GT.M and OpenStreetMap Geodata in a schema-free database FOSDEM 2010 :: Brussels :: February 7th, 2010
  2. 2. OpenStreetMap <ul><ul><li>A free map of the planet </li></ul></ul><ul><ul><ul><li>Free geospatial data </li></ul></ul></ul><ul><ul><ul><li>Licensed under CC-BY-SA </li></ul></ul></ul><ul><ul><li>Created from </li></ul></ul><ul><ul><ul><li>Crowd-sourced contributions </li></ul></ul></ul><ul><ul><ul><li>200,000 registered users </li></ul></ul></ul><ul><ul><ul><li>1,000+ contributors per day </li></ul></ul></ul><ul><ul><li>Used for: </li></ul></ul><ul><ul><ul><li>Maps </li></ul></ul></ul><ul><ul><ul><li>Navigation / routing </li></ul></ul></ul><ul><ul><ul><li>OpenCycleMap.org </li></ul></ul></ul><ul><ul><ul><li>OpenPisteMap.org </li></ul></ul></ul><ul><ul><ul><li>iPhone apps </li></ul></ul></ul><ul><ul><ul><li>Android apps </li></ul></ul></ul><ul><ul><ul><li>Crisis mapping </li></ul></ul></ul>© Constantin Litvak
  3. 3. Coverage CC-BY-SA 2.0 © OpenStreetMap
  4. 4. Earthquake!
  5. 5. Haiti – January 12 th 2010
  6. 6. Haiti – January 14 th 2010
  7. 7. What's GT.M? <ul><ul><li>Schemaless database </li></ul></ul><ul><ul><li>Key/value pairs </li></ul></ul><ul><ul><li>Mature </li></ul></ul><ul><ul><li>Mission critical - banking </li></ul></ul><ul><ul><li>Mission critical - healthcare </li></ul></ul><ul><ul><li>Layered SQL, OODB, M/DB, etc </li></ul></ul>
  8. 8. The OpenStreetMap database <ul><ul><li>Nodes: 0.5 billion </li></ul></ul><ul><ul><li>Ways: 25 million </li></ul></ul><ul><ul><li>Relations: 100,000 </li></ul></ul><ul><ul><li>Tags </li></ul></ul><ul><ul><li>highway=motorway </li></ul></ul><ul><ul><li>name=Brussels </li></ul></ul><ul><ul><li>amenity=zoo </li></ul></ul><ul><ul><li>foo=bar </li></ul></ul><ul><ul><li>REST based API </li></ul></ul>
  9. 9. Data Schema
  10. 10. The Main OpenStreetMap Database Server <ul><ul><li>2 x Intel Xeon Quad Core 2.5Ghz </li></ul></ul><ul><ul><li>10 x 450Gb 15k rpm </li></ul></ul><ul><ul><li>32 GB ram </li></ul></ul><ul><ul><li>PostgreSQL 8.3 </li></ul></ul><ul><ul><li>One capability: </li></ul></ul><ul><ul><li>Query by area </li></ul></ul><ul><li>0.25 ² degrees </li></ul>
  11. 11. The OpenStreetMap XAPI Server <ul><ul><li>XAPI = Extended API </li></ul></ul><ul><ul><li>1 x Athlon 64 3000+ </li></ul></ul><ul><ul><li>2 x 300Gb 10k rpm </li></ul></ul><ul><ul><li>4 GB ram </li></ul></ul><ul><ul><li>GT.M 4.3 </li></ul></ul><ul><ul><li>Capabilities: </li></ul></ul><ul><ul><li>Query by area </li></ul></ul><ul><ul><li>Query by tag </li></ul></ul>
  12. 12. Quadstrings <ul><ul><li>Geospatial Index </li></ul></ul>adaabcdcabaadab
  13. 13. GT.M Data <ul><li>^way(27016525)=&quot;adaabcdcabaadab&quot; </li></ul><ul><li>^way(27016525,1)=296138118 </li></ul><ul><li>^way(27016525,2)=296138119 </li></ul><ul><li>^way(27016525,3)=296138120 </li></ul><ul><li>^way(27016525,4)=296138121 </li></ul><ul><li>^way(27016525,5)=296138118 </li></ul><ul><li>^waytag(27016525,&quot;addr:housenumber&quot;)=2 </li></ul><ul><li>^waytag(27016525,&quot;building&quot;)=&quot;yes&quot; </li></ul><ul><li>^wayx(&quot;building&quot;,&quot;*&quot;,&quot;adaabcdcabaadab&quot;,27016525)=&quot;&quot; </li></ul><ul><li>^wayx(&quot;building&quot;,&quot;*&quot;,&quot;adaabcdcabaadab&quot;,27028298)=&quot;&quot; </li></ul><ul><li>^wayx(&quot;building&quot;,&quot;*&quot;,&quot;adaabcdcabaadab&quot;,27028299)=&quot;&quot; </li></ul><ul><li>^wayx(&quot;building&quot;,&quot;*&quot;,&quot;adaabcdcabaadab&quot;,27028326)=&quot;&quot; </li></ul><ul><li>^wayx(&quot;building&quot;,&quot;*&quot;,&quot;adaabcdcabaadab&quot;,27028327)=&quot;&quot; </li></ul><ul><li>^wayx(&quot;building&quot;,&quot;*&quot;,&quot;adaabcdcabaadab&quot;,27035972)=&quot;&quot; </li></ul><ul><li>^wayx(&quot;building&quot;,&quot;*&quot;,&quot;adaabcdcabaadab&quot;,27035973)=&quot;&quot; </li></ul><ul><li>^wayx(&quot;building&quot;,&quot;*&quot;,&quot;adaabcdcabaadab&quot;,27035974)=&quot;&quot; </li></ul><ul><li>^wayx(&quot;building&quot;,&quot;*&quot;,&quot;adaabcdcabaadab&quot;,27035975)=&quot;&quot; </li></ul><ul><li>^wayx(&quot;building&quot;,&quot;*&quot;,&quot;adaabcdcabaadab&quot;,27035984)=&quot;“ </li></ul><way id='27016525'> <nd ref='296138118'/> <nd ref='296138119'/> <nd ref='296138120'/> <nd ref='296138121'/> <nd ref='296138118'/> <tag k='addr:housenumber' v='2'/> <tag k='building' v='yes'/> </way>
  14. 14. Conclusion <ul><ul><li>GT.M is good for: </li></ul></ul><ul><ul><li>Massive datasets </li></ul></ul><ul><ul><li>High performance on low end hardware </li></ul></ul><ul><ul><li>Robust and mature </li></ul></ul><ul><ul><li>Highly adapatable </li></ul></ul><ul><ul><li>NoSQL </li></ul></ul>
  15. 15. Thank you <ul><li>openstreetmap.org </li></ul><ul><li>fis-gtm.com </li></ul><ul><li>georgejames.com </li></ul><ul><li>Questions? </li></ul>CC-BY-SA 2.0 Image © ITO! Data © OpenStreetMap

×