Friday, May 31, 2013

Characteristic Errors, Revision 2

UPDATE: See the latest version of this article here.


Back on August 5, 2011 this list had 22 items, now it has 27...


A characteristic error is an error that is so easy to make that it appears you are being actively encouraged to make it by the very nature of the computer program you are using.

For example, sending an email without the attachment is a characteristic error of all email programs.
...except Gmail. Gmail warns you about missing attachments... Gmail is magic!
Here are some errors that are characteristic of SQL in general, SQL Anywhere in particular, and some companion programs.
  1. SQL: Seeing too little data, or no data at all, because a predicate in the WHERE clause effectively turned your OUTER JOIN into an INNER JOIN.

  2. SQL: Seeing too much data because a missing predicate effectively turned your INNER JOIN into a CROSS JOIN.

  3. SQL: Getting the wrong COUNT() or SUM() because you forgot to code WHERE ... IS NOT NULL, or you *did* code it when you shouldn't have.

  4. SQL: Getting the wrong answer because you forgot that, in general, NULL values [cough] suck.

  5. SQL Anywhere: Not seeing MESSAGE output because you forgot to run SET TEMPORARY OPTION DEBUG_MESSAGES = 'ON';

  6. SQL Anywhere: Not seeing any data because you forgot ON COMMIT PRESERVE ROWS or NOT TRANSACTIONAL.

  7. SQL Anywhere: Coding ENDIF where END IF was required, or vice versa (before Version 11).

  8. SQL Anywhere: Connecting to the wrong server because you forgot DOBROAD=NONE (before Version 12).

  9. SQL Anywhere: Forgetting the asterisk in SELECT TOP 10 FROM ...

  10. SQL Anywhere: Coding IF NOT VAREXISTS ( 'x' ) THEN ... instead of IF VAREXISTS ( 'x' ) = 0 THEN ...

  11. SQL Anywhere: Coding the wrong magic numbers 1, 2, 3, ... in the get_value() and set_value() calls in an EXTERNAL C DLL function.

  12. SQL Anywhere: Getting proxy table ODBC errors because the engine's running as a service and you've set up a User DSN instead of System DSN.

  13. SQL Anywhere: Getting file-related errors because the file specifications are relative to the server rather than the client.

  14. SQL Anywhere: Getting file-related errors because the engine's running as a service without the necessary permissions.

  15. SQL Anywhere: Coding CREATE TRIGGER IF NOT EXISTS instead of CREATE OR REPLACE TRIGGER, or vice versa for CREATE TABLE (in 11.0.1 or later).

  16. SQL Anywhere: Getting integer arithmetic when you wanted fractional parts because you forgot to CAST.

  17. Stored procedure debugger: Setting it to watch a specific user id other than the one you're using to test your code.

  18. Sybase Central: Setting it to display objects for owner names other than the one you're interested in.

  19. Copy and paste: Forgetting to edit after pasting; e.g., Copy and paste SET @continue = 'Y' into the body of a WHILE loop and then forgetting to change it to 'N'.

  20. MobiLink: Forgetting to call ml_add_column for any of the columns you're trying to synchronize, thus guaranteeing yourself a "Sassen Frassen Fricken Fracken!" moment when you run the first test.

  21. MobiLink: Forgetting to call ml_add_[various] with the NULL parameter to delete old ml_[whatever] rows, thus ending up with thousands of orphan system table rows in the consolidated database.

  22. OLAP Windowing: Coding the wrong combination of ASC and DESC in an inner OVER ORDER BY clause and the outer SELECT ORDER BY: different when they should be the same, the same when they should be different, or some other variation of "wrong combination"...
    SELECT older_sample_set.sample_set_number
                  INTO @20_older_sample_set_number
                  FROM ( SELECT TOP 20
                                ROW_NUMBER() OVER ( ORDER BY rroad_sample_set.sample_set_number ASC ) AS scrolling_row_number,
                                rroad_sample_set.sample_set_number                                    AS sample_set_number
                           FROM rroad_sample_set
                          WHERE rroad_sample_set.sampling_id       = @sampling_id
                            AND rroad_sample_set.sample_set_number < @sample_set_number
                          ORDER BY rroad_sample_set.sample_set_number DESC ) AS older_sample_set
                 WHERE older_sample_set.scrolling_row_number = 20;

    New entries...

  23. MobiLink: Forgetting to call ml_add_column() when trying to use named parameters instead of "?" in versions 10 and 11 MobiLink scripts, resulting in a "What the ... ? Sassen Frassen Fricken Fracken!" moment during the first test (thank you, Jeff Albion).

  24. SQL: Omitting a PRIMARY KEY column from the WHERE clause, thus turning a singleton SELECT (or DELETE!) into something rather more enthusiastic than expected (thank you, Ron Hiner).

  25. HTTP web services: Leaving an & in the code when a ? is required, and vice versa, when editing service URLs; e.g., 'HTTP://localhost:12345/web_service&service_parm2=!parm2'

  26. SQL Anywhere: Forgetting that not all functions look like functions: SELECT CAST ( CURRENT TIMESTAMP, VARCHAR )

  27. Batch file: Trailing spaces on SET commands; e.g., SELECT CAST ( xp_getenv ( 'DEBUG_MESSAGES' ) AS VARCHAR ) returns 'OFF ' instead of 'OFF' after SET DEBUG_MESSAGES=OFF


