没有合适的资源?快使用搜索试试~ 我知道了~
首页tinkerpop3入门
资源详情
资源评论
资源推荐
PRACTICAL GREMLIN
An Apache TinkerPop Tutorial
Kelvin R. Lawrence
Version 281-preview, October 27th 2018
Table of Contents
1. INTRODUCTION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê1
1.1. How this book came to be. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê1
1.2. Providing feedback. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê1
1.3. Some words of thanks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê2
1.4. What is this book about?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê2
1.5. Introducing the book sources, sample programs and data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê4
1.6. So what is a graph database and why should I care? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê5
1.7. A word about terminology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê7
2. GETTING STARTED. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê8
2.1. What is Apache TinkerPop? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê8
2.2. The Gremlin console . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê9
2.2.1. Downloading, installing and launching the console. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê9
2.2.2. Saving output from the console to a file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê13
2.3. Introducing TinkerGraph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê14
2.4. Introducing the air-routes graph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê16
2.5. TinkerPop 3 migration notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê20
2.5.1. Creating a TinkerGraph TP2 vs TP3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê20
2.5.2. Loading a graphML file TP2 vs TP3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê20
2.5.3. A word about the TinkerPop.sugar plugin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê20
2.6. Loading the air-routes graph using the Gremlin console . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê21
2.7. Turning off some of the Gremlin console’s output. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê23
2.8. A word about indexes and schemas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê23
3. WRITING GREMLIN QUERIES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê25
3.1. Introducing Gremlin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê25
3.1.1. A quick look at Gremlin and SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê25
3.2. Some fairly basic Gremlin queries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê27
3.2.1. Retrieving property values from a vertex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê29
3.2.2. Does a specific property exist on a given vertex or edge? . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê30
3.2.3. Counting things . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê31
3.2.4. Counting groups of things. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê31
3.3. Starting to walk the graph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê33
3.3.1. Some simple graph traversal examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê34
3.3.2. What vertices and edges did I visit? - Introducing path . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê36
3.3.3. Does an edge exist between two vertices? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê42
3.3.4. Using as, select and project to refer to traversal steps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê42
3.3.5. Using multiple as steps with the same label. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê45
3.3.6. Examining the edge between two vertices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê46
3.4. Limiting the amount of data returned . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê47
3.4.1. Retrieving a range of vertices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê48
3.4.2. Removing duplicates - introducing dedup. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê50
3.5. Using valueMap to explore the properties of a vertex or edge . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê52
3.6. Assigning query results to a variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê53
3.6.1. Introducing toList, toSet, bulkSet and fill . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê55
3.7. Working with IDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê57
3.8. Working with labels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê59
3.9. Using the local step to make sure we get the result we intended . . . . . . . . . . . . . . . . . . . . . . . . . . Ê61
3.10. Basic statistical and numerical operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê63
3.11. Testing values and ranges of values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê64
3.11.1. Using between to simulate startsWith . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê68
3.11.2. Refining flight routes analysis using not, neq, within and without . . . . . . . . . . . . . . . . . . . . Ê70
3.11.3. Using coin and sample to sample a dataset. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê72
3.11.4. Using Math.random to more randomly select a single vertex . . . . . . . . . . . . . . . . . . . . . . . . Ê73
3.12. Sorting things - introducing order . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê76
3.12.1. Sorting by key or value . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê78
3.13. Boolean operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê79
3.14. Using where to filter things out of a result . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê81
3.14.1. Using where and by to filter results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê85
3.15. Using choose to write if…then…else type queries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê87
3.15.1. Including a constant value - introducing constant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê88
3.16. Using option to write case/switch type queries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê90
3.17. Using match to do pattern matching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê90
3.18. Using union to combine query results. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê93
3.18.1. Introducing the identity step . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê94
3.18.2. Using constant values as part of a union. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê94
3.18.3. More examples of the union step . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê95
3.18.4. Using union to combine more complex traversal results . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê98
3.19. Using sideEffect to do things on the side. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê100
3.20. Using aggregate to create a temporary collection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê100
3.21. Using inject to insert values into a query . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê101
3.21.1. A useful trick using inject . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê102
3.22. Using coalesce to see which traversal returns a result . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê103
3.22.1. Combining coalesce with a constant value. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê103
3.23. Returning one of two possible results - introducing optional . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê104
3.24. Other ways to explore vertices and edges using both, bothE, bothV and otherV . . . . . . . . . . Ê105
3.25. Shortest paths (between airports) - introducing repeat. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê108
3.25.1. Using emit to return results during a repeat loop. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê110
3.25.2. Haven’t I been here before? - Introducing cyclicPath . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê114
3.25.3. A warning that path can be memory and CPU intensive . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê116
3.26. Calculating vertex degree. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê117
3.27. Gremlin’s scientific calculator - introducing math. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê119
3.27.1. Performing simple arithmetic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê120
3.27.2. Using the trigonometric functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê122
3.27.3. Calculating a standard deviation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê123
3.28. Including an index with results - introducing withIndex and index . . . . . . . . . . . . . . . . . . . . . Ê125
3.29. More examples using concepts we have covered so far. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê126
4. BEYOND BASIC QUERIES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê132
4.1. A word about layout and indentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê132
4.2. A warning about reserved word conflicts and collisions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê133
4.3. Thinking about your data model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê134
4.3.1. Keeping information in two places within the same graph . . . . . . . . . . . . . . . . . . . . . . . . . . Ê135
4.3.2. Using a graph as an index into other data sources. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê135
4.3.3. A few words about supernodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê135
4.4. Making Gremlin even Groovier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê136
4.4.1. Using a variable to feed a traversal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê139
4.5. Adding vertices, edges and properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê141
4.5.1. Adding an airport (vertex) and a route (edge). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê141
4.5.2. Using a traversal to determine a new label name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê143
4.5.3. Using a traversal to seed a property with a list. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê144
4.5.4. Using inject to specify new vertex ID values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê144
4.5.5. Quickly building a graph for testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê146
4.5.6. Adding vertices and edges using a loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê146
4.5.7. Using coalesce to only add a vertex if it does not exist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê147
4.5.8. Using coalesce to derive an upsert pattern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê148
4.5.9. Creating one vertex based on another . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê149
4.6. Deleting vertices, edges and properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê149
4.6.1. Deleting a vertex. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê150
4.6.2. Deleting an edge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê150
4.6.3. Deleting a property . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê150
4.6.4. Removing all the edges or vertices in the graph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê151
4.7. Property keys and values revisited . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê151
4.7.1. The Property and VertexProperty interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê151
4.7.2. The propertyMap traversal step . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê154
4.7.3. Properties have IDs too . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê154
4.7.4. Attaching multiple values (lists or sets) to a single property . . . . . . . . . . . . . . . . . . . . . . . . . Ê157
4.7.5. A word of caution - behavior differences with property. . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê158
4.7.6. What did Gremlin do? - introducing explain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê159
4.7.7. Updating properties stored in a list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê160
4.7.8. Creating properties that store sets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê162
4.7.9. One more note about sets and lists. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê162
4.7.10. Adding properties to other properties (meta properties). . . . . . . . . . . . . . . . . . . . . . . . . . . Ê163
4.8. Deducing the schema of a graph using queries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê164
4.9. Collections revisited. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê166
4.9.1. Steps that generate collections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê166
4.9.2. Accessing the contents of a collection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê170
4.9.3. Using unfold to unbundle a collection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê171
4.9.4. Using local scope with collections. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê173
4.10. Collections and reducing barrier steps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê175
4.11. Introducing sack as a way to store values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê178
4.11.1. Basic sack operations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê178
4.11.2. Using min and max with a sack. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê180
4.11.3. Doing calculations using a sack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê180
4.11.4. Using boolean operators with a sack. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê181
4.11.5. Using addAll and lists with a sack. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê183
4.12. Using Lambda functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê185
4.12.1. Introducing the Map step . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê187
4.12.2. Using lambdas with sack steps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê190
4.12.3. Introducing the flatMap step . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê192
4.12.4. Using regular expressions to do fuzzy searches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê194
4.13. Creating custom tests (predicates) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê195
4.13.1. Creating a regular expression predicate. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê196
4.14. Using graph variables to associate metadata with a graph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê197
4.15. Turning graphs into trees. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê198
4.16. Creating a sub graph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê199
4.17. Working with GraphML and GraphSON . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê202
4.17.1. Saving (serializing) a graph as GraphML (XML) or GraphSON (JSON) . . . . . . . . . . . . . . . Ê202
4.17.2. Loading a graph stored as GraphML (XML) or GraphSON (JSON) . . . . . . . . . . . . . . . . . . . Ê204
4.17.3. Turning the results of a query into JSON . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê204
4.18. Analyzing the performance of your queries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê207
4.18.1. Timing a query - introducing clock and clockWithResult . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê208
4.18.2. Analyzing where time is spent - introducing profile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê211
4.18.3. Introducing TinkerGraph indexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê212
4.19. OLTP vs OLAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê214
4.19.1. Introducing the TinkerPop Graph Computer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê215
4.19.2. Experiments with Page Rank. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê215
5. MISCELLANEOUS QUERIES AND THEIR RESULTS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê219
5.1. Counting more things . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê219
5.1.1. Which countries have no airports? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê219
5.1.2. Which airports have no routes? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê220
5.1.3. What is the distribution of runways? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê220
5.1.4. Airports with the most routes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê220
5.1.5. Airports with just one route. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê222
剩余400页未读,继续阅读
shuttlecock
- 粉丝: 3
- 资源: 45
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
- SPC统计方法基础知识.pptx
- MW全能培训汽轮机调节保安系统PPT教学课件.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论4