Book Image

Mastering RethinkDB

By : Shahid Shaikh
Book Image

Mastering RethinkDB

By: Shahid Shaikh

Overview of this book

RethinkDB has a lot of cool things to be excited about: ReQL (its readable,highly-functional syntax), cluster management, primitives for 21st century applications, and change-feeds. This book starts with a brief overview of the RethinkDB architecture and data modeling, and coverage of the advanced ReQL queries to work with JSON documents. Then, you will quickly jump to implementing these concepts in real-world scenarios, by building real-time applications on polling, data synchronization, share market, and the geospatial domain using RethinkDB and Node.js. You will also see how to tweak RethinkDB's capabilities to ensure faster data processing by exploring the sharding and replication techniques in depth. Then, we will take you through the more advanced administration tasks as well as show you the various deployment techniques using PaaS, Docker, and Compose. By the time you have finished reading this book, you would have taken your knowledge of RethinkDB to the next level, and will be able to use the concepts in RethinkDB to develop efficient, real-time applications with ease.
Table of Contents (16 chapters)
Mastering RethinkDB
Credits
About the Author
About the Reviewer
www.PacktPub.com
Preface

Project structure


We are using Node.js in the middle-layer. Node.js code needs to be properly structured to maintain and reuse it in future. In this section, we are going to divide our application in a way to achieve high cohesion and less code coupling.

Here is our project structure:

  • Controllers

  • Models

  • Node_modules

  • View

  • app.js file

  • Package.json

The code base is separated in models (code dealing with database), controllers (code dealing with models and view), and view (frontend of the application). This kind of code division is proven to be more robust and highly cohesive.

Controllers generally take care of routes and communication between models and views. They accept the request from the view, transfers it to the model, and then updates the view when it receives the data from the the models.

Models contain code dealing with database operation. Models are not exposed to the outside world, that is, the frontend cannot call model code directly. Every request must go through controllers to models and...