Search icon CANCEL
Arrow left icon
Explore Products
Best Sellers
New Releases
Books
Videos
Audiobooks
Learning Hub
Conferences
Free Learning
Arrow right icon
Software Development on the SAP HANA Platform
Software Development on the SAP HANA Platform

Software Development on the SAP HANA Platform: Written by a SAP HANA expert, this book takes you from installation to running your own processes in no time. By the end of the course you'll have awesome data retrieval and analytical powers to call on.

eBook
€27.98 €39.99
Paperback
€48.99
Subscription
Free Trial
Renews at €18.99p/m

What do you get with a Packt Subscription?

Free for first 7 days. $19.99 p/m after that. Cancel any time!
Product feature icon Unlimited ad-free access to the largest independent learning library in tech. Access this title and thousands more!
Product feature icon 50+ new titles added per month, including many first-to-market concepts and exclusive early access to books as they are being written.
Product feature icon Innovative learning tools, including AI book assistants, code context explainers, and text-to-speech.
Product feature icon Thousands of reference materials covering every tech concept you need to stay up to date.
Subscribe now
View plans & pricing
Table of content icon View table of contents Preview book icon Preview Book

Software Development on the SAP HANA Platform

Chapter 1. So, What Is This SAP HANA Thing Anyways?

If you have an interest in the computing field of databases, business intelligence, or in-memory technology, you'll have most probably come across the term SAP HANA several times over the last couple of years. Over the course of the next 300 pages or so, we'll be taking a journey together through the SAP HANA development landscape, looking at most of the functions that SAP HANA provides us developers, in order to provide our users with a new outlook on their data and their daily workload.

The book is split into four main sections:

  • Chapters 1 and 2: Introduction and installation

  • Chapters 3, 4, 5, and 6: Database development in SAP HANA

  • Chapters 7, 8, 9, and 10: Ancillary functions useful to most developments

  • Chapter 11: The XS Engine for website development

In this chapter we'll take a fairly high-level look at SAP HANA and the technology that underlies the system. We'll start with a couple of comparisons to more traditional database systems, and then examine each of the advances in technology that have made SAP HANA's performance possible.

But what really is SAP HANA? The simplest answer to this question is that SAP HANA is a relational database system, just like Oracle or SQL Server, or MySQL. That's it, really? Not very exciting, when you think about it.

Of course, if that was the whole answer, then this book would be very short, so what else is there to tell?

Let's start with a very simple example of what SAP HANA can do for its users.

Time for action – statistics about internal commercial flights in the USA from 1998 to 2011


SAP markets their HANA database as being really, really fast. But how fast is it really, when there is a large amount of data in the system? The author decided to do a couple of tests to find out. Rather than creating some "fake" data, it was decided that using publicly available information would be better. This means that anyone else wanting to do some performance tests can repeat the experiment.

The US government, as a part of their "open" data initiative of making data available for analysis, released all the data concerning commercial flights inside the USA, starting in 1998 and going right through to the present day. You can find this at http://www.transtats.bts.gov/DL_SelectFields.asp?Table_ID=236&DB_Short_Name=On-Time.

After a couple of days of downloading the data (49 GB of CSV files), tidying it up a bit, and then loading it into SAP HANA and MySQL, it was possible to do a handful of comparisons on the two different database systems. To be fair, it has to be said that the MySQL machine has only 8 GB of memory, but it has an SSD, while the SAP HANA machine has 128 GB, but "real" disks.

As an indication of SAP HANA's data loading performance, each data file of around 1.5 GB and around five million lines, loaded using SAP HANA's native IMPORT FROM CSV FILE instruction, took approximately 45 seconds (on an average). That means around 100000 lines are loaded every second.

The first thing to note is the sheer data volume—we're talking about over 140 million lines of data, which is a reasonable dataset size. Many companies have this much data in their orders or stock movement tables, so doing a couple of stress tests on this dataset allows extrapolation on the performance which we can expect when we use SAP HANA for large applications.

Without explaining all the data fields available, we have some interesting information, such as the origin and destination airports, as well as the flight delay at departure and on arrival. With these fields, we can perform some interesting queries.

