municipal government meets nosql
DESCRIPTION
This talk will describe the development and implementation of WindyGrid, an online geographic information system, that presents a unified view of City of Chicago operations to improve agency coordination, incident monitoring and response, and to identify trends. In lieu of reviewing numerous and disparate reports, WindyGrid gives key personnel access to 911 and 311 service calls, asset locations, building information, tweets, and other critical information in one place. To enable this, data from siloed City source systems are regularly ETLed into MongoDB. The City’s implementation of MongoDB has been architected to support multiple shards along with three tiers to allow for expanding query access and redundancy.TRANSCRIPT
Municipal Governmentmeets NoSQL
Ryan BrionesIT Director - Software Architecture and DesignDepartment of Innovation and TechnologyCity of Chicago
Tuesday, November 13, 12
This is my bossBrett GoldsteinChief Data OfficerCommissioner, DoIT (CIO)
Tuesday, November 13, 12
This is my bossBrett GoldsteinChief Data OfficerCommissioner, DoIT (CIO)Data Junkie
Tuesday, November 13, 12
My Job
Crazy Ideas
Reality
Tuesday, November 13, 12
Tuesday, November 13, 12
2010Tuesday, November 13, 12
2011Tuesday, November 13, 12
2011Tuesday, November 13, 12
2011How do we tell the story about a place?
Tuesday, November 13, 12
How do we tell the story about a place?
911 CPS CTA CFD 311
Tuesday, November 13, 12
2012Tuesday, November 13, 12
2012How can we use realtime data to make better decisions?
Tuesday, November 13, 12
Bring all the data all in one place
Make it available in realtime
Find relationships in the data
Tuesday, November 13, 12
Tuesday, November 13, 12
Spatial / Temporal
Tuesday, November 13, 12
Spatial / Temporal
Tuesday, November 13, 12
Tuesday, November 13, 12
Grow elastically
Loose schema
Works well with geospatial data
Tuesday, November 13, 12
Tuesday, November 13, 12
Grow elastically
Loose schema
Works well with geospatial data
Tuesday, November 13, 12
Grow elastically
Loose schema
Works well with geospatial data
Tuesday, November 13, 12
{pos: [41.884267623865384,
-87.62977480888367]}/* ... */db.windygrid.ensureIndex({pos: “2d”})/* ... */db.windygrid.find({ $within: { $box:
[ [41.88227, -87.63208] [41.88499, -87.62838] ] }})
Tuesday, November 13, 12
Grow elastically
Loose schema
Works well with geospatial data
Tuesday, November 13, 12
Router
Primary Shard 1 Primary Shard 2 Primary Shard 3
Secondary Shard 1 Secondary Shard 2 Secondary Shard 3
Secondary Shard 1 Secondary Shard 2 Secondary Shard 3
C
C
C
69GB data200K objs
Tuesday, November 13, 12
Grow elastically
Loose schema
Works well with geospatial data
Tuesday, November 13, 12
{type: “311”,shardkey: “2a08c28b3ca3bb65bd...”where: { location: [-180,180], ... },when: { shardtime: 0, ... },what: { ... },who: { ... }
}
Tuesday, November 13, 12
Bring all the data all in one place
Make it available in realtime
Find relationships in the data
Tuesday, November 13, 12
Bring all the data all in one place
Make it available in realtime
Find relationships in the data
Tuesday, November 13, 12
Tuesday, November 13, 12
Tuesday, November 13, 12
Bring all the data all in one place
Make it available in realtime
Find relationships in the data
Tuesday, November 13, 12
Tuesday, November 13, 12
Challenges
$within/$box
safe scaling
Tuesday, November 13, 12
The Future
Predictive AnalyticsNatural-language ProcessingMachine LearningDistributed ComputingVisualizations
Tuesday, November 13, 12
Ryan BrionesIT Director - Software Architecture and Design
Department of Innovation and TechnologyCity of Chicago
github.com/Chicagogithub.com/ryanbriones
@ChicagoCDO@ryanbriones
Tuesday, November 13, 12