


                Terms:

                Horizontal Scalability -> add more servers (Nodes) to the 
                                           Database (Cluster)

                Cluster -> a single Cassandra Database Server, that spans servers/data centers
                            a Cluster is configured via the cassandra.yaml file
                            so all the server in the cluster must have the same
                            cluster name in thier cassandra.yaml files

                Node -> a instance of the Java software running, and is part of
                         a cluster (a server within the cluster) a Node uses
                         cassandra.yaml as the config file, a Node hosts 
                         a set of Token ranges (vnodes)

                Partition -> part of the set of records, for example
                               I have a Netfix like set of movies
                               and some of these movies are on Node #3
                               and other are on Node #9, a partition is
                               part of the DB table, is defined by the 
                               hash value (the Token number) of the Partition part
                               of the Primary Key
                                       
               Nodetool -> is the primary DBA tool to look and manage a Cluster
               
               CQL -> Cassandra Query Language, it is NOT SQL, but it looks like it
                     if there is no WHERE clause, you are "searching the world"
                     if there is a WHERE clause it is RESTRICTED to the columns
                     listed in the Primary key (left to right)
               
               KeySpace -> is a collection of related Tables (think Database)
                            a single cluster hosts several Keyspaces
                            including System Keyspaces, Keyspaces define
                            the Replication Factor (RF)
                            
               Table -> a collection of records, each Table MUST have a primary Key
                        which is a "parts" (a Logical concept), the Primary Key
                        (left to right) is the Partiton Key ( ), followed 
                        by zero or more Clustering Columns 
                            
               Token -> a number between +/- 2^64 and a Node hosts a range of Tokens
                         and Cassaandra moves Token ranges (the records) when a Node
                         joins of leaves the Cluster (Ring)
               
               Clustering Columns -> how to sort the data within a Partition   
               
               Primary Key -> a unique record id, it consists of these parts:
                               1) the Partition Key (required)
                               2) zero of more Clustering Columns (how the records
                                      within this partition are sorted on disk)
                            
               Ring -> a logical arrangement of the Nodes, this is node visual
                        to the developer, nor does the developer care, it is used
                        by Cassandra to manage the communication and the Token ranges
                        the only time a Data Modeler cares about a the Ring is when
                        the KeySpace uses a SimpleStrategy for Repication
                        this will use the "next" node in the ring to host the 
                        second copy of the partition, for example
                        if I define 
                         CREATE KEYSPACE sales
                                 WITH REPLICATION = {'class' : 'SimpleStrategy',3};
                        and the Partition Key hashs to Token #28727 on Node #5
                        so Node #5 host the "primary" copy of the data, and Node #6
                        hosts copy #2, and Node #7 hosts copy #3, these Node COULD be
                        in the same DataCenter or the same Rack 
                        
                        
                        
                        
                        
                        
                        
                            
                            
               