We'll start by taking a look at something relatively simple: count the number of flights leaving Los Angeles airport, per year. The SQL statement to achieve this is as follows; the syntax is same in any relational database. Don't worry, we won't be spending 300 pages writing SQL code.

SELECT YEAR, COUNT(*) FROM FLIGHT.ONTIME WHERE ORIGIN = 'LAX' GROUP BY YEAR

First up, let's see how MySQL fares with this query (age before beauty, as they say):

Two minutes for MySQL. Not bad at all. We could probably optimize this, at least a little, by creating an index on the ORIGIN and YEAR columns though.

Now how does SAP HANA do on the same query and same dataset:

Well the results of the SQL are the same—which proves no cheating is going on. The time taken to resolve a query on SAP HANA is slightly under 800 milliseconds and around 160 times faster than MySQL. Impressive stuff.

How about something a little more taxing? Let's count the number of flights per day of the week, and then sort them by the number of results.

To see how MySQL fares with this query, check the following screenshot:

Not too shabby I suppose. MySQL looks at the full 140 million-line dataset in less than three minutes. How much time does SAP HANA take for the same query?

Once again, we can see that SAP HANA returns the result in a couple of seconds, where MySQL needs nearly three minutes to do the same.

If we were to summarize these results, we could say that with SAP HANA:

  • The machine, working more efficiently, is less busy for less time, and can therefore do more work

With a more efficient database such as SAP HANA, your servers will be able to do even more work, getting necessary information into your users' hands faster, enabling them to spend more time analyzing data, rather than waiting for it.

What just happened?

We've just glanced through the simplest usage of SAP HANA: a "standard" (if rather fast) database. SAP HANA can be used to replace legacy databases in more or less any situation: the system provides connectors for several standard database-access protocols (ODBC and JDBC, notably), so just by unplugging your MySQL, PostgreSQL, or SQL server database, and replacing it with SAP HANA, you'll be getting immediate speedups.

Understanding the performance of SAP HANA


We noticed that SAP HANA is very fast, but how exactly are these performance measures achieved? In this section we'll take a look at some of the characteristics that make up a SAP HANA server and just how the performance that we have just seen is achieved.

Massively parallel execution

The first thing that SAP HANA does to speed up SQL queries is to break them down into manageable chunks. For the dataset we used in the previous examples, there were 140 million lines. The server that the SAP HANA database was running on in the previous example had 12 processors, so to speed up the queries, SAP HANA split the data into 12 chunks (of just under 12 million lines each) and ran the 12 queries all at the same time. Once the results from each subquery came in, SAP HANA then combined the results to provide the overall result.

The advantages of working in this way are immediate: today's computers, especially servers, have several CPUs, each of which has many CPU cores. By putting as many cores to work as possible, SAP HANA maximizes the power which the server can provide to every incoming query.

Most traditional databases claim to work in a similar manner—they run a handful of processes, and so are able to serve several queries at the same time. But there's a critical difference to this: nobody gets the full power of the server. In our example, the only time the server would be fully used is when 12 queries arrive all at the same time (and when a query only takes 800 milliseconds to serve in HANA, this would be relatively rare).

If we imagine a server as an image, it might look like the following image for a query on a legacy database:

We can see that the server runs the query on one of the CPU cores, and the other 11 sit idle waiting for work.

The same query running on SAP HANA might be shown something like this:

The query is running on all 12 CPU cores, making the most possible use of the server's power—and returning results around 12 times faster.

If the only innovation were parallel execution of queries, then on our example server shown here, SAP HANA would be faster 11 times out of every 12 queries received if all queries were received at exactly the same time. In all other scenarios, SAP HANA would systematically return query results faster than the legacy database.

Of course, parallel execution isn't the only trick up SAP HANA's sleeve, there's also….

Column-oriented table storage

In any given database, no matter how sophisticated, simple, fast, or slow it is, when it is boiled down, you end up with files of information on the computer's hard disk. The speed at which the database program can get at, interpret, and generally unravel these files impacts the database's perceived speed directly.

