FAQ

Q: What operating systems does TACC® work with?

A: TACC runs on a variety of Linux distributions. OptumSoft works with customers with specific requirements to qualify TACC on the particular version needed. On a controlled-release basis, OptumSoft supports the TACC agent runtime on versions of Microsoft Windows Server.

 

Q: What programming languages can I use with TACC?

A: Currently supported languages are C++, Python, and (in an upcoming release) Java. Other language bindings can be added, based on customer requirements.

 

Q: What are the memory requirements for TACC?

A: The TACC runtime, including all user processes and databases, is in use on systems with 512MB memory, although for specialized applications, TACC can run in systems significantly smaller. For large distributed clusters, TACC operates under the control of the TACC systems and service management components, operated by a systems administrator who can add and remove applications servers and database components, and upgrade or roll back the various components. For all practical purposes, there is no upper bound on how much memory TACC can use.

 

Q: How do I try out TACC?

A: The product is available as a starter kit that enables rapid prototyping of applications. However, unlike other prototyping frameworks, TACC automatically generates code for production quality features like scalability, in-service software upgrade, and fault tolerance. You can deploy your application without modification on scalable clusters of physical or virtual machines, with HA failover and sharding, as required. License terms provide an affordable way for engineers to develop proof-of-concept capabilities.

 

Q: Is TACC a Beta product?

A: TACC is a general release product and is used in production environments over multiple years by customers including a global computer networking company and a MMOG (massive multi-player online game).

 

Q: How scalable is TACC?

A: The product is designed for extreme, cloud-grade scalability with features such as automatic sharding to spread data across physical or virtual machines, dynamic in-service scale-up and scale-down across physical servers and virtual machines, and automatic incremental or real-time state replication among sysdbs running on separate machines.

 

Q: Does TACC have a SQL or NoSQL database architecture?

A: TACC stores things as objects, which is similar to a NoSQL database with a key-value store. TACC is different from other NoSQL databases in that read and write access to each object is local to the application process, and TACC handles consistency with the master location and other processes sharing the same objects. Additionally, TACC objects are not limited to simple string values, but can contain complex, nested data structures with binary storage for efficiency.

 

Q: What type of high availability does TACC provide?

A: TACC provides built-in support for high availability (HA) with automated failover, in-service software upgrades, and user-extensible application modules.

Even in simple deployments, TACC provides robust fault tolerance. By following OptumSoft’s guidelines to implement applications using simple small single-threaded processes, a failure or restart of a process is isolated from the rest of the system. In the case of a restart, a process retrieves state from the object database typically in less than 10 milliseconds. This also means that you have the flexibility to upgrade application modules or fix bugs without restarting the whole system.

For HA use cases, TACC can be configured for 1+1 redundancy and automatically create secondary object stores that are synchronized with the primary databases. Failover from a primary to a secondary object store usually takes less than 100 milliseconds. By using redundancy for the object store, you get the additional benefit that you can upgrade schema definitions in-service. TACC can also be configured with additional levels of redundancy.

TACC also has a master identification mechanism based on a distributed consensus algorithm to ensure consistency support for dynamic in-service scale-up and scale-down across physical servers and virtual machines, and automatic incremental or real-time state replication among in-memory databases running on separate machines.

 

Q: How is programming with TACC different from using other databases?

A: Using TACC requires you to define the schemas and implement your business logic, like traditional databases. Using TACC, you focus on the data flow of your application and writing modular business logic, not inter-process communication and data management code. The result is that systems using the TACC framework and the TACC architecture are typically smaller and have an optimized code base that is easier to maintain and develop.

 

Q: I need a publish-subscribe system–can I use TACC?

A: Although the terminology used with TACC is slightly different, TACC does provide similar capabilities. TACC supports stateful publish-subscribe to keep distributed copies of objects updated. Like popular publish-subscribe systems, TACC automatically handles communications tasks, simplifying what you have to design and program.