Memo to Ove B: Please explain your suggested addition "Forget to failsafe a parent-child traversal. It will eventually take down your server... at random times:-("

Thanks!

Breck



Wednesday, May 29, 2013

Latest SQL Anywhere Update: 12.0.1.3901 for Mac OS

Current builds for the active platforms...

HP-UX     12.0.1.3894 Update                 16 May 2013
 Itanium  11.0.1.2958 Update                 08 Apr 2013

IBM AIX   12.0.1.3894 Update                 16 May 2013
          11.0.1.2958 Update                 08 Apr 2013

Linux     16.0.0.1512 Update                 16 May 2013
          12.0.1.3873 Update                 05 Apr 2013
          12.0.1 Chinese,                    16 Apr 2013
                 Japanese Docs (Eclipse)     16 Apr 2013
          11.0.1.2958 Update                 08 Apr 2013

Mac OS    12.0.1.3901 Update             *** 23 May 2013 ***
          11.0.1.2449 Update                 29 Jun 2010

Solaris   12.0.1.3894 Update                 16 May 2013
 SPARC    11.0.1.2958 Update                 08 Apr 2013

Solaris   12.0.1.3894 Update                 16 May 2013
 x64      11.0.1.2958 Update                 08 Apr 2013

Windows   16.0.0.1512 Update                 16 May 2013
          12.0.1.3873 Update                 08 Apr 2013
          12.0.1 French,                     25 Sep 2012
                 English,                    25 Sep 2012
                 German,                     25 Sep 2012
                 Chinese,                    28 Mar 2013
                 Japanese Docs (HTML/PDF)    28 Mar 2013
          11.0.1.2960 Update                 16 Apr 2013

Other Stuff...

Older Updates

 Free support! Q&A forum
   ...or, call Tech Support

 SQL Anywhere...
   ...Sybase home page 
   ...SAP home page 
   ...SAP Developer Center 

 Buy SQL Anywhere 

 Developer Edition... 
   [16.0] [12.0.1] [11.0.1]

 Download the...
   Educational Edition 
   Web Edition 

 Supported Platforms...
   SQL Anywhere 
   Linux 
   OnDemand

 ODBC Drivers for MobiLink
The asterisks "***" show which items have appeared on the Sybase website since the previous version of this page.
  • Only the latest fully-supported versions of SQL Anywhere (11.0.1, 12.0.1 and 16.0) are shown here.

  • Just because an older version or different platform isn't "fully supported" any more doesn't mean you can't download files (or ask questions, or get help), it just means there won't be any more new Updates released.


Sunday, May 26, 2013

Cost-free, ERP-free Online HANA Course (UPDATE)


UPDATE: SAP has changed the start date from Sunday to Monday...