Let's picture a table in a database system. This table is a simplified (just for comprehension's sake) version of the table used in the previous section, concerning the US flight records.

Date

DayOfWeek

Origin

Destination

FlightTime

DepDelay

ArrDelay

19880101

5

LAX

JFK

305

10

15

19880102

6

LAX

JFK

301

3

4

19880103

7

LAX

JFK

311

-4

7

19880104

1

LAX

JFK

282

37

15

19880105

2

LAX

JFK

300

0

0

19880106

3

LAX

JFK

294

4

-2

19880107

4

LAX

JFK

284

16

0

In just about every database system used today (with some exceptions, mostly research projects at universities and a couple of relatively small open-source projects), data is stored in the files basically as you would expect, and might look something like this on disk:

198801015LAXJFK3051015198801026LAXJFK30134198801037LAXJFK311-47198801041LAXJFK2823715198801052LAXJFK30000198801063LAXJFK2944-2198801074LAXJFK284160

The fields have been laid out in the file as they appear in the table, starting with the first row, first field, then second field, and so on to the end of the first row. The operation is then repeated for the other rows in the table. While this is fairly unreadable to us, to a computer program, interpreting this file structure is no trouble at all.

Storing data in this way has one huge advantage for a database server: when you need to add a new line to a table, you just open the file, skip to the end, and write out your data. Adding data to the file is extremely fast.

Inversely, however, reading data can be relatively slow. If we ask the database for the time of the flight from LAX to JFK on the 6th of January 1988 (294 minutes), it has to read the data from the file, parse it until it gets to the Date field which contains 19880106, then skip to the next Origin field, check it contains LAX, then the Destination, checking it contains JFK, then to the FlightTime field to return the result.

Imagine the work necessary when there are millions of lines in the table.

Databases use indexes to speed up these searches. We might create an index on the FlightDate field, which would contain the address of the first character of the data for a given flight date. In the first line of the table, the FlightDate field starts at position 1 in the file. For the second line, it is position 23, and for the third line, position 43. Our index file might therefore look like this: 19880101-1, 19980102-23, 19930103-43, and so on.

This will speed up our data reads, especially if we create an index for FlightDate, Origin, and Destination in the case of the example query we've been looking at. The database system will open the index file (which is a lot simpler than the real data file), find the starting character of the needed data, then open the real data file, skip right to the correct place in the file, and read the data.

Of course, this increase in speed when reading data has one large drawback, we now have two files to maintain when we insert data. The data file must be updated and then any index files need to be updated, too. The more indexes we create to improve reading performance, the more we degrade the writing performance of our database. This, traditionally, has been a big problem in databases used both for transaction creation (so called OLTP, or online transaction processing) and reporting (OLAP, or online analytic processing). To put things simply, writing data and reading data are just not easily optimized at the same time on the same server.

If a query comes in for which there is no index, then the whole data file has to be read anyway, leading to the database administrator's worst nightmare: a "full table scan". This does just what its name suggests, it reads the whole data file (since no index exists there might be another line for 19980106 right at the end of the file, but we won't know that until we've read the whole file).

As you've probably figured out by now, this storage system is not usually how SAP HANA does things. As well as being able to use row-based tables, SAP HANA usually stores data in a column-oriented manner.

Consider a data table such as the following one existing in the database:

Row1-Field1

Row1-Field2

Row1-Field3

Row2-Field1

Row2-Field2

Row2-Field3

Row3-Field1

Row3-Field2

Row3-Field3

Rather than storing the data as:

Row1-Field1, Row1-Field2, Row1-Field3, Row2-Field1, Row2-Field2, and so on.

A column-oriented database stores data as:

Row1-Field1, Row2-Field1, Row3-Field1, Row1-Field2, Row1-Field2, and so on.

If we take another look at the example table we saw earlier in this chapter, that would give us a storage file something like this:

Note

This layout is shown for example purposes, this layout type is true for some column-oriented databases, but SAP HANA does not store the data files exactly like the following storage file, it takes the storage to another level that will be explained in a moment.

198801011988010219880103198801041988010519880106198801075671234LAXLAXLAXLAXLAXLAXLAXJFKJFKJFKJFKJFKJFKJFK305301311282300294284103-43704161547150-20

