The indexer performs session management, authorization, transaction management and command processing. Note that HANA has both a row store and a column store. Users can create tables using either store, but the column store has more capabilities. The index server also manages persistence between cached memory images of database objects, log files and permanent storage files.
The Authorization manager provides authentication and authorization services. The Authorization Manager can provide security based on SAML, OAuth or Kerberos authentication protocols.
The Extended Services (XS) Engine is a web server with privileged access to the database. Applications written with server-side JavaScript or as Java Servlets can be deployed to the XS Engine. These can either be HTML web applications or REST web service endpoints. Server-side JavaScript includes jQuery-based extensions for database access and to access HTTP request and response messages. The JavaScript engine is based on the Mozilla SpiderMonkey project.
Client applications access the HANA database directly using JDBC or via the Extended Services Engine using HTTP.
To overcome input/output bottlenecks, HANA was designed as an in-memory server, meaning that the first access to a table causes the entire table to be read and maintained in memory. Background processes maintain log files and the long-term disk storage. The query processor uses massively parallel processing. The column data store reduces the amount of data that needs to be read and eliminates the need for indexing.
Applications can bypass the SQL processor and access the Calculation Engine directly by composing XML-based queries. There are three types of non-SQL query objects: Attribute Views, Calculation Views and Analytic Views. In many cases, application performance can be increased by using these views instead of SQL queries.