If you're interested in HANA The Relational Database Management System (and maybe you should be), there's a free online course starting on May 26, 2013 (that's four days from now): Monday, May 27, 2013:


Introduction to Software Development on SAP HANA

Thomas Jung

SAP HANA is an in-memory data platform that is deployable as an appliance or in the cloud. At its core, it is an innovative in-memory relational database management system that makes full sense of the capabilities of current hardware to increase application performance, to reduce cost of ownership, and to enable new scenarios and applications that were not possible before.

With SAP HANA, you have the opportunity to build applications that integrate the business logic, control logic, and the database layer with unprecedented performance. As a developer, one of the key questions is how you can minimize data movements. The more you can do directly on the data in memory next to the CPUs, the better the application will perform.

This course will introduce you to native software development on SAP HANA. Registration, learning content, and the final exam are free of charge. However, to fully benefit from the course, you can access a fee-based system environment to develop your own code. SAP works with several cloud providers to give you a choice of infrastructure platforms and attractive pricing models to enable system access at a very low cost.

Start: May 26, 2013 no, it's not starting on Sunday, in spite of what the SAP website said, it's starting on Monday, May 27, 2013... at least, that's what the website says now :)

Course language: English

If you think you might be interested...

. . . as a developer interested in new technologies, it might help to watch the inventor (and others) talk about it:

If you want to get ready...

. . . and take a "warm-up to the introduction" that's available, for free, right now, try this:

Warm-Up: In-Memory Data Management

Dr.-Ing. Jürgen Müller

While the first openSAP course, Introduction to Software Development on SAP HANA, is intended as an introductory class for software developers who are new to SAP HANA, it makes sense for course participants to obtain an understanding of the fundamental concepts of in-memory data management before the course starts.

If you have taken the openHPI course on the topic that was delivered by Prof. Hasso Plattner in 2012, you will be good to go. If you have not attended this course or similar training programs on in-memory data management, we recommend that you use this summary of Prof. Plattner’s lectures as a warm-up exercise. The summary was prepared by Dr.-Ing. Jürgen Müller (HPI) and is exclusively available on openSAP.

Start: Apr 28, 2013

Course language: English

...and the best part?

It's guaranteed to be ERP-free! For developers only!

No salesperson will call!


Friday, May 24, 2013

The fRiDaY File - Screech!

Screech! That's the sound of me hitting this sentence in the middle of an otherwise excellent article about SAP's recent Sapphire conference:


"The transport mechanism for this is a HANA cloud platform that allows the software’s data calls to go through HANA instead of a relational data base."

Whoa, hold on there sonny!

HANA is a relational database system. It has other stuff too (a graph engine and a text engine) but the big deal is its super-fast in-memory row- and column-oriented relational engine.

Maybe the author should have said "instead of a traditional relational data base" or a "disk-oriented relational data base" or a "legacy DBMS", something like that.

But no, I think the author really does think
  • that HANA is different from relational,

  • that relational implies row-oriented,

  • that column-oriented does not qualify as relational, and

  • that in-memory is somehow not relational.
If he doesn't think that, certainly lots of other people do.

Not true!

One of Codd's 12 rules for relational database management systems is this:

Rule 8: Physical data independence: Changes to the physical level (how the data is stored, whether in arrays or linked lists etc.) must not require a change to an application based on the structure.
That means it's perfectly OK, even encouraged, to have a variety of different physical architectures just as long as those architectures and the differences between them don't affect application code.

And THAT means HANA can be called a relational database even when it uses a column-oriented store, as long as Rule 8 and the others hold.

Another thing: HANA has BOTH row- and column-oriented tables. In fact, if you code CREATE TABLE in HANA you get row-based storage; to get column-based you have to ask for it by coding CREATE COLUMN TABLE.

Pedants might say having to code CREATE COLUMN TABLE violates Rule 8 because it requires a change to application code. Pedants might also say that not one single commercial product qualifies as "relational" because there are many ways physical characteristics bubble up into the code; think query hints.

In the real world pedants live at home in their parents' basement and have no effect on the fact SQL Anywhere, SQL Server etcetera are all recognized as relational...

...and HANA as well.



Wednesday, May 22, 2013

Cost-free, ERP-free Online HANA Course

If you're interested in HANA The Relational Database Management System (and maybe you should be), there's a free online course starting on May 26, 2013 (that's four days from now):


Introduction to Software Development on SAP HANA

Thomas Jung

SAP HANA is an in-memory data platform that is deployable as an appliance or in the cloud. At its core, it is an innovative in-memory relational database management system that makes full sense of the capabilities of current hardware to increase application performance, to reduce cost of ownership, and to enable new scenarios and applications that were not possible before.

With SAP HANA, you have the opportunity to build applications that integrate the business logic, control logic, and the database layer with unprecedented performance. As a developer, one of the key questions is how you can minimize data movements. The more you can do directly on the data in memory next to the CPUs, the better the application will perform.

This course will introduce you to native software development on SAP HANA. Registration, learning content, and the final exam are free of charge. However, to fully benefit from the course, you can access a fee-based system environment to develop your own code. SAP works with several cloud providers to give you a choice of infrastructure platforms and attractive pricing models to enable system access at a very low cost.

Start: May 26, 2013

Course language: English

If you think you might be interested...

. . . as a developer interested in new technologies, it might help to watch the inventor (and others) talk about it:

If you want to get ready...

. . . and take a "warm-up to the introduction" that's available, for free, right now, try this:

Warm-Up: In-Memory Data Management

Dr.-Ing. Jürgen Müller

While the first openSAP course, Introduction to Software Development on SAP HANA, is intended as an introductory class for software developers who are new to SAP HANA, it makes sense for course participants to obtain an understanding of the fundamental concepts of in-memory data management before the course starts.

If you have taken the openHPI course on the topic that was delivered by Prof. Hasso Plattner in 2012, you will be good to go. If you have not attended this course or similar training programs on in-memory data management, we recommend that you use this summary of Prof. Plattner’s lectures as a warm-up exercise. The summary was prepared by Dr.-Ing. Jürgen Müller (HPI) and is exclusively available on openSAP.

Start: Apr 28, 2013

Course language: English

...and the best part?

It's guaranteed to be ERP-free! For developers only!

No salesperson will call!


Monday, May 20, 2013

Latest SQL Anywhere Updates: First for V16! plus 12.0.1.3894 for others

Current builds for the active platforms...

HP-UX     12.0.1.3894 EBF Update         *** 16 May 2013 ***
 Itanium  11.0.1.2958 EBF Update             08 Apr 2013

IBM AIX   12.0.1.3894 EBF Update         *** 16 May 2013 ***
          11.0.1.2958 EBF Update             08 Apr 2013

Linux     16.0.0.1512 EBF Update         *** 16 May 2013 ***
          12.0.1.3873 EBF Update             05 Apr 2013
          12.0.1 Chinese Docs (Eclipse),     16 Apr 2013
                 Japanese Docs               16 Apr 2013
          11.0.1.2958 EBF Update             08 Apr 2013

Mac OS    12.0.1.3871 EBF Update             05 Apr 2013
          11.0.1.2449 EBF Update             29 Jun 2010

Solaris   12.0.1.3894 EBF Update         *** 16 May 2013 ***
 SPARC    11.0.1.2958 EBF Update             08 Apr 2013

Solaris   12.0.1.3894 EBF Update         *** 16 May 2013 ***
 x64      11.0.1.2958 EBF Update             08 Apr 2013

Windows   16.0.0.1512 EBF Update         *** 16 May 2013 ***
          12.0.1.3873 EBF Update             08 Apr 2013
          12.0.1 French Docs (HTML/PDF),     25 Sep 2012
                 English Docs,               25 Sep 2012
                 German Docs,                25 Sep 2012
                 Chinese Docs,               28 Mar 2013
                 Japanese Docs               28 Mar 2013
          11.0.1.2960 EBF Update             16 Apr 2013

Other Stuff...

 Older EBFs Updates

 Free support! Q&A forum
   ...or, call Tech Support

 SQL Anywhere...
   ...Sybase home page 
   ...SAP home page 
   ...SAP Developer Center 

 Buy SQL Anywhere 

 Developer Edition... 
   [16.0] [12.0.1] [11.0.1]

 Download the...
   Educational Edition 
   Web Edition 

 Supported Platforms...
   SQL Anywhere 
   Linux 
   OnDemand

 ODBC Drivers for MobiLink

The asterisks "***" show which items have appeared on the Sybase website since the previous version of this page.
  • Only the latest fully-supported versions of SQL Anywhere (11.0.1, 12.0.1 and 16.0.0 16.0) are shown here.

  • Just because an older version or different platform isn't "fully supported" any more doesn't mean you can't download files (or ask questions, or get help), it just means there won't be any more new EBFs Updates released.


Friday, May 17, 2013

The fRiDaY File - Is it sap or is it ess-a-pee?

Question: How do I pronounce "SAP"? Is it sap or ess-a-pee?

Before you say "that's a pointless question!" consider this endless thread on the subject.

OK, it's still a pointless question


. . . but I'm asking it anyway.

Back on May 10 I thought it was important to say "ess-a-pee" but now I'm not so sure.

Why not?


Because even though the phrase "an SAP" appears 420 times in the 391-page SAP HANA Developer Guide, most (391) of those references appear in the boilerplate phrase "...an SAP affiliate company. All rights reserved...".

In the same document the phrase "a SAP" appears 25 times, as in "a SAP HANA system" and "adding a SAP Variables clause in your select statement".

That's a score of 25 for sap, versus 30 for ess-a-pee if we count the boilerplate as only one occurrence.

Pretty much a tie, doncha think?


So I'm going with this:

Answer: You pick the pronunciation that sounds right to you, given the context: sometimes sap, sometimes ess-a-pee... or you can use one or the other all the time, your choice.

It's called "English", which in German means "Anarchy".

Dilbert.com 1995-10-11

Wednesday, May 15, 2013

D. I. Y. is more F. U. N.

Question: How do I list the active sessions and the elapsed times they are running?

Answer: The CONNECTION_PROPERTY() function returns a great deal of information about each connection (session). The LoginTime property can be used to calculate the elapsed time; here's the value for the current connection:

SELECT CONNECTION_PROPERTY ( 'LoginTime' );

'2013-05-11 04:49:12.499'
There are many connection properties, and there can be many connections, resulting in hundreds, maybe thousands of values.

The sa_conn_properties() procedure makes it easier to process that "great deal of information":
SELECT Number                                    AS connection_number,
       CONNECTION_PROPERTY ( 'Name',   Number )  AS connection_name,
       CONNECTION_PROPERTY ( 'UserID', Number )  AS user_name,
       Value                                     AS login_time 
  FROM sa_conn_properties() 
 WHERE PropName = 'LoginTime'
 ORDER BY Number;

connection_number,connection_name,user_name,login_time
14,'adhoc-queries','k.delacruz',2013-05-11 04:49:12.499
15,'RRLoadTest','DBA',2013-05-11 04:54:24.016
16,'app','h.barbosa',2013-05-11 04:54:24.232
17,'app','g.mikhailov',2013-05-11 04:54:24.334
18,'app','u.wouters',2013-05-11 04:54:24.448
19,'app','e.reid',2013-05-11 04:54:24.554
20,'app','y.gustavsson',2013-05-11 04:54:24.663
21,'app','n.simpson',2013-05-11 04:54:24.776
22,'app','f.thomson',2013-05-11 04:54:24.890
23,'app','x.wang',2013-05-11 04:54:25.100
24,'app','i.miller',2013-05-11 04:54:25.218
25,'app','c.ryan',2013-05-11 04:54:25.325
You can continue to Do-It-Yourself in ISQL...
  • call DATEDIFF() to turn LoginTime to an elapsed time (milliseconds?) value,

  • study up on other CONNECTION_PROPERTY() values, what they mean, which ones are useful (maybe more useful than LoginTime) and which ones don't work at all, and maybe

  • look at the DB_PROPERTY() and server-level PROPERTY() functions as well, then

  • figure out how to gather the values and save them and summarize them and calculate rates and changes and rankings, and finally

  • build up your query(ies) until you get the information you want.
In other words, you can build your own database performance monitor.

Or you can just use Foxhound.

In Foxhound the "Time Connected" colum is based on the LoginTime property, and you can click on the column title to sort the long-lasting connections to the top.

In THIS particular screenshot, however, the list of connections has been sorted on "CPU %" to sort the most active sessions to the top:



DIY "Internal Use Software" is more fun, of course . . .

... just don't tell Accounting about it unless you count your own time as "free" :)

Dilbert.com 2002-09-27


Monday, May 13, 2013

SQL Anywhere Dead Chickens

In the spirt of the "characteristic errors" listicle here is a list of "dead chickens" associated with SQL Anywhere.

If you have ANY examples of your own, PLEASE post a comment here or SEND me an email: breck dot carter at gmail dot com


To wave a dead chicken is to "perform a ritual in the direction of crashed software or hardware that one believes to be futile but is nevertheless necessary so that others are satisfied that an appropriate degree of effort has been expended. 'I'll wave a dead chicken over the source code, but I really think we've run into an OS bug.'" - The Jargon File
  1. If your remote data access doesn't work, try fiddling with the declared data types; e.g., from char to varchar, or vice versa.

    Example: Error returning bigint from remote server

  2. If your remote data access with Excel doesn't work, try periods, try the magic dollar sign, try NVARCHAR, try Google!

    Example: SELECT FROM Excel Spreadsheets

  3. If your query takes too long, try turning off intra-query parallelism: SET TEMPORARY OPTION MAX_QUERY_TASKS = '1';

    Example: The New MaxBPs=768: Set MAX_QUERY_TASKS = '1'

  4. If your WINDOW query doesn't work try adding RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING.

    Example: Reporting and the Audit Trail

  5. If something goes wrong after installing, try rebooting.

    Example: Try rebooting

  6. If ISQL READ doesn't work, try specifying the code page: READ ENCODING Cp1252 "C:\data\filename.sql";

    Example: Example: OUTPUT TO From VB, Part 2

  7. If you can't connect over TCP/IP, try adding DOBROADCAST=NONE.

    Example: Demonstrating High Availability


If something is wrong on the internet, fix it!

xkcd.com 386



Friday, May 10, 2013

HANA Enterprise Cloud

Did you know that SAP has another database product, besides SQL Anywhere?

Yeah, you're right,

but they don't count because they don't have much of a future.

There's also Sybase IQ and that does have a future, but it's not the one I'm thinking of either.

No, the other SAP database with a future is . . .


... called HANA, brand new, just out.

And it's available for free, for testing, in the cloud.

HANA in the Cloud


Back on May 7 SAP held a "press event" in Palo Alto to introduce something called the "SAP HANA® Enterprise Cloud"; you can watch the whole thing here, all 82 minutes of it:



Caution: This video works in IE 10 but apparently not in Chrome 26. There's another browser I used to use, Fire-something-or-other, I forget, dunno if that works.

But if you'd rather READ than WATCH . . .


... here are my rough notes, with a few comments added:
=====
Jonathan Becher
Chief Marketing Officer

10,000 viewers for the initial presentation

HANA is not limited to SAP applications

pronounced "haw-na"
...not "hanna". HANA is a name, but not a girl's name; HANA doesn't stand for anything. In particular, it does not stand for High Performance ANalytic Appliance, and it most definitely does not stand for HAsso's New Architecture. While we're at it, SAP is pronounced ess-a-pee, not sap, and junior SAP employees are not called saplings.
=====
Hasso Plattner
SAP Founder and Chairman of the SAP Supervisory Board

old-school paper notes

HANA is the redefinition of enterprise software

will lower TCO dramatically

advantages of cloud

1. elasticity

2. innovation - SAP has renovated, recreated

HANA system has a much smaller data footprint - needs on one fifth of the storage capacity 
through compression

response time goals: 8 seconds, 3 seconds, 1 second

3. people - much less DBA work - no indexes, no materialized aggregates - dynamic aggregation

4. harmonization of hardware and system software - 100% standard hardware

should keep 100% of hot data in memory so performance can be calculated

cold data can certainly be kept on disk

faster releases - utilities run 20 times faster

what can we do with a "HANA-based system in the cloud"

1. regain innovation

better performance leads to innovation

120 msec for worldwide data round-trip - communication

no more "programmer test data" - can use copy of production

standard application interfaces are available for HANA

can make SMP use of a 200 core computer

after 41 years of SAP software, this is the way it should have been

=====
Vishal Sikka 
Member of the Executive Board of SAP AG, Technology & Innovation

we call it the "HANA Enterprise Cloud"

using current generation Intel processors 

300 billion scans per second

without virtualization

=====
Wesley Mukai
Vice President of HANA Cloud Computing

data centers are complicated

SAP Cloud Frame Technology

SAP Cloud Frame Monitor - Management Home - Create New HANA Instance

100s of terabytes on in-memory computing

each frame contains physical servers - no virtualization

servers from multiple vendors

=====
Vishal Sikka 

create a 5 terabyte system in minutes

we have been working on this for quite some time

60 customers, some already live

=====
Don Whittington
Florida Crystals Vice President and CIO

What if SAP ran as fast as Excel?

=====
Vishal Sikka 

multiple hardware platforms

Hasso has always been a champion of speed and performance

=====
Andy Bechtolsheim
Founder and Chairman, Arista Networks

The future of networking...

Accepted wisdom was that enterprise systems will be the last thing that moves to the cloud

low latency and high bandwidth is key for the communication network within a cluster

system management has been integrated into the switch

the cloud needs near-zero-time network configuration, not weeks like in the old days

100 Gbit networking will eventually be available.

=====
Vishal Sikka 

The HANA Enterprise Cloud is here.

There are 50,000 enterprise networks out there.

=====
Jonathan Becher 

Peaked at #3 on twitter.

Questions for Hasso and Vishal...

=====
Hasso Plattner

We must educate people in what parallelism means.

HANA can use massive parallelism for a single query.

The more complex the query the more parallelism can be used.

The larger the data volume the more we can split it up and run it in parallel.

We get the parallelism effect automatically through HANA.

Myth: "If everything runs so fast we don't have to write good SQL any more."

It is just the opposite - we have to think more about good algorithms.

There can be a factor of 10,000 between the performance of good and lousy algorithms.

HANA automatically gives a factor of 2 to three improvement over current databases - to get 
real improvements you have to exploit parallelism.

We have to teach people how to write good SQL and not just simple SQL that works.

While people are doing this, they learn more and more about how things can be done differently.

After 40 years of fighting batch, there is no batch any more.

We wanted to kill batch 40 years ago, and it came back and came back.

Now everything will be transactional.

Everything will be on a human time frame even if it involves billions of records.

What is our biggest innovation in SAP?

We now have the capacity to redo the user interface.

We used to build UIs to cover the functionality and to perform well enough - we were always 
watching performance, most of the programming we did was to achieve performance.'

Now we get great performance, the programs are much smaller - we have more time to concentrate 
on the UI.

=====
Vishal Sikka 

HANA has native integration services.

Pricing: You bring your own HANA license and pay for the cloud services separately
It was around this point when the penny finally dropped: they're not just talking about HANA-the-database-product, they're talking about an existing implementation of HANA and all the requisite bits, on existing public cloud services like Amazon, that you can just use... yeah, I'm kinda slow.
HANA One has been running in the cloud for about 7 months.

Even though HANA makes it possible to eliminate current batch processing, you will always have larger amounts of data coming that require batch processing.

=====
Hasso Plattner

Collaboration between Hadoop and HANA is possible.

=====
Vishal Sikka 

What about private clouds?

First of all - the HANA Enterprise Cloud is for HANA only, other relational database products 
are not welcome.

Having said that - it doesn't matter where the pieces run, and the landscape can be heterogeneous.

HANA cloud frames can, and have been, run on private clouds in customer datacenters - but it's 
not part of today's announcement.

Several dozen big customers will move to the HANA cloud this year.

Early customer feedback has been positive.

=====
Hasso Plattner

This is the next hockey stick.
I'm guessing he's talking about the "hockey stick curve"; see point 3 in "What is a Hockey Stick Curve?"
Mobile response time must be 3 seconds or faster, and we can do this now.

There are no hassles when growing or shrinking the system, and it will be so much faster.

Hardware provisioning is done already, by SAP.

What is the bottleneck? We honestly don't know.

The private private clouds will come - the ones on client premises.

The elasticity and security problems have been solved.

=====
Vishal Sikka 

We are looking at redesigning the server platform.

=====
Hasso Plattner

The data has to be in memory, that is a prerequisite.

=====
Vishal Sikka 

The underlying infractructure for all SAP applications is moving to the HANA Enterprise Cloud.

=====
Hasso Plattner

Enterprise, mid-size, small companies... it doesn't matter. We allocate a whole client to one 
machine, or half a machine, or a quarter machine.

We don't share anything in data storage between customers.

=====
Vishal Sikka 

If a third-party SAP vendor wanted to use the HANA infracture, would we let them do that? 
Yes, we would absolutely love it. If they compete with us we would love it even more.

We currently have more than 400 startup companies running on HANA. Many of them compete 
with parts of the SAP portfolio.

Companies like salesforce.com would definitely benefit from running on the HANA infrastructure.

Our own CRM system has been running since the middle of March, extraordinarily well. 

We have it running on a 6 terabyte monster system from IBM - we are only using 1.25 terabytes - 

=====
Hasso Plattner

The usage of the system went significantly up - the users are doing more with the system - that 
is a positive sign.

=====
Vishal Sikka 

We have run 100 million SQL queries per hour on our own system.

The communication round-trip between Palo Alto and Beijing or between Palo Alto and Amsterdam 
is around 120 milliseconds today.

That means you still have 880 milliseconds still available to you, for 1 second response time.

=====
Hasso Plattner

With traditional on-premise provisioning, just the hardware acquisition delays every single 
project by eight weeks.

Now we can provision a system within one hour... that's a hockey stick.

=====
Jonathan Becher, Chief Marketing Officer

Today we launched HANA Enterprise Cloud which combines real-time in-memory with the cloud.

No more batch.

[end]

For the official story see the SAP HANA Enterprise Cloud page.



Wednesday, May 8, 2013

Save IvanAnywhere!

IvanAnywhere is in danger of being "challenged and removed" or possibly "merged, redirected or deleted"!



Please, someone with Wikipedia creds, save IvanAnywhere before it's too late!

Dilbert.com 2009-02-22


Monday, May 6, 2013

Backup is easy, recovery is hard...

"Backup is easy, recovery is hard... especially for someone who believes that backup is easy." - anon admin
Even if you recognize that backup is hard (e.g., you're not really doing backup unless you test recovery), recovery is still ... always ... harder ... than you expect.

Dilbert.com 2000-08-15

Here's a case in point:

Failure to apply transaction log - can I force apply of log?

I have a database that had an assertion failed. When I get the last backup and try to apply the LOG file I get a validation error. Come to find out the indexes on 6 tables needed to be rebuilt. The catch 22 is when I fix the indexes and try to apply the LOG, i get the message that the DB is newer and cannot apply log. Is there any way to force apply the LOG?

That question raises MORE questions, as John Smirnios recognizes in his reply:

I don't think you would get a "validation error" (which I associate with running dbvalid) when applying a log. Exactly what error did you see?

You could try going to an even older backup and applying all logs since that backup.

Also, if you are content with the database with rebuilt indexes, you could translate the log (using dbtran) and apply the SQL against the database using dbisql.

Sometimes, however, it helps to first answer the question that's actually being asked, the one that ends with a question mark: "Is there any way to force apply the LOG?"

Then, once the good or bad news has been delivered, the listener may be more receptive as the discussion wanders further afield:

In addition to what John said...

As you know, or have discovered, you can't apply log files out of order in recovery mode, which is what happens when you start a backup database normally and run new transactions (e.g., reorganize indexes), and then try to apply an old log file in recovery mode that has older transactions.

If possible, try starting over... and document EXACTLY what steps you take and EXACTLY what results and/or error messages you get so we can help.

If there are any differences between what you did (or are doing) and the following steps, please describe those differences as well.
  1. Get (copy) the backup xxx.db file and the associated backup xxx.log file. Make copies so you can go back and start over if necessary.

  2. Apply the copy of the backup xxx.log file in recovery mode to the copy of the backup xxx.db file via dbsrv12.exe xxx.db -a xxx.log

  3. Get (copy) the recent xxx.log file that has the transactions up to when the assertion error. This assumes there are no OTHER log files between the one applied in step 2 and this one.

  4. Apply the copy of the recent xxx.log file in recovery mode to the xxx.db file via dbsrv12.exe xxx.db -a xxx.log

  5. Start the database normally (no -a xxx.log option).
You may find some ideas in the following blog posts:


Apparently April is "Backup And Recovery Month" in my world, at least it was back then :)