What difference does this way of storing data make? When you read the table to do reporting, for example, all the values of a column are stored together, so if we need to find "all the rows for January 6th, 1988" then we don't need to look at the whole file, just the first part, which contains the first column. There's no need to read, skip forward, check, read, skip forward, and so on.

SAP HANA takes this one step further, storing each column in a separate file:

Col1:19880101198801021988010319880104198801051988010619880107

Col2:5671234

Col3:LAXLAXLAXLAXLAXLAXLAX

Col4:JFKJFKJFKJFKJFKJFKJFK

Col5:305301311282300294284

Col6:103-4370416

Col7:1547150-20

If SAP HANA needs to answer the query we saw earlier (the time of the flight from LAX to JFK on the 6th of January 1988), then the server can again cut the query into several components:

FlightDate = 19880106

Origin = LAX

Destination = JFK

Information to return = FLIGHTDATE

These components can be run in parallel, one CPU handling each of the tests, finding the row numbers which match:

FlightDate = 19880106 – Matching row(s) = 6

Origin = LAX – Matching row(s) = 1,2,3,4,5,6,7

Destination = JFK – Matching Row(s) = 1,2,3,4,5,6,7

Finally all that needs to be done is to find the union of each sub-result set (row 6), and return the final result (which is 294 minutes).

Of course, if reading is optimized then we can wonder whether writing to the database is much slower. As it happens, by storing each column in a separate file, SAP HANA can provide the optimum speed we saw originally in the row-based database system. When a new database row needs to be added to the table, SAP HANA just has to open each individual file, add the appropriate column-value to the end of the file, and then close the file. This can even be done to the columns in parallel.

As we can see, storing data in columns can greatly speed up queries on the database, but column storage allows SAP HANA one more trick which would be difficult with a row-storage database and that is…

Data compression

If we take another look at our example table (admittedly, the example is rather extreme), we have in the ORIGIN and DESTINATION columns, seven values and they're all the same. It's rather a shame to store all seven values; it would be much more space-friendly to store each unique value, and a list of the rows it was present in, something like this:

Col1:19880101198801021988010319880104198801051988010619880107

Col2:5671234

Col3:LAX(7)

Col4:JFK(7)

Col5:305301311282300294284

Col6:103-4370416

Col7:1547150-20

The database could see that in column 3, there are seven occurrences of the value LAX. The space used by this column has just been divided by seven. Imagine the space savings on a database table of 200 million sales order lines, all of which are in USD. The savings in disk space, and therefore in the time it takes for the disk to find data are potentially huge.

It has to be noted that compression has an impact on performance, especially when data is added to the database. Column files need to be uncompressed, new data added, and then recompressed to maintain both compression quality and optimum read speed. In order not to penalize users when data is written to the database, SAP HANA keeps two separate versions of a column file. The main storage contains the compressed table contents, and the delta storage contains data freshly added to the database and which hasn't been compressed yet. When the system is idle, or when the delta storage represents a certain percentage of the main storage, the table is recompressed in the background.

Of course, we could ask why data compression is such a big deal when disks are so cheap nowadays, and that's where SAP HANA's (probably) best playing card can be brought out.

In-memory technology

SAP HANA tries as much as possible to not serve data from hard disks. They're just too slow. Whenever a table is requested in a query, SAP HANA loads the whole table into memory, and from then on, serves the query results directly from memory. Reading from memory has been, for many years, a few orders of magnitude faster than reading data from hard disks (SSDs have clawed back some of the hard disk losses, but they're still much, much slower than main memory).

Keeping all the data in memory means that accessing it is at least 150 times faster.

Of course, this means that SAP HANA can't really be run on "just any old server". How many machines have you seen with, say 128 GB of RAM? 256 GB? 1 Tera? Not many, and that's why SAP HANA isn't sold as a piece of software you can "just install".

SAP HANA as an appliance

