used to pick a database. Phew!" • Related to indexing" • Not discussing data partioning/sharding" • Data locality" • Caching and memory mapping techniques" • Not brain washing you?" " "
of data" • Based upon a value " • Based upon a range" • Geospatial" • Fast checks for existence" • Uniqueness enforcement" • Sorting " • Aggregation" • Usually covering indexes"
Insert O(log n) O(log n) Search O(log n) O(log n) Delete O(log n) O(log n) Space O(n) O(n) • Most common index in relational databases" • Allows equality and range" • Misconceptions about scalability" "
good for existance ( =, !=)" • Can’t be used for range queries or order by" • Allows graceful caching (memory mapping, bloom filters)" Opera tion Avera ge Worst Case Insert O(1) O(1) Search O(1) O(n) Delete O(1) O(n) Space O(n) O(n)
a pointer but some other info like" • Frequencies" • Associated data" • Geospatial indices" • Lots of different implementations" • Geohashing" • R-tree" • Quad-tree" • Bitmap indices"
an ordered set of fields" • Speeds up query’s and sorts on a set of fields" • Sparse indices" • Don’t have entries for all records just matching" • Clustered indices" • Data organized on disk in the same order of index" • Uniqueness" • Roll your own index!
field (fields)" • Many rules that apply in MySQL are similar here" • Indexes to any depth of the document" • Indexes on string, int, double, boolean, date, bytearray, object, array, others • Supports secondary indices, compound keys, sparse indices, unique constraints, geospatial indicies (geo hash)" • Index and data updates atomic" • Background index creation supported"
SSTable) " • Indexes on strings • Row key can be considered to be “primary” key • Row key must be unique • Supports secondary indices (hash), sparse indices" • Ranges and orders supported by sorting hash index" • Index and data updates atomic" • Bloom filter for index caching "
Indexes on strings* • Row key can be considered to be “primary” key • Row key must be unique • Supports sparse indices" • Alphanumeric ranges supported on row key (sorted)*" • Index and data updates atomic (WAL)"
Indexes are actually views created by a map function" • Views created lazily" • Data stored at the leaf level (hence B+Tree)" • Indexes types string, number, boolean, array, object" • Supports secondary indices (multiple views), covering indices, sparse indices, geospatial indices (external module GeoCouch)" • Index and data updates atomic (MVCC)" • Background index creation supported"
binary safe strings • Intrinsically sparse" • Has a data type called a sorted set" • Hash table + skip lists for O(log n) insertion" • Index and data updates atomic"
is a term)" • All elements, element values, words indexed by default" • Supports secondary indices, range indices (for range and ordering), full text, geospatial indices, type compliance" • Index and data updates atomic" • Background index creation supported"