Title Page Copyright and Credits Seven NoSQL Databases in a Week Dedication Packt Upsell Why subscribe? PacktPub.com Contributors About the authors Packt is searching for authors like you Preface Who this book is for What this book covers To get the most out of this book Download the example code files Download the color images Conventions used Get in touch Reviews Introduction to NoSQL Databases Consistency versus availability ACID guarantees Hash versus range partition In-place updates versus appends Row versus column versus column-family storage models Strongly versus loosely enforced schemas Summary MongoDB Installing of MongoDB MongoDB data types The MongoDB database MongoDB collections MongoDB documents The create operation The read operation Applying filters on fields Applying conditional and logical operators on the filter parameter The update operation The delete operation Data models in MongoDB The references document data model The embedded data model Introduction to MongoDB indexing The default _id index Replication Replication in MongoDB Automatic failover in replication Read operations Sharding Sharded clusters Advantages of sharding Storing large data in MongoDB Summary Neo4j What is Neo4j? How does Neo4j work? Features of Neo4j Clustering Neo4j Browser Cache sharding Help for beginners Evaluating your use case Social networks Matchmaking Network management Analytics Recommendation engines Neo4j anti-patterns Applying relational modeling techniques in Neo4j Using Neo4j for the first time on something mission-critical Storing entities and relationships within entities Improper use of relationship types Storing binary large object data Indexing everything Neo4j hardware selection, installation, and configuration Random access memory CPU Disk Operating system Network/firewall Installation Installing JVM Configuration High-availability clustering Causal clustering Using Neo4j Neo4j Browser Cypher Python Java Taking a backup with Neo4j Backup/restore with Neo4j Enterprise Backup/restore with Neo4j Community Differences between the Neo4j Community and Enterprise Editions Tips for success Summary References  Redis Introduction to Redis What are the key features of Redis? Performance Tunable data durability Publish/Subscribe Useful data types Expiring data over time Counters Server-side Lua scripting Appropriate use cases for Redis Data fits into RAM Data durability is not a concern Data at scale Simple data model Features of Redis matching part of your use case Data modeling and application design with Redis Taking advantage of Redis' data structures Queues Sets Notifications Counters Caching Redis anti-patterns Dataset cannot fit into RAM Modeling relational data Improper connection management Security Using the KEYS command Unnecessary trips over the network Not disabling THP Redis setup, installation, and configuration Virtualization versus on-the-metal RAM CPU Disk Operating system Network/firewall Installation Configuration files Using Redis redis-cli Lua Python Java Taking a backup with Redis Restoring from a backup Tips for success Summary References Cassandra Introduction to Cassandra What problems does Cassandra solve? What are the key features of Cassandra? No single point of failure Tunable consistency Data center awareness Linear scalability Built on the JVM Appropriate use cases for Cassandra Overview of the internals Data modeling in Cassandra Partition keys Clustering keys Putting it all together Optimal use cases Cassandra anti-patterns Frequently updated data Frequently deleted data Queues or queue-like data Solutions requiring query flexibility Solutions requiring full table scans Incorrect use of BATCH statements Using Byte Ordered Partitioner Using a load balancer in front of Cassandra nodes Using a framework driver Cassandra hardware selection, installation, and configuration RAM CPU Disk Operating system Network/firewall Installation using apt-get Tarball installation JVM installation Node configuration Running Cassandra Adding a new node to the cluster Using Cassandra Nodetool CQLSH Python Java Taking a backup with Cassandra Restoring from a snapshot Tips for success Run Cassandra on Linux Open ports 7199, 7000, 7001, and 9042 Enable security Use solid state drives (SSDs) if possible Configure only one or two seed nodes per data center Schedule weekly repairs Do not force a major compaction Remember that every mutation is a write The data model is key Consider a support contract Cassandra is not a general purpose database Summary References HBase Architecture Components in the HBase stack Zookeeper HDFS HBase master HBase RegionServers Reads and writes The HBase write path HBase writes – design motivation The HBase read path HBase compactions System trade-offs Logical and physical data models Interacting with HBase – the HBase shell Interacting with HBase – the HBase Client API Interacting with secure HBase clusters Advanced topics HBase high availability Replicated reads HBase in multiple regions HBase coprocessors SQL over HBase Summary DynamoDB The difference between SQL and DynamoDB Setting up DynamoDB Setting up locally Setting up using AWS The difference between downloadable DynamoDB and DynamoDB web services DynamoDB data types and terminology Tables, items, and attributes Primary key Secondary indexes Streams Queries Scan Data types Data models and CRUD operations in DynamoDB Limitations of DynamoDB Best practices Summary InfluxDB Introduction to InfluxDB Key concepts and terms of InfluxDB Data model and storage engine Storage engine Installation and configuration Installing InfluxDB Configuring InfluxDB Production deployment considerations Query language and API Query language Query pagination Query performance optimizations Interaction via Rest API InfluxDB API client InfluxDB with Java client InfluxDB with a Python client InfluxDB with Go client InfluxDB ecosystem Telegraf Telegraf data management Kapacitor InfluxDB operations Backup and restore Backups Restore Clustering and HA Retention policy Monitoring Summary Other Books You May Enjoy Leave a review - let other readers know what you think