SAP only sells HANA as an appliance. You cannot purchase SAP HANA as a DVD set from SAP. You have to purchase an appliance which is a certified server configuration from one of the SAP's hardware partners such as Dell, Cisco, or IBM. The hardware partner builds the machine to SAP's specifications, has it certified by SAP as conforming to the requirements of the SAP HANA database, and then installs SAP HANA on it. You can purchase the SAP HANA license from SAP, but the software and the hardware are actually sold together as a bundle: an appliance.

This method allows SAP much greater control over the SAP HANA ecosphere, guaranteeing a certain level of performance from the database, and keeping support calls to a reasonable level.

Since the servers are all configured to a certain level, SAP can more easily tell customers what performance they are likely to achieve from their SAP HANA installation.

Full information about SAP partners' available configurations for SAP HANA appliances are available from the sap.com website at http://www.sap.com/solutions/technology/in-memory-computing-platform/hana/partners/index.epx and click on the SAP HANA available hardware configurations link.

This document requires a SAP Service Marketplace login for downloading, but here is a sample screenshot:

Summary


You now have a general idea of what makes SAP HANA different from traditional database systems. SAP HANA is a complete system: a massively-parallel, column-oriented, in-memory database appliance, offering several technological differences to other database systems in order to give superior performance over a number of use cases.

There are several other functions offered by SAP HANA, such as complex data models handled natively, an integrated development environment, and other features. These make the system a complete, integrated option allowing businesses to rethink their database management, and allowing users faster access to their data, and ultimately allowing them to spend their time analyzing the data, not waiting for it.

In the next chapter, we'll be taking a closer look at the SAP HANA development environment, the SAP HANA Studio. This is an Eclipse-based tool giving access to all aspects of the SAP HANA appliance.

Left arrow icon Right arrow icon

What you will learn

  • How to install a SAP HANA environment
  • How to run your first HANA development
  • How to fully utilize each ?view? to maximize the power that SAP HANA offers
  • How to create a reporting user and give them the correct authorizations
  • How to deploy your reporting application to reporting software

Product Details

Country selected
Publication date, Length, Edition, Language, ISBN-13
Publication date : Jul 11, 2013
Length: 328 pages
Edition :
Language : English
ISBN-13 : 9781849689403
Vendor :
SAP
Category :
Tools :

What do you get with a Packt Subscription?

Free for first 7 days. $19.99 p/m after that. Cancel any time!
Product feature icon Unlimited ad-free access to the largest independent learning library in tech. Access this title and thousands more!
Product feature icon 50+ new titles added per month, including many first-to-market concepts and exclusive early access to books as they are being written.
Product feature icon Innovative learning tools, including AI book assistants, code context explainers, and text-to-speech.
Product feature icon Thousands of reference materials covering every tech concept you need to stay up to date.
Subscribe now
View plans & pricing

Product Details

Publication date : Jul 11, 2013
Length: 328 pages
Edition :
Language : English
ISBN-13 : 9781849689403
Vendor :
SAP
Category :
Tools :

Packt Subscriptions

See our plans and pricing
Modal Close icon
€18.99 billed monthly
Feature tick icon Unlimited access to Packt's library of 7,000+ practical books and videos
Feature tick icon Constantly refreshed with 50+ new titles a month
Feature tick icon Exclusive Early access to books as they're written
Feature tick icon Solve problems while you work with advanced search and reference features
Feature tick icon Offline reading on the mobile app
Feature tick icon Simple pricing, no contract
€189.99 billed annually
Feature tick icon Unlimited access to Packt's library of 7,000+ practical books and videos
Feature tick icon Constantly refreshed with 50+ new titles a month
Feature tick icon Exclusive Early access to books as they're written
Feature tick icon Solve problems while you work with advanced search and reference features
Feature tick icon Offline reading on the mobile app
Feature tick icon Choose a DRM-free eBook or Video every month to keep
Feature tick icon PLUS own as many other DRM-free eBooks or Videos as you like for just €5 each
Feature tick icon Exclusive print discounts
€264.99 billed in 18 months
Feature tick icon Unlimited access to Packt's library of 7,000+ practical books and videos
Feature tick icon Constantly refreshed with 50+ new titles a month
Feature tick icon Exclusive Early access to books as they're written
Feature tick icon Solve problems while you work with advanced search and reference features
Feature tick icon Offline reading on the mobile app
Feature tick icon Choose a DRM-free eBook or Video every month to keep
Feature tick icon PLUS own as many other DRM-free eBooks or Videos as you like for just €5 each
Feature tick icon Exclusive print discounts

