Merge pull request #17 from chimericalidea/data_model

Data model
diff --git a/_config.yml b/_config.yml
index acda3d9..80e7bf6 100644
--- a/_config.yml
+++ b/_config.yml
@@ -15,3 +15,4 @@
       layout: page
       weight: 100   # Used to sort navbar items. Lower weight goes higher on the list.
 
+highlighter: rouge
diff --git a/pages/data_model.md b/pages/data_model.md
new file mode 100644
index 0000000..91d6a2b
--- /dev/null
+++ b/pages/data_model.md
@@ -0,0 +1,222 @@
+---
+title: Data Model
+---
+
+In order to illustrate the tracing data that Zipkin displays, let's relate it to the equivalent information in the Zipkin data model. By comparing these, we see that
+
++ inbound and outbound requests are in different spans
++ spans that include `cs` can log an `sa` annotation of where they are going
+  + This helps when the destination protocol isn't Zipkin instrumented, such as MySQL.
+
+First, we see one trace as shown in the Zipkin trace  viewer:
+
+![Zipkin Screenshot]({{ site.github.url }}/public/img/json_zipkin_screenshot.png)
+
+And the same trace in the data model of Zipkin:
+
+{% highlight json %}  
+  [
+    [
+      {
+      "traceId": "bd7a977555f6b982",
+      "name": "get",
+      "id": "bd7a977555f6b982",
+      "timestamp": 1458702548467000,
+      "duration": 386000,
+      "annotations": [
+        {
+          "endpoint[": {
+            "serviceName": "zipkin-query",
+            "ipv4": "192.168.1.2",
+            "port": 9411
+          },
+          "timestamp": 1458702548467000,
+          "value": "sr"
+        },
+        {
+          "endpoint": {
+            "serviceName": "zipkin-query",
+            "ipv4": "192.168.1.2",
+            "port": 9411
+          },
+          "timestamp": 1458702548853000,
+          "value": "ss"
+        }
+      ],
+      "binaryAnnotations": []
+    },
+    {
+      "traceId": "bd7a977555f6b982",
+      "name": "get-traces",
+      "id": "ebf33e1a81dc6f71",
+      "parentId": "bd7a977555f6b982",
+      "timestamp": 1458702548478000,
+      "duration": 354374,
+      "annotations": [],
+      "binaryAnnotations": [
+        {
+          "key": "lc",
+          "value": "JDBCSpanStore",
+          "endpoint": {
+            "serviceName": "zipkin-query",
+            "ipv4": "192.168.1.2",
+            "port": 9411
+          }
+        },
+        {
+          "key": "request",
+          "value": "QueryRequest{serviceName=zipkin-query, spanName=null, annotations=[], binaryAnnotations={}, minDuration=null, maxDuration=null, endTs=1458702548478, lookback=86400000, limit=1}",
+          "endpoint": {
+            "serviceName": "zipkin-query",
+            "ipv4": "192.168.1.2",
+            "port": 9411
+          }
+        }
+      ]
+    },
+    {
+      "traceId": "bd7a977555f6b982",
+      "name": "query",
+      "id": "be2d01e33cc78d97",
+      "parentId": "ebf33e1a81dc6f71",
+      "timestamp": 1458702548786000,
+      "duration": 13000,
+      "annotations": [
+        {
+          "endpoint": {
+            "serviceName": "zipkin-query",
+            "ipv4": "192.168.1.2",
+            "port": 9411
+          },
+          "timestamp": 1458702548786000,
+          "value": "cs"
+        },
+        {
+          "endpoint": {
+            "serviceName": "zipkin-query",
+            "ipv4": "192.168.1.2",
+            "port": 9411
+          },
+          "timestamp": 1458702548799000,
+          "value": "cr"
+        }
+      ],
+      "binaryAnnotations": [
+        {
+          "key": "jdbc.query",
+          "value": "select distinct `zipkin_spans`.`trace_id` from `zipkin_spans` join `zipkin_annotations` on (`zipkin_spans`.`trace_id` = `zipkin_annotations`.`trace_id` and `zipkin_spans`.`id` = `zipkin_annotations`.`span_id`) where (`zipkin_annotations`.`endpoint_service_name` = ? and `zipkin_spans`.`start_ts` between ? and ?) order by `zipkin_spans`.`start_ts` desc limit ?",
+          "endpoint": {
+            "serviceName": "zipkin-query",
+            "ipv4": "192.168.1.2",
+            "port": 9411
+          }
+        },
+        {
+          "key": "sa",
+          "value": true,
+          "endpoint": {
+            "serviceName": "spanstore-jdbc",
+            "ipv4": "127.0.0.1",
+            "port": 3306
+          }
+        }
+      ]
+    },
+    {
+      "traceId": "bd7a977555f6b982",
+      "name": "query",
+      "id": "13038c5fee5a2f2e",
+      "parentId": "ebf33e1a81dc6f71",
+      "timestamp": 1458702548817000,
+      "duration": 1000,
+      "annotations": [
+        {
+          "endpoint": {
+            "serviceName": "zipkin-query",
+            "ipv4": "192.168.1.2",
+            "port": 9411
+          },
+          "timestamp": 1458702548817000,
+          "value": "cs"
+        },
+        {
+          "endpoint": {
+            "serviceName": "zipkin-query",
+            "ipv4": "192.168.1.2",
+            "port": 9411
+          },
+          "timestamp": 1458702548818000,
+          "value": "cr"
+        }
+      ],
+      "binaryAnnotations": [
+        {
+          "key": "jdbc.query",
+          "val[[ue": "select `zipkin_spans`.`trace_id`, `zipkin_spans`.`id`, `zipkin_spans`.`name`, `zipkin_spans`.`parent_id`, `z[ipkin_spans`.`debug`, `zipkin_spans`.`start_ts`, `zipkin_spans`.`duration` from `zipkin_spans` where `zipkin_spans`.`trace_id` in (?)",
+          "endpoint": {
+            "serviceName": "zipkin-query",
+            "ipv4": "192.168.1.2",
+            "port": 9411
+          }
+        },
+        {
+          "key": "sa",
+          "value": true,
+          "endpoint": {
+            "serviceName": "spanstore-jdbc",
+            "ipv4": "127.0.0.1",
+            "port": 3306
+          }
+        }
+      ]
+    },
+    {
+      "traceId": "bd7a977555f6b982",
+      "name": "query",
+      "id": "37ee55f3d3a94336",
+      "parentId": "ebf33e1a81dc6f71",
+      "timestamp": 1458702548827000,
+      "duration": 2000,
+      "annotations": [
+        {
+          "endpoint": {
+            "serviceName": "zipkin-query",
+            "ipv4": "192.168.1.2",
+            "port": 9411
+          },
+          "timestamp": 1458702548827000,
+          "value": "cs"
+        },
+        {
+          "endpoint": {
+            "serviceName": "zipkin-query",
+            "ipv4": "192.168.1.2",
+            "port": 9411
+          },
+          "timestamp": 1458702548829000,
+          "value": "cr"
+        }
+      ],
+      "binaryAnnotations": [
+        {
+          "key": "jdbc.query",
+          "value": "select `zipkin_annotations`.`trace_id`, `zipkin_annotations`.`span_id`, `zipkin_annotations`.`a_key`, `zipkin_annotations`.`a_value`, `zipkin_annotations`.`a_type`, `zipkin_annotations`.`a_timestamp`, `zipkin_annotations`.`endpoint_ipv4`, `zipkin_annotations`.`endpoint_port`, `zipkin_annotations`.`endpoint_service_name` from `zipkin_annotations` where `zipkin_annotations`.`trace_id` in (?) order by `zipkin_annotations`.`a_timestamp` asc, `zipkin_annotations`.`a_key` asc",
+          "endpoint": {
+            "serviceName": "zipkin-query",
+            "ipv4": "192.168.1.2",
+            "port": 9411
+          }
+        },
+        {
+          "key": "sa",
+          "value": true,
+          "endpoint": {
+            "serviceName": "spanstore-jdbc",
+            "ipv4": "127.0.0.1",
+            "port": 3306
+          }
+        }
+      ]
+    }
+  ]  
+ {% endhighlight %}
diff --git a/public/img/json_zipkin_screenshot.png b/public/img/json_zipkin_screenshot.png
new file mode 100644
index 0000000..2e3f2a7
--- /dev/null
+++ b/public/img/json_zipkin_screenshot.png
Binary files differ