ViewsFlash uses an industry standard, distributed, fault-tolerant, scalable, database-resident Peer Architecture. This section describes the considerations you need to keep in mind to use it effectively.
ViewsFlash connects to the database with one set of parameters and expects all its tables to be within the same schema or database.
|All ViewsFlash instances, on multiple servers, store all their data in a relational database. All instances can perform all ViewsFlash functions equally, or some can be configured in front of a firewall for public access while others are configured behind the firewall for secure administration. In a load-balanced configuration, failover is completely automatic.
Polls, surveys, and their settings are defined by the administrators using the web-based administrative UI. These definitions are posted on the database and are available to all instances when needed. Each instance keeps cached copies of all needed objects. When an object is modified, a notice is written in a table which keeps a notification queue, which is read by all instances periodically; when an instance learns in this way that one of its cached objects is stale, it refreshes its cache from the database. This keeps all instances on all servers current while preserving the performance benefits of object caching.
Each instance is completely independent of all others. If a server crashes, upon restart the instance will refresh its objects from the database as needed and will automatically resume working with no intervention. Instances can be taken off and on line at any time.
For scalable live poll tallying, each ViewsFlash instance counts votes on its own and periodically updates the totals in the database. Meanwhile, in parallel, each instance periodically queries the database for totals to display when requested. All these intervals are set by servlet parameters; updating often gives virtually real-time results, while updating less often reduces overall system load and allows much larger voting volumes with no additional hardware.
Next: Using a database