Frequently bought together


Stars icon
Total 132.97
Software Development on the SAP HANA Platform
€48.99
SAP ABAP Advanced Cookbook
€41.99
SAP HANA Cookbook
€41.99
Total 132.97 Stars icon

Table of Contents

11 Chapters
So, What Is This SAP HANA Thing Anyways? Chevron down icon Chevron up icon
SAP HANA Studio – Installation and First Look Chevron down icon Chevron up icon
Your First SAP HANA Development – An Attribute View Chevron down icon Chevron up icon
Painting with Numbers – An Analytic View Chevron down icon Chevron up icon
Let's Get Graphical – Graphical Calculation Views Chevron down icon Chevron up icon
You Talking to Me? – Scripted Calculation Views Chevron down icon Chevron up icon
Hey! That's My Data! – Authorizations in SAP HANA Chevron down icon Chevron up icon
On Another Level – Hierarchies in SAP HANA Chevron down icon Chevron up icon
Deploying Your Reporting Application to Reporting Software Chevron down icon Chevron up icon
Data Provisioning Using Data Services Chevron down icon Chevron up icon
Application Development Using the XS Engine Chevron down icon Chevron up icon

Customer reviews

Rating distribution
Full star icon Full star icon Full star icon Half star icon Empty star icon 3.3
(3 Ratings)
5 star 0%
4 star 33.3%
3 star 66.7%
2 star 0%
1 star 0%
Belecci Oct 06, 2013
Full star icon Full star icon Full star icon Full star icon Empty star icon 4
Für das Buch habe ich knapp die Hälfte bezahlt, verglichen mit itunes-Preis, was sehr günstig ist.Bislang bin ich nicht schlauer geworden, warum ich das Ganze in der Form brauchen soll.Vielleicht kommt noch der Teil, wie ich dies im Sap einsetzen kann.
Amazon Verified review Amazon
Awor Leonard Apr 26, 2015
Full star icon Full star icon Full star icon Empty star icon Empty star icon 3
Not so much detailed as I expected
Amazon Verified review Amazon
Mr. Thomas P. Jung Oct 10, 2013
Full star icon Full star icon Full star icon Empty star icon Empty star icon 3
Please note: the publisher provided a free copy of the digital version of the book to me for the purposes of review.I have mixed feelings about this book. Most the content is pretty good, but there are two major points I would make against this book which I think potential readers should take into consideration.1. The title and description is completely inaccurate. This isn't a book about Software Development on HANA. It is a book about Information Modeling on HANA. It doesn't cover SQLScript Procedures/AFL/Table Creation/Schemas/Sequences/etc. It is OK for information modeling; but that alone. If your focus is only learning more about Information Modeling, then this is probably a source you should check out. However if you want holistic SAP HANA Development, you will certainly be disappointed by how much this book doesn't cover.2. While true that it contains one chapter on XSJS/UI5; the approach suggested by this chapter is completely wrong. I can't possibly stress this enough: I strongly warn people that the information in this chapter should largely be avoided at all costs and will actually lead you down a very incorrect path. I think the author completely misunderstands how XSJS should work and that misunderstanding comes out strongly in this chapter. The author proposes using XSJS to generate HTML mixed with your data. This is so completely against everything SAP suggests for the use of UI5 and XSJS. XSJS services should be pure data and contain no UI formating. The UI should be client side and only call XSJS services as REST services when data is needed or events which need processing on the server occur.Furthermore I tracked a list of smaller items of inaccuracy and outright incorrect information.My overall opinion: The author is someone who is strong in creating information models (Attribute/Analytic/Calculation views), but doesn't really have good experience with SAP HANA Development in the broader sense. If the book had only been advertised and contained information on this subset, it would actually be quite good. However by trying to expand into areas the author doesn't really understand, he does a disservice to the reader.
Amazon Verified review Amazon
Get free access to Packt library with over 7500+ books and video courses for 7 days!
Start Free Trial

FAQs

What is included in a Packt subscription? Chevron down icon Chevron up icon

A subscription provides you with full access to view all Packt and licnesed content online, this includes exclusive access to Early Access titles. Depending on the tier chosen you can also earn credits and discounts to use for owning content

How can I cancel my subscription? Chevron down icon Chevron up icon

To cancel your subscription with us simply go to the account page - found in the top right of the page or at https://subscription.packtpub.com/my-account/subscription - From here you will see the ‘cancel subscription’ button in the grey box with your subscription information in.

What are credits? Chevron down icon Chevron up icon

Credits can be earned from reading 40 section of any title within the payment cycle - a month starting from the day of subscription payment. You also earn a Credit every month if you subscribe to our annual or 18 month plans. Credits can be used to buy books DRM free, the same way that you would pay for a book. Your credits can be found in the subscription homepage - subscription.packtpub.com - clicking on ‘the my’ library dropdown and selecting ‘credits’.

What happens if an Early Access Course is cancelled? Chevron down icon Chevron up icon

Projects are rarely cancelled, but sometimes it's unavoidable. If an Early Access course is cancelled or excessively delayed, you can exchange your purchase for another course. For further details, please contact us here.

Where can I send feedback about an Early Access title? Chevron down icon Chevron up icon

If you have any feedback about the product you're reading, or Early Access in general, then please fill out a contact form here and we'll make sure the feedback gets to the right team. 

Can I download the code files for Early Access titles? Chevron down icon Chevron up icon

We try to ensure that all books in Early Access have code available to use, download, and fork on GitHub. This helps us be more agile in the development of the book, and helps keep the often changing code base of new versions and new technologies as up to date as possible. Unfortunately, however, there will be rare cases when it is not possible for us to have downloadable code samples available until publication.

When we publish the book, the code files will also be available to download from the Packt website.

How accurate is the publication date? Chevron down icon Chevron up icon

The publication date is as accurate as we can be at any point in the project. Unfortunately, delays can happen. Often those delays are out of our control, such as changes to the technology code base or delays in the tech release. We do our best to give you an accurate estimate of the publication date at any given time, and as more chapters are delivered, the more accurate the delivery date will become.

How will I know when new chapters are ready? Chevron down icon Chevron up icon

We'll let you know every time there has been an update to a course that you've bought in Early Access. You'll get an email to let you know there has been a new chapter, or a change to a previous chapter. The new chapters are automatically added to your account, so you can also check back there any time you're ready and download or read them online.

I am a Packt subscriber, do I get Early Access? Chevron down icon Chevron up icon

Yes, all Early Access content is fully available through your subscription. You will need to have a paid for or active trial subscription in order to access all titles.

How is Early Access delivered? Chevron down icon Chevron up icon

Early Access is currently only available as a PDF or through our online reader. As we make changes or add new chapters, the files in your Packt account will be updated so you can download them again or view them online immediately.

How do I buy Early Access content? Chevron down icon Chevron up icon

Early Access is a way of us getting our content to you quicker, but the method of buying the Early Access course is still the same. Just find the course you want to buy, go through the check-out steps, and you’ll get a confirmation email from us with information and a link to the relevant Early Access courses.

What is Early Access? Chevron down icon Chevron up icon

Keeping up to date with the latest technology is difficult; new versions, new frameworks, new techniques. This feature gives you a head-start to our content, as it's being created. With Early Access you'll receive each chapter as it's written, and get regular updates throughout the product's development, as well as the final course as soon as it's ready.We created Early Access as a means of giving you the information you need, as soon as it's available. As we go through the process of developing a course, 99% of it can be ready but we can't publish until that last 1% falls in to place. Early Access helps to unlock the potential of our content early, to help you start your learning when you need it most. You not only get access to every chapter as it's delivered, edited, and updated, but you'll also get the finalized, DRM-free product to download in any format you want when it's published. As a member of Packt, you'll also be eligible for our exclusive offers, including a free course every day, and discounts on new and popular titles.