Sundance Design Issues
Guiding Principle
Ease of Use is the #1 quality which should distinguish Sundance from the competition.
Load Balancing
We will not really have any dynamic load balancing in this release.Load balancing across servers will have to be handled by the admin'sattention to server resources when adding devices, users, etc.
Failover
Failover should not initiate unnecessarily. We should attempt to check with the WatchDog service on the failed server. Only if it cannot be reached or restartfails will failover be started.
In version 1.0, failover for SS's will require manual specification of failoverserver for each device, but we will try to make it easy to view current serverload for each of the available servers on the screen where this would be done.
In the next version, we would like to investigate a unified Storage Server solution wheremultiple SS's could be treated as a single virtual server, enabling significantly simplifiedand dynamic resource allocation. It is simply not practical at this time, however.
License Management
Do we have a clear plan on licensing? Genetec handles the Licensingthrough the Server Admin program, but I think their system is not good.Are we planning to use a USB key, an encrypted file, or some othermethod? We should know before attempting to design the license-handlingparts of the system.
Multi-Site Architecture
Each "site" will have its own MCS, which will serve as the Remote Gateway,and its own DB, which includes a distinct set of uniquely identified devices, users, permissions, logs, metadata, etc.
Remote (on another site) devices are made available by adding a "RemoteServer" within the Config Manager, which will allow individual or automaticimport of devices to the local site. Each device will be added to the remotesite DB as a "virtual device." The device can be used within the Remote Clientand Config Manager just as any other device (for Live View, Search, schedulingevents and actions, etc.), but can not be configured. User permissions, Live Viewer view definitions, etc., are assigned to the virtual device, and arecompletely independent of similar settings for the same device on its home site.
To make multi-site user management easier, could we include a "Remote User Import"feature in the Config Manager? This would create a user record in the current MCS withthe same username, and for every remote device that has a corresponding virtual device,it would assign the appropriate permissions matching the remote site.
Remote Gateway
Scheduling
Our current Scheduling GUI is patterned after Genetec, but is not easy tounderstand. Tim said that we need to have two interfaces, one simple, and one powerful. We still need to design the simple one.
Database Archival
Solution: DB Table Partitioning (see link)
Web Viewer
Simplified interface done with Silverlight, with IIS as the web Server
One advantage of this approach is it will give us experience with WPF while working on a simplified interface.
Silverlight is lightweight and cross platform, working on Windows, Macs, possibly Linux (using the Moonlight implementation), and browsers IE, Firefox, Safari, and Opera.
Alarms/Events
Export
Archived video can be exported to a video file such as an AVI file.This is different than Backups, which do not convert the format. Theactual export will be handled by the SS, but the resultant file can bedelivered to the client. This should be available through the Search moduleof the Remote Client.
Need WaterMark
Can export video with metadata
Reporting
Backup Tool
Backup is the process of copying the SS file-system content to a new location,either for the purpose of long-term archival (in which case backed-up contentcan be deleted from the SS) or for creating a sub-set of data for use with theBackup Viewer tool.
The GUI for performing backups will be available both as a tab in the Remote Client, and as a standalone utility, but these will use the same code-base. Backupsmay be performed locally on an SS using the standalone tool, but any manuallyinitiated backup (local or remote) will require user authentication against an MCS.
Client: When a backup is initiated by the client (either in the Remote Client or viathe standalone app), a separate process will be started which is independent of theparent process, will show up in the System Tray, and will continue to run after the calling app has closed.
Incoming backup requests (manual and scheduled) will be sent from the MCS.
"Scheduled" backups are handled the same as manual backups, with the requestsent by the MCS based on an action scheduled in the Config Manager. "Automated"backups are handled directly by the SS based on criteria specified in the ConfigManager, and do not necessarily involve scheduled times (e.g., could be based on available space, age of files, etc.). The SS may continually monitor its files to performthese automated backups as needed.
Admin Tool
Primary Function(?): Server Monitoring
The name "Admin Tool" is not good if primary function is monitoring server status. Perhaps "Server Guard" or "System Watch" would be better?
Each server will run WatchDog which monitors local services and restarts them as needed. Admin Tool can subscribe to Watchdog messages to show status of all servers in one central UI.
Although I think this should work as a standalone tool, I think the exactsame UI can be made available within the Config Manager (same code base).If you click on a Server (and have appropriate permissions), you should be able to see the server's status, failover settings, resource usage, etc.
Backup Viewer
This standalone utility is used for local playback from data stored inthe proprietary file system. It can be provided to investigators, police,etc., along with backed-up content from the SS.
Metadata
POS
POS Agent
After reviewing POS DB structure with Junsik, I think it is a good idea to havea general-purpose, denormalized, flat table for collecting metadata from a varietyof sources (POS, Video Analysis, etc.) and provide a way to map the flat data into a normalized structure. I'm thinking that we could use an XML-based columnmapping scheme, and each item that uses metadata will function as a plugin whichinsert/select data from the single flat table via its own data system (which can use a db, XML, dataset, CSV, etc.). This would enable us to implement a variety ofmetadata systems yet share a common mechanism for searching and presentingdata in columns in the interface.
Why is it helpful to have Metadata stored in a separate database? This seemslike a bad idea.
UJS: If do not separate databaseBackup database size is grow up, because metadata table is grow upWhy bad idea?
DH: Backup data grows the same if you have it in one database or two. What's thedifference? Two databases requires two connection strings and makes it morecomplicated to transfer data between tables. It complicates backup, archival, etc.
UJS: Ok, use one database
Video Analysis
I understand we will implement UI similar to Trium Video Analytics UI. Is thisgoing to be only in the Config Manager for setup? Or will it be a child screen ofthe Search UI in the Remote Client?UJS: Both ConfigManager and RemoteClient need VideoAnalytics UI.(ConfigManager : Need for live, RemoteClient : Need for search)
DH: I think those will be significantly different interfaces, won't they? One is used toset up parameters for VA on SS, one is used for Advanced Searches (object detect, motion detect, etc.). Maybe some parts are the same, but I think they will be quite different.
WatchDog
Monitors local services and restarts them as needed. Status information can be subscribed to using .Net Remoting or a different TCP method.
Installation
We should have a unified installer which allows the user to definethe role of the machine and automatically installs the correct apps.For example, a SS will automatically get the client apps, including theAdmin Tool, Backup Tool, Backup Viewer, etc., but a client-onlyinstall will only get the remote tools.
Software Updates (Update Agent)
If implemented, the Update Agent should be optional, and usershould have option to download updates but only initiate installsmanually (like Windows Update). An admin should be able to makethe option to disable updates unavailable to users.
Is it necessary to run an Update Agent as a separate process?Can't we check for updates from the client (via the MCS) and notifythe user? I dislike cluttering the Sys Tray and Task Manager withupdate apps that do nothing 99.9% of the time.
OSD
Multiple source of OSD data (POS, VA, SS device status, etc.) will becombined on Client using a scrolling system and different fonts/colors(customizable by users?) to distinguish sources.