<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" version="2.0">

<channel>
	<title>Rows and Columns</title>
	
	<link>http://iablog.sybase.com/hinsperg</link>
	<description>SQL Anywhere perspective on technology</description>
	<lastBuildDate>Wed, 22 Feb 2012 15:53:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/RowsAndColumns" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="rowsandcolumns" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>The Various Degrees of Hosting</title>
		<link>http://iablog.sybase.com/hinsperg/2012/02/the-various-degrees-of-hosting/</link>
		<comments>http://iablog.sybase.com/hinsperg/2012/02/the-various-degrees-of-hosting/#comments</comments>
		<pubDate>Mon, 20 Feb 2012 15:00:59 +0000</pubDate>
		<dc:creator>Jason Hinsperger, Product Manager</dc:creator>
				<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Commentary]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[hosting]]></category>

		<guid isPermaLink="false">http://iablog.sybase.com/hinsperg/?p=746</guid>
		<description><![CDATA[In talking with people about the differences in hosting options, I ended up with the following continuum view of various hosting models. I still need to think about it some more, but I present it here as a work in progress. The following table illustrates what you, as an end user, would have to manage [...]]]></description>
			<content:encoded><![CDATA[<p>In talking with people about the differences in hosting options, I ended up with the following continuum view of various hosting models.  I still need to think about it some more, but I present it here as a work in progress.</p>
<p><center><br />
<table border="1">
The following table illustrates what you, as an end user, would have to manage under each &#8216;level&#8217; of service.  Following that is a brief description of each level, and what it offers.</p>
<tr> <strong>
<th>Hosting Level</th>
<th>Hardware</th>
<th> OS </th>
<th>Software</th>
<th>Data</th>
<p></strong> </tr>
<tr>
<td>self-hosted</td>
<td>X</td>
<td>X</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td>co-location hosted</td>
<td>partial</td>
<td>X</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td>co-location rented</td>
<td></td>
<td>X</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td>computing service provider</td>
<td></td>
<td></td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td>complete service provider</td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</table>
<p></center><br />
<span id="more-746"></span></p>
<ol>
<li><strong>Self Hosted</strong> &#8211; You host the hardware and manage the data<br />
This is the traditional scenario.  You own and manage your hardware in your office space and all of your data resides on this hardware.  You are responsible for maintenance and upkeep of the hardware, as well and maintenance of all software and files on the machine, including your database backups.<br />
You know where your data is physically located, and can get to it at a moments notice.  Taking care of the hardware/software is not core to your business, but is required to maintain complete control of your data.</li>
<li><strong>Co-location Hosted</strong> &#8211; You place hardware at a co-lo and manage the data<br />
The next step is locating hardware you buy at a managed site, where the site takes care of the hardware maintenance and upkeep for you, for a fee.  You are still responsible for all software on the machine, the maintenance of your database (including backups) and the replacement/upgrade of any hardware.<br />
You know where your data is physically located, but it would take time to get to it.<br />
This takes care of hardware management, which is generally not considered to be core to a business, allowing you to focus resources on more important things.  However, there are still non-core activities you must engage in to maintain control of your data (eg. hardware replacement/upgrades).
</li>
<li><strong>Co-location Rented</strong> &#8211; You rent the hardware at a co-lo and manage the data<br />
In this scenario, you rent hardware at a managed site, where you pay for specific resources (CPU, disk, memory).  The site provides you with those services on one or more machines, and maintains those machines for you.  You are responsible for the software on the machine, including your database, but backups (and recovery) are handled by the co-lo provider.<br />
You have a good idea of where your data is physically located, but perhaps not at any exact moment in time, since it may move within the co-lo facility as conditions change (eg. hardware failure or replacement).<br />
At this point, all hardware management activities are taken care of for you, leaving you to deal with the software you require to run your business.
</li>
<li><strong>Computing Service Provider</strong>You pay for hosted service and manage the data<br />
In this case you rent specific services from a service provider (CPU, RAM, disk, operating system).  The service provider manages the hardware and maintains the OS.  You only have to manage any software specific to your business, which includes your database.  However, the service provider usually manages backup and recovery of your data for you as part of the service.<br />
Outside of a specific (and more expensive) agreement with the service provider, you don&#8217;t know where your data is physically located at any point in time, since the service provider is free to place it anywhere in any of their data centres that can provide the service you are paying for.<br />
However, you are getting rid of the need to manage much of the software needed to run your business, and increasing your ability to stay available, leaving you to maintain only the data and data management software.</li>
<li><strong>Complete Service Provider</strong>You pay for hosted service and data<br />
In this case you rent all services from a service provider.  The service provider manages the hardware, maintains the OS, and provides access to the software you need, usually via web services.  You only have to access the service to manage your data.<br />
Again, short of a specific (and likely expensive) agreement with the service provider, you don&#8217;t know where your data is physically located at any point in time, since the service provider is free to place it anywhere in any of their data centres that can provide the service you require.<br />
You have effectively gotten rid of all hardware, software and data management requirements at this point.  All you need to do is put data into the system, and get data out of the system, in specific formats as specified by the service provider application.</li>
</ol>
<img src="http://feeds.feedburner.com/~r/RowsAndColumns/~4/vV-meMr-J9c" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://iablog.sybase.com/hinsperg/2012/02/the-various-degrees-of-hosting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SQL Anywhere OnDemand Tenancy Model</title>
		<link>http://iablog.sybase.com/hinsperg/2012/02/sql-anywhere-ondemand-tenancy-model/</link>
		<comments>http://iablog.sybase.com/hinsperg/2012/02/sql-anywhere-ondemand-tenancy-model/#comments</comments>
		<pubDate>Mon, 13 Feb 2012 14:00:51 +0000</pubDate>
		<dc:creator>Jason Hinsperger, Product Manager</dc:creator>
				<category><![CDATA[Cloud]]></category>
		<category><![CDATA[multi-tenancy]]></category>
		<category><![CDATA[saod]]></category>

		<guid isPermaLink="false">http://iablog.sybase.com/hinsperg/?p=731</guid>
		<description><![CDATA[One of the more unique things about SQL Anywhere OnDemand is the tenancy model we are proposing in a SaaS environment &#8211; one database per customer. I wanted to give a brief overview of it here, and explain why we think it is the way to go for an ISV looking to offer a SaaS [...]]]></description>
			<content:encoded><![CDATA[<p>One of the more unique things about <a href="http://www.sybase.com/fujibeta">SQL Anywhere OnDemand</a> is the tenancy model we are proposing in a SaaS environment &#8211; one database per customer.  I wanted to give a brief overview of it here, and explain why we think it is the way to go for an ISV looking to offer a SaaS application to the market, compared with the more traditional approach that is currently available.</p>
<p>SQL Anywhere OnDemand, currently available in beta, takes a fundamentally different approach to database  management for SaaS applications, based on the following key assumptions about ISV customers:</p>
<ul>
<li>Customers running an ISV application usually have no relationship with each other </li>
<li>Customers running an ISV application usually do not want to share their data with other customers of that ISV</li>
<li>Different customers have different usage patterns, performance and service-level requirements</li>
</ul>
<p>Most current database management offerings that support SaaS deployments, use a single database/server, and use replication, sharding and other methods to scale that database to match customer demands.  However, this method is inherently flawed as a solution for ISVs looking to offer a SaaS application for several reasons:</p>
<ul>
<li>A single database server model prevents an ISV from capitalizing on the key customer assumptions made above. For example, under the single database/server model, all tenants are impacted by any change made to your environment to address any change in requirements from a single tenant.
</li>
<li>The complexity of this implementation is expensive and error prone.</li>
<li>Managed together, tenant data could potentially be exposed to other tenants in a variety of ways.</li>
</ul>
<p>Worse yet is using a data-as-a-service provider &#8211; in addition the above problems, in this model ISVs have little or no control over the customer experience with their application, which makes it difficult (and sometimes impossible) to address entire classes customer problems and concerns (eg. performance problems).<br />
In the end, using a single, monolithic database/server to manage all tenant database(s) in a SaaS environment does not make sense.  </p>
<p>Given the above ISV customer assumptions, it does makes sense to have a single database for each of your customers.  This allows you the maximum amount of flexibility in terms of </p>
<ul>
<li>Keeping tenant data separate</li>
<li>Providing different levels of service (related to performance, availability, extra functionality etc&#8230;)</li>
<li>Dealing with the demands of those customers with larger databases without impacting other tenants.</li>
<li>Limiting the impact of infrastructure changes to a single tenant, or at most a small number of tenants </li>
</ul>
<p>From a management perspective, having a single database for each customer means dealing with hundreds, or even thousands of individual tenant databases.  Maintaining availability, doing backups, validating, etc&#8230; is a huge job.  This is where SQL Anywhere OnDemand comes in.  SQL Anywhere OnDemand allows an ISV to scale the database management layer by the number of databases. It provides an infrastructure layer that can help to manage thousands of individual tenant databases.  This means that each tenant can have their own database, which provides many advantages, and allows the ISV to easily manage the administration of those databases.</p>
<p>By using the existing strengths of <a href="http://www.sybase.com/products/databasemanagement/sqlanywhere">SQL Anywhere</a>, the OnDemand console allows an ISV to manage each customer in an individual tenant database.  Tenant databases can be managed individually or in groups, allowing you to do things like </p>
<ul>
<li>Move a specific tenant database from a loaded server to one with less activity, </li>
<li>Send out an upgrade script to an entire group of tenants.  </li>
<li>Backup and restore an individual tenant database</li>
<li>Bring new resources (hosts, database servers) online (and take them offline) as customer usage patterns and requirements change.</li>
<li>Restrict where a tenant database can be physically stored</li>
</ul>
<p>The tenancy model of <a href="http://www.sybase.com/fujibeta">SQL Anywhere OnDemand</a> is ideally suited for ISV&#8217;s looking to offer SaaS solutions to the market.</p>
<img src="http://feeds.feedburner.com/~r/RowsAndColumns/~4/j6-UGJeNBVU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://iablog.sybase.com/hinsperg/2012/02/sql-anywhere-ondemand-tenancy-model/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>SQL Anywhere Performance – “How can I make it faster?”</title>
		<link>http://iablog.sybase.com/hinsperg/2012/02/sql-anywhere-performance-how-can-i-make-it-faster/</link>
		<comments>http://iablog.sybase.com/hinsperg/2012/02/sql-anywhere-performance-how-can-i-make-it-faster/#comments</comments>
		<pubDate>Mon, 06 Feb 2012 15:00:26 +0000</pubDate>
		<dc:creator>Jason Hinsperger, Product Manager</dc:creator>
				<category><![CDATA[Commentary]]></category>
		<category><![CDATA[SQL Anywhere]]></category>
		<category><![CDATA[opinion]]></category>
		<category><![CDATA[performance]]></category>

		<guid isPermaLink="false">http://iablog.sybase.com/hinsperg/?p=692</guid>
		<description><![CDATA[I hear the following questions at least once a week in some form from sales, support and customers: &#8220;What changes should I make to my database to make it faster?&#8221; &#8220;What should the specs be on my server machine that will run SQL Anywhere?&#8221; &#8220;My application is slow. How can I make it faster?&#8221; The [...]]]></description>
			<content:encoded><![CDATA[<p>I hear the following questions at least once a week in some form from sales, support and customers:</p>
<blockquote><p>&#8220;What changes should I make to my database to make it faster?&#8221;</p></blockquote>
<blockquote><p>&#8220;What should the specs be on my server machine that will run SQL Anywhere?&#8221;</p></blockquote>
<blockquote><p>&#8220;My application is slow.  How can I make it faster?&#8221;</p></blockquote>
<p>The answer to all of these questions is:<br />
<span id="more-692"></span></p>
<p><center><font size="5" color="black"><strong>IT DEPENDS</strong></font></center></p>
<p>No really, the answers to all of these questions depends on things like:</p>
<ul>
<li>Number of users</li>
<li>Size of database</li>
<li>Database architecture</li>
<li>Application design</li>
<li>Expected usage pattern</li>
<li>Identification of existing bottlenecks</li>
<li>etc&#8230;</li>
</ul>
<p>A great place to start learning about various aspects of performance is with some of the papers listed on <a href="http://iablog.sybase.com/paulley/whitepapers/">Glenn Paulley&#8217;s</a> blog, and from our <a href="http://www.sybase.com/detail_list?id=118721">webcast archives</a>.</p>
<p>There is no magic bullet, no magic &#8220;go fast&#8221; option for the database server.  SQL Anywhere does a fantastic job of utilizing whatever resources are available to their full extent, dynamically adjusting as things (eg. machine workload, database workload, etc&#8230;) change.  However, if you want to improve performance, you are going to have to put in some time analyzing and determining what changes should be made to get you the biggest bang for your buck.  If you don&#8217;t, you risk <del>spending</del> wasting money on things that may have little or no impact on performance.</p>
<p>The above information, formatted to fit the situation, is my stock response every time the performance question comes in.  Inevitably, I get the follow-up question which boils down to &#8220;Please give us some something.&#8221;</p>
<p>I understand why these questions come in.  SQL Anywhere supports a <a href="http://www.sybase.com/detail?id=1002288">wide variety of operating environments</a> and has relatively low minimum requirements.  In turn, <a href="http://www.sybase.com/detail_list?id=93332">our customers</a>, who embed SQL Anywhere in their solutions, have to support a variety of end-user environments.  They need to provide some sort of initial guidance to their end customers to ensure a positive experience with their applications.</p>
<p>Because <font color="black"><strong>every situation is different</strong></font>, it is impossible to give a well-defined &#8220;if X then Y&#8221; solution to guaranteeing good performance.  However, I have used the following high-level <strong>very loose</strong> rules of thumb, which don&#8217;t really help at all IMO, but sometimes seem to satisfy people.</p>
<ol>
<li>More RAM never hurts.</li>
<li>Faster/more disks never hurts</li>
<li>Faster/more processors never hurts</li>
</ol>
<p>Basically, if you want to go out and spend money on new hardware, you will not likely decrease performance.  However, we can&#8217;t guarantee that it will increase performance by a specific amount either.</p>
<p>There is a second level of <strong>very loose</strong> rules of thumb that can be used in scenarios where people want/need guidance on where to focus their efforts/expenditures. These only apply if at least some effort has been put into identifying where bottlenecks are (or where they are likely to be).  The more effort put in to understand performance characteristics, the better your chances are of making good decisions:</p>
<ul>
<li>If the database server I/O is heavy (ie. lots of write activity), spending more on disks is probably a good idea</li>
<li>If the disk is &#8216;thrashing&#8217; a lot, more RAM and more/faster disks is probably a good idea.</li>
<li>If the CPU is pegged at or near 100%, more faster CPUs/cores is probably a good idea.</li>
<li>If disk activity is light and CPU usage is low, network issues or blocking/deadlock issues are likely causing the performance problems.  In both cases, improving application or database architecture is a good idea, and more/faster RAM/CPU/Disk will not likely help much.</li>
</ul>
<img src="http://feeds.feedburner.com/~r/RowsAndColumns/~4/oE-iCEIaDU0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://iablog.sybase.com/hinsperg/2012/02/sql-anywhere-performance-how-can-i-make-it-faster/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Podcasts Make the Drive Less Boring</title>
		<link>http://iablog.sybase.com/hinsperg/2012/01/podcasts-make-the-drive-less-boring/</link>
		<comments>http://iablog.sybase.com/hinsperg/2012/01/podcasts-make-the-drive-less-boring/#comments</comments>
		<pubDate>Mon, 30 Jan 2012 15:00:27 +0000</pubDate>
		<dc:creator>Jason Hinsperger, Product Manager</dc:creator>
				<category><![CDATA[Commentary]]></category>
		<category><![CDATA[opinion]]></category>
		<category><![CDATA[podcasts]]></category>
		<category><![CDATA[review]]></category>

		<guid isPermaLink="false">http://iablog.sybase.com/hinsperg/?p=718</guid>
		<description><![CDATA[I have a long commute to work. Thankfully I do not have to sit in traffic when I&#8217;m on the road, but the drive does get monotonous (I have been doing it for almost 10 years now). It is completely worth it though, to be able to live in a place I love have a [...]]]></description>
			<content:encoded><![CDATA[<p>I have a long commute to work.  Thankfully I do not have to sit in traffic when I&#8217;m on the road, but the drive does get monotonous (I have been doing it for almost 10 years now).  It is completely worth it though, to be able to live in a place I love have a job that I (usually) love.<br />
To make the time go by faster, and to give me the feeling that I am actually being a little bit productive on the way to/from work (and to stop myself from talking to myself&#8230;), I listen to Podcasts.<br />
Here is a sample of some of what I consider work-related podcasts I listen to and have stuck with for a while now</p>
<ol>
<li><a href="http://www.cnet.com/buzz-out-loud-podcast/">Buzz Out Loud</a> &#8211; CNet&#8217;s news podcast.  This used to be a daily tech. news show that has recently moved to weekly.  The quality of content has suffered IMO, and I am not sure how much longer I will be listening to this one.</li>
<li><a href="http://blogs.hbr.org/ideacast/">HBR IdeaCast</a> &#8211; weekly business analysis and advice podcast from Harvard Business Review.</li>
<li><a href="http://itc.conversationsnetwork.org/">IT Conversations</a> &#8211; A wide variety of technology focused topics, as recorded from conferences, radio shows, and interviews.</li>
<li><a href="http://twit.tv/show/floss-weekly">Floss Weekly</a> &#8211; A (usually) interesting weekly discussion of an open source project with the developers of the project.  One of several TWIT network shows I like.</li>
<li><a href="http://twit.tv/tnt">Tech News Today</a> &#8211; TWIT network daily news podcast.  This has taken over as my goto news podcast since Buzz Out Loud went downhill.  Not unrelated is the fact that one of the former Buzz Out Loud Hosts is the lead host for this program.</li>
<li><a href="http://twit.tv/">This Week in Google/This Week in Tech/Windows Weekly</a> &#8211; TWIT network weekly roundtable podcasts.  I used to also listen to <a href="http://twit.tv/sn">Security Now</a>.  But the signal to noise ratio got so bad that it drove me away (15 minutes of actual content vs. 45 minutes of off-topic random conversation)</li>
</ol>
<p>All work and no play makes Jason a dull boy, so here are some of the less technical podcasts I listen to break up the tech. monotony.</p>
<ul>
<li><a href="http://entertainment.howstuffworks.com/hsw-shows/hsw-podcast.htm">Brainstuff/Techstuff/Stuff you Should Know</a> &#8211; all awesome How Stuff Works podcasts.</li>
<li><a href="http://twit.tv/show/dr-kikis-science-hour">Dr. Kiki&#8217;s Science Hour</a> &#8211; Another TWIT network show, this is a weekly science podcast with a news segment followed by a detailed topic discussion with a subject matter expert.</li>
<li><a href="http://www.cbc.ca/quirks/">Quirks and Quarks</a> &#8211; A CBC podcast on various science and technology related topics.</li>
<li><a href="http://skeptoid.com/">Skeptoid</a> &#8211; A weekly science podcast where the host analyzes and usually debunks popular myths and pseudoscience.</li>
<li><a href="http://www.freakonomics.com/radio/">Freakonomics Radio</a> &#8211; a great podcast on a variety of topics that really makes one think.</li>
<li><a href="http://www.gamespot.com/events/the-hotspot/index.html">Gamespot &#8211; The Hotspot</a> &#8211; weekly video game discussion podcast.</li>
<li><a href="http://www.noagendashow.com/">No Agenda</a> &#8211; A political commentary podcast that (in my opinion) is half serious, half satire and usually entertaining.</li>
<li><a href="http://www.eonline.com/everywhere/podcasts/index.jsp">Answer Bitch</a> &#8211; an entertainment industry Q&#038;A podcast that is usually humorous.  Hey, I hear you judging!  We all have our guilty pleasures, and one of mine is hearing about the vacuous lives of celebrities.</li>
<li><a href="http://www.sliceofscifi.com/">Slice of Sci-fi</a> &#8211; obligatory sci-fi news podcast that mostly covers entertainment industry news related to sci-fi properties, but does occasionally discuss actual science news.</li>
</ul>
<img src="http://feeds.feedburner.com/~r/RowsAndColumns/~4/g-yGMZGR-bU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://iablog.sybase.com/hinsperg/2012/01/podcasts-make-the-drive-less-boring/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Simple.Data and SQL Anywhere – First Impressions</title>
		<link>http://iablog.sybase.com/hinsperg/2012/01/simple-data-and-sql-anywhere-first-impressions/</link>
		<comments>http://iablog.sybase.com/hinsperg/2012/01/simple-data-and-sql-anywhere-first-impressions/#comments</comments>
		<pubDate>Mon, 23 Jan 2012 12:00:18 +0000</pubDate>
		<dc:creator>Jason Hinsperger, Product Manager</dc:creator>
				<category><![CDATA[Commentary]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[SQL Anywhere]]></category>
		<category><![CDATA[dotnet]]></category>
		<category><![CDATA[review]]></category>
		<category><![CDATA[simple.data]]></category>

		<guid isPermaLink="false">http://iablog.sybase.com/hinsperg/?p=671</guid>
		<description><![CDATA[I was recently referred to the Simple.Data library by a SQL Anywhere user Richard Hopton (@richardhopton on twitter) who has created the Simple.Data.SQLAnywhere adaptor for Simple.Data. I&#8217;ve written down some of my impressions here after taking a look at it. Simple.Data is a dynamic data access library for .Net that greatly simplifies database access. Its [...]]]></description>
			<content:encoded><![CDATA[<p>I was recently referred to the <a href="https://github.com/markrendle/Simple.Data">Simple.Data</a> library by a SQL Anywhere user Richard Hopton (@richardhopton on twitter) who has created the <a href="https://github.com/richardhopton/Simple.Data.SqlAnywhere">Simple.Data.SQLAnywhere</a> adaptor for Simple.Data.  I&#8217;ve written down some of my impressions here after taking a look at it.<br />
<span id="more-671"></span><br />
Simple.Data is a dynamic data access library for .Net that greatly simplifies database access.  Its built on top of ADO.Net and allows you to reference database schema directly as a type within your code.  Mark Rendle describes it as an &#8220;an ORM without requiring the O, the R or the M&#8221;.  Inspired by Ruby, dynamic classes allow you to access database entities as though they were objects.<br />
For example, to list customers from the demo database, all you need to do is add a reference to Simple.Data, <a href="https://github.com/richardhopton/Simple.Data.SqlAnywhere">Simple.Data.SQLAnywhere</a> and the SQL Anywhere provider in your project and execute the following code:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code"><pre class="csharp" style="font-family:monospace;">var db <span style="color: #008000;">=</span> Database<span style="color: #008000;">.</span><span style="color: #0000FF;">OpenConnection</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;data source=SQL Anywhere 12 Demo;&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #0600FF; font-weight: bold;">foreach</span> <span style="color: #008000;">&#40;</span>var customer <span style="color: #0600FF; font-weight: bold;">in</span> db<span style="color: #008000;">.</span><span style="color: #0000FF;">Customers</span><span style="color: #008000;">.</span><span style="color: #0000FF;">All</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    Console<span style="color: #008000;">.</span><span style="color: #0000FF;">WriteLine</span><span style="color: #008000;">&#40;</span>customer<span style="color: #008000;">.</span><span style="color: #0000FF;">Surname</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

<p>The really cool thing about this (IMO) is there is no need to set up/design any kind of object relational mapping up front.  Everything is generated for you on the fly.  All the CRUD operations (create, insert, update, delete) are supported, as well as transactions and joins.  This means that you do need to know the database schema up front when using these libraries (rather than using an object mapped library), and if the schema changes, you are looking at code changes and recompiles. However, since there is no mapping it is much easier to link method calls to database operations than in other ORMs, making debugging far easier (hibernate, I am looking at you).</p>
<p>I haven&#8217;t worked with Simple.Data a lot at this point, but what I have done has worked without any problem, and this seems like a great way to implement prototypes and small projects very quickly, especially for new developers.  Also, since it doesn&#8217;t try to hide its relationship with ADO.Net through a zillion layers of <del>misdirection</del> abstraction, you can actually easily use an existing ADO.Net connection with Simple.Data, or get a reference to the Simple.Data connection to use with a regular ADO.Net call if you need to.  You would want to do this in scenarios where you are trying to execute complex SQL, such as multi-table joins, and OLAP operations, or if you need to use dbms specific SQL, etc&#8230;</p>
<p>Simple.Data does not look like it is designed to replace the full-blown ORMs like entity framework, hibernate or EntitySpaces.  For example, if you have complex mappings and accessors between objects and your database (eg. where an object update operation impacts multiple database tables), you will still likely want to use an ORM, and if you need access to advanced features of the RDBMS (eg. UNLOAD TABLE in SQL Anywhere), or performance is a priority, you will want to use a direct API like ADO.Net or ODBC.</p>
<p>The download/install for Simple.Data (and Simple.Data.SQLAnywhere) was trivial.  It is available through <a href="http://nuget.codeplex.com/">nuget</a>, which is how I got it.  I was also new to nuget, a package manager for Visual Studio, and had no problems there either.  Once nuget is installed, adding the reference to Simple.Data.SQLAnywhere was all I had to do to get everything I needed to use the library.  The only hicucp I had was that my installed SQL Anywhere ADO.Net provider was older than the one used to build Simple.Data.SQLAnywhere, so I got class load errors when I ran my app. for the first time.  Updating my SQL Anywhere provider fixed that problem.  I was also able to download the source and project from github and build the provider myself with no problems, so if I wanted to use the older provider I could have.</p>
<p>Overall, I like Simple.Data so far, and I think Richard has done a good job of the SQL Anywhere support.  Thanks Richard!</p>
<img src="http://feeds.feedburner.com/~r/RowsAndColumns/~4/6mV4a4w5-YE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://iablog.sybase.com/hinsperg/2012/01/simple-data-and-sql-anywhere-first-impressions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SVG support in SQL Anywhere</title>
		<link>http://iablog.sybase.com/hinsperg/2012/01/svg-support-in-sql-anywhere/</link>
		<comments>http://iablog.sybase.com/hinsperg/2012/01/svg-support-in-sql-anywhere/#comments</comments>
		<pubDate>Mon, 16 Jan 2012 12:00:02 +0000</pubDate>
		<dc:creator>Jason Hinsperger, Product Manager</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[GIS]]></category>
		<category><![CDATA[Spatial]]></category>
		<category><![CDATA[SQL Anywhere]]></category>
		<category><![CDATA[svg]]></category>

		<guid isPermaLink="false">http://iablog.sybase.com/hinsperg/?p=507</guid>
		<description><![CDATA[The support for spatial data in SQL Anywhere 12 includes the ability to generate result sets in the SVG (scalable vector graphics) format. This format is basically an xml representation of spatial data. We leverage this support in DBISQL, to provide visual representations of result sets: Another nice thing about svg is that it is [...]]]></description>
			<content:encoded><![CDATA[<p>The support for spatial data in SQL Anywhere 12 includes the ability to generate result sets in the <a href="http://en.wikipedia.org/wiki/Scalable_Vector_Graphics">SVG</a> (scalable vector graphics) format.  This format is basically an xml representation of spatial data.<br />
We leverage this support in DBISQL, to provide visual representations of result sets:<br />
<span id="more-507"></span><br />
<br />
<img height="500" width="600" src="http://iablog.sybase.com/hinsperg/wp-content/uploads/2012/01/dbisql_svg_viewer.jpg" alt="SQL Anywhere DBISQL SVG Viewer" /></p>
<p>Another nice thing about svg is that it is also natively supported in web browsers.  This means you can generate a spatial result set from SQL Anywhere that can be immediately viewed in your web browser.  Here is how result set svg can be written to a file with a query:</p>
<p><code>UNLOAD SELECT ST_GEOMETRY::ST_AsSVGAggr( shape ) FROM SpatialShapes<br />
TO 'c:\temp\shapes.svg' QUOTES OFF ESCAPES OFF;</code></p>
<p>&#8230;and here is what that svg looks like when opened in Google Chrome</p>
<p><img src="http://iablog.sybase.com/hinsperg/wp-content/uploads/2012/01/chrome_svg_viewer.jpg" alt="SQL Anywhere SVG in browser" /></p>
<p>The svg support in SQL Anywhere also allows you to influence the generation of the svg output by using the format parameter of the <a href="http://dcx.sybase.com/index.html#1201/en/dbspatial/pg-api-spatial-st-geometry-type-st-assvg-method.html*d5e5725">ST_AsSVG()</a> and <a href="http://dcx.sybase.com/index.html#1201/en/dbspatial/pg-api-spatial-st-geometry-type-st-assvgaggr-method.html">ST_AsSVGAggr()</a> functions.  This allows you set things like fill color, stroke width, and other details of the svg output.  Combining this with some simple javascript allows you to build more interactive images, supplying dynamic labels for your image for example.<br />
Here is an example of how you might do this:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
</pre></td><td class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">OR</span> <span style="color: #993333; font-weight: bold;">REPLACE</span> VARIABLE @header TEXT;
<span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">OR</span> <span style="color: #993333; font-weight: bold;">REPLACE</span> VARIABLE @js TEXT;
<span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">OR</span> <span style="color: #993333; font-weight: bold;">REPLACE</span> VARIABLE @textlabel TEXT;
<span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">OR</span> <span style="color: #993333; font-weight: bold;">REPLACE</span> VARIABLE @paths TEXT;
<span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">OR</span> <span style="color: #993333; font-weight: bold;">REPLACE</span> VARIABLE i <span style="color: #993333; font-weight: bold;">INT</span>;
<span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">OR</span> <span style="color: #993333; font-weight: bold;">REPLACE</span> VARIABLE @svg TEXT;
<span style="color: #808080; font-style: italic;">--Set up page header</span>
<span style="color: #993333; font-weight: bold;">SELECT</span> @header <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">'&lt;?xml version=&quot;1.0&quot; standalone=&quot;no&quot;?&gt;
	&lt;!DOCTYPE svg PUBLIC &quot;-//W3C//DTD SVG 1.1//EN&quot;
	&quot;http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd&quot;&gt;
	&lt;svg viewBox=&quot;-3 -8 10 10&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; 
	    version=&quot;1.1&quot; onload=&quot;init(evt)&quot;&gt;'</span>;
&nbsp;
<span style="color: #808080; font-style: italic;">--Create javascript functions to handle hover functionality</span>
<span style="color: #993333; font-weight: bold;">SELECT</span> @js <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">'&lt;script type=&quot;text/ecmascript&quot;&gt;&lt;![CDATA[
   var glowrate = 0;
   var target;
   var running = true;
   var varZip;
   function onhover(text) {
		running = true;
		varName = document.getElementById(&quot;varName&quot;);
		varName.firstChild.nodeValue = &quot;Shape Name: &quot; + text;
		target = window.event.target;
		glowrate = 0;
		offset();
   };
   function glow() {
		if (glowrate &gt; 3) glowrate = 0;
		glowrate = glowrate + 1;
		target.setAttribute(&quot;opacity&quot;, 0.5*(Math.cos(glowrate)) + 1);
	};
function offset(evt){
	if (!running) return;	
	glow();
	window.setTimeout(&quot;offset()&quot;,100);
};
   function offhover(evt) {
		running = false;
		glowrate = 0;
		evt.target.setAttribute(&quot;opacity&quot;, &quot;1&quot;);
   };
   ]]&gt;&lt;/script&gt;'</span>;
&nbsp;
<span style="color: #808080; font-style: italic;">--Generate svg document from shapes table</span>
<span style="color: #993333; font-weight: bold;">SELECT</span> @textlabel <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">'&lt;text id=&quot;varName&quot; x=&quot;-3&quot; y=&quot;-7&quot; font-size=&quot;0.5&quot;&gt;Shape Name: &lt;/text&gt;'</span>;
<span style="color: #993333; font-weight: bold;">SET</span> i <span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">1</span>;
WHILE i <span style="color: #66cc66;">&lt;=</span> <span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #993333; font-weight: bold;">MAX</span><span style="color: #66cc66;">&#40;</span>ShapeID<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">FROM</span> SpatialShapes<span style="color: #66cc66;">&#41;</span> LOOP
    <span style="color: #993333; font-weight: bold;">SELECT</span> @paths <span style="color: #66cc66;">=</span> @paths <span style="color: #66cc66;">||</span> 
            <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'&lt;path fill=&quot;rgb('</span> <span style="color: #66cc66;">||</span> ROUND<span style="color: #66cc66;">&#40;</span>RAND<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">*</span> <span style="color: #cc66cc;">255</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">||</span> <span style="color: #ff0000;">','</span> <span style="color: #66cc66;">||</span> ROUND<span style="color: #66cc66;">&#40;</span>RAND<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">*</span> <span style="color: #cc66cc;">255</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">||</span> <span style="color: #ff0000;">','</span> <span style="color: #66cc66;">||</span> ROUND<span style="color: #66cc66;">&#40;</span>RAND<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">*</span> <span style="color: #cc66cc;">255</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">||</span> <span style="color: #ff0000;">')&quot; stroke=&quot;black&quot; stroke-width=&quot;0.1%&quot; d=&quot;'</span><span style="color: #66cc66;">||</span>
            <span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">SELECT</span> shape<span style="color: #66cc66;">.</span>ST_AsSVG<span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">'PathDataOnly=Yes'</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">FROM</span> SpatialShapes <span style="color: #993333; font-weight: bold;">WHERE</span> ShapeID <span style="color: #66cc66;">=</span> i<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">||</span><span style="color: #ff0000;">'&quot; onmouseover=&quot;onhover('</span><span style="color: #ff0000;">''</span><span style="color: #66cc66;">||</span>
            <span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #ff0000;">&quot;Description&quot;</span> name <span style="color: #993333; font-weight: bold;">FROM</span> SpatialShapes <span style="color: #993333; font-weight: bold;">WHERE</span> ShapeID <span style="color: #66cc66;">=</span> i<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">||</span> <span style="color: #ff0000;">''</span><span style="color: #ff0000;">')&quot; onmouseout=&quot;offhover(evt)&quot;/&gt;'</span><span style="color: #66cc66;">&#41;</span>;
    <span style="color: #993333; font-weight: bold;">SET</span> i <span style="color: #66cc66;">=</span> i <span style="color: #66cc66;">+</span> <span style="color: #cc66cc;">1</span>;
<span style="color: #993333; font-weight: bold;">END</span> LOOP;
&nbsp;
<span style="color: #993333; font-weight: bold;">SELECT</span> @svg <span style="color: #66cc66;">=</span> @header <span style="color: #66cc66;">||</span> @js <span style="color: #66cc66;">||</span> @textlabel <span style="color: #66cc66;">||</span> @paths <span style="color: #66cc66;">||</span> <span style="color: #ff0000;">'&lt;/svg&gt;'</span>;
<span style="color: #993333; font-weight: bold;">SELECT</span> @svg;
OUTPUT <span style="color: #993333; font-weight: bold;">TO</span> <span style="color: #ff0000;">'C:<span style="color: #000099; font-weight: bold;">\\</span>test.svg'</span>
QUOTE <span style="color: #ff0000;">''</span>
ESCAPES OFF
FORMAT TEXT;</pre></td></tr></table></div>

<p>The result of executing the above code against the SQL Anywhere demo database is the following svg image (hover over the various shapes to see the description change):<br />
<font color="red">Update</font>: <font color="blue">Apparently Chrome doesn&#8217;t like object or embed tags, so I changed to iFrame.  The image displays small in IE for some reason I haven&#8217;t looked into yet, but still functions correctly.</font></p>
<p><iframe src="http://iablog.sybase.com/hinsperg/wp-content/uploads/2012/01/svg-dynamic-labelling.html" height="500" width="600" ></iframe></p>
<img src="http://feeds.feedburner.com/~r/RowsAndColumns/~4/cFsPSj64bc0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://iablog.sybase.com/hinsperg/2012/01/svg-support-in-sql-anywhere/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Who Needs a Client Interface?</title>
		<link>http://iablog.sybase.com/hinsperg/2012/01/who-needs-a-client-interface/</link>
		<comments>http://iablog.sybase.com/hinsperg/2012/01/who-needs-a-client-interface/#comments</comments>
		<pubDate>Mon, 09 Jan 2012 15:00:12 +0000</pubDate>
		<dc:creator>Jason Hinsperger, Product Manager</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[SQL Anywhere]]></category>

		<guid isPermaLink="false">http://iablog.sybase.com/hinsperg/?p=74</guid>
		<description><![CDATA[The SQL Anywhere database server has had the ability to accept HTTP (and HTTPS) requests for a while now. It is a very cool feature that allows (among other things) the production and consumption of web services directly from the database server (ie. no web server required). While not designed to actually replace a web [...]]]></description>
			<content:encoded><![CDATA[<p>The SQL Anywhere database server has had the ability to accept HTTP (and HTTPS) requests for a while now.  It is a very cool feature that allows (among other things) the production and consumption of web services directly from the database server (ie. no web server required). While not designed to actually replace a web server, it can provide some of the same functionality without requiring you to go through the work of setting up, configuring and maintaining a web server like IIS or Apache.<br />
The SQL Anywhere built-in HTTP server is simple on its surface &#8211; it can send and receive HTTP requests.  It was introduced in version 9, but it was not until later versions that this feature has revealed itself to be extremely useful.<br />
One particularly nice feature is along with the <a href="http://www.json.org/fatfree.html">JSON</a> support added to SQL Anywhere 11, it is possible to write client side applications without requiring any install of SQL Anywhere client drivers (ie. no ODBC, OLEDB, ADO.NET, etc&#8230;).  All you need to do is start the database server with the http server enabled, create a couple of simple web service calls, and you are set to access the database from a variety of programming languages using their own built-in http libraries.</p>
<p>An example of this is the <a href="http://dcx.sybase.com/index.html#1201/en/dbadmin/da-server-monitoring.html*d5e67692">SQL Anywhere Server Monitor</a> (available with the <a href="http://www.sybase.com/detail?id=1016644">SQL Anywhere Developer Edition</a>) which allows you to monitor the health and status of your SQL Anywhere and MobiLink database servers. The server monitor application is flashed based and resides inside a SQL Anywhere database.  When you run the monitor application, it starts runs a local database server with the http option turned enabled and loads the server monitor database file, which makes a set of web services available.  To access and use the monitor from any machine on your network, all you do is point your browser at the server.</p>
<p><img src="http://iablog.sybase.com/hinsperg/wp-content/uploads/2011/12/SAMonitor.jpg" width="580" /></p>
<img src="http://feeds.feedburner.com/~r/RowsAndColumns/~4/7g9opeI3NJs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://iablog.sybase.com/hinsperg/2012/01/who-needs-a-client-interface/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>ISVs Can Improve Customer Satisfaction By Moving to the Cloud</title>
		<link>http://iablog.sybase.com/hinsperg/2011/12/isvs-can-improve-customer-satisfaction-by-moving-to-the-cloud/</link>
		<comments>http://iablog.sybase.com/hinsperg/2011/12/isvs-can-improve-customer-satisfaction-by-moving-to-the-cloud/#comments</comments>
		<pubDate>Thu, 22 Dec 2011 15:00:08 +0000</pubDate>
		<dc:creator>Jason Hinsperger, Product Manager</dc:creator>
				<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Commentary]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[fuji]]></category>
		<category><![CDATA[isv]]></category>
		<category><![CDATA[saod]]></category>

		<guid isPermaLink="false">http://iablog.sybase.com/hinsperg/?p=572</guid>
		<description><![CDATA[For an ISV, moving to a SaaS platform from traditional packaged software offers many benefits. One of these benefits is the opportunity to improve customer satisfaction. There are a few ways that this can be accomplished. Let me share 3 of them with you: Improving service/support I talked about this point when discussing how ISV&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p>For an ISV, moving to a SaaS platform from traditional packaged software offers many benefits.  One of these benefits is the opportunity to improve customer satisfaction.  There are a few ways that this can be accomplished.  Let me share 3 of them with you:<br />
<span id="more-572"></span></p>
<ol>
<li><strong>Improving service/support </strong><br />
I talked about this point when discussing how <a href="http://iablog.sybase.com/hinsperg/2011/11/isvs-can-reduce-costs-by-moving-to-the-cloud/">ISV&#8217;s can reduce costs by moving to the cloud</a>.  It follows from this discussion that if you have control over the deployment environment you have a smaller testing matrix, less variability in deployment environments and can more easily push out updates.  These things lead to a more consistent experience for your customers, making them less likely to run into unforeseen problems with your application service, and creating a better experience for them.  <a href="http://www.sybase.com/fujibeta"><strong>SQL Anywhere OnDemand</strong></a> helps to ease the support and manageability of a large multi-tenant environment by allowing you to view and manage your data cloud from a central web console, where you can generate proactive alerts, collect diagnostics and deploy tasks to customer databases to help you resolve issues.
</li>
<li><strong>Application Customization</strong><br />
We&#8217;ve all had customers who make what we feel are unreasonable demands of our products.  Whether its using the product outside the realm of its intended use (or even its imagined use in many cases), or simply hitting the limits of the product in their specific environment, every customer has their own unique requirements.<br />
While it would often be beneficial to address at least some of these demands, it is not possible to satisfy every customers wish with a packaged application.  An ISV cannot usually afford to make customizations to suit a particular installation, and the customer cannot afford to pay for the services and support required to make application customization.<br />
With an appropriately configured SaaS environment, you can offer these extra levels of service to your customers, at a more affordable cost to them.  For example, by supporting complete tenant isolation, <a href="http://www.sybase.com/fujibeta"><strong>SQL Anywhere OnDemand</strong></a> allows you to make database schema changes for individual customers.  Things like creating custom reports or adding an additional column to a table, are trivial to implement with no impact on other users of your service.  In addition, you can easily compare tenant databases in your cloud to other tenant databases, or to a reference schema to identify any differences.<br />
Many customers may not take you up on the customization options, but your ability to do this will differentiate you from competitors and improve the satisfaction of your most demanding customers.
</li>
<li><strong>Providing Additional Services</strong><br />
How many times have you had a customer call your support staff stating their machine crashed and they don&#8217;t have a backup?  I can tell you that when I worked in technical support, this was not an uncommon occurrence.  No matter how often we drive home the importance of backups (<strong>especially </strong> for the database), end-user customers don&#8217;t realize their importance until that inevitable fire/flood/hardware failure occurs.  The worst part is (at least for the ISV) that regardless of the actual cause of the failure, it is the ISV who usually takes the blame.<br />
Providing backup and HA services for your customers is a requirement for any SaaS solution you offer, and doing this will make your customers happy (perhaps blissfully ignorant would be a better term&#8230;).  With <a href="http://www.sybase.com/fujibeta"><strong>SQL Anywhere OnDemand</strong></a>, providing high availability and managing tenant backups in your data cloud is easily managed with the web console.  Ideally your end customer will never even know that you had to failover to another node in your cloud, or that you had to recover a database.
</li>
<p>This list is clearly not exhaustive, but gives an idea for the types of things that a SaaS solution can bring to the table in terms of improving customer relationships, and how <a href="http://www.sybase.com/fujibeta"><strong>SQL Anywhere OnDemand Edition</strong></a> can help ISV&#8217;s get there.  Of course, getting there is the key, and we will talk about some the hurdles of moving to a SaaS environment in future posts.</p>
<img src="http://feeds.feedburner.com/~r/RowsAndColumns/~4/a_adIw_lVnk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://iablog.sybase.com/hinsperg/2011/12/isvs-can-improve-customer-satisfaction-by-moving-to-the-cloud/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ISVs Can Reduce Costs By Moving To the Cloud</title>
		<link>http://iablog.sybase.com/hinsperg/2011/11/isvs-can-reduce-costs-by-moving-to-the-cloud/</link>
		<comments>http://iablog.sybase.com/hinsperg/2011/11/isvs-can-reduce-costs-by-moving-to-the-cloud/#comments</comments>
		<pubDate>Fri, 11 Nov 2011 18:08:50 +0000</pubDate>
		<dc:creator>Jason Hinsperger, Product Manager</dc:creator>
				<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Commentary]]></category>
		<category><![CDATA[SQL Anywhere]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[fuji]]></category>
		<category><![CDATA[isv]]></category>
		<category><![CDATA[saod]]></category>

		<guid isPermaLink="false">http://iablog.sybase.com/hinsperg/?p=513</guid>
		<description><![CDATA[For a change of pace, and to try something new, I decided to try my hand at writing a less technical post. Here goes nothin&#8230; SQL Anywhere OnDemand Edition (codenamed &#8220;Fuji&#8221;, currently in beta) is designed to enable ISVs to take business applications to the cloud without compromising the functionality or quality of their products [...]]]></description>
			<content:encoded><![CDATA[<p>For a change of pace, and to try something new, I decided to try my hand at writing a less technical post.  Here goes nothin&#8230;<br />
<a href="http://www.sybase.com/fujibeta">SQL Anywhere OnDemand Edition</a> (codenamed &#8220;Fuji&#8221;, currently in beta) is designed to enable ISVs to take business applications to the cloud without compromising the functionality or quality of their products and services.  However, as an ISV who has traditionally sold a packaged software solution to your customers, why would you want to move to the cloud at all?<br />
<span id="more-513"></span><br />
One reason is that moving to the cloud (if done right) offers some ways to reduce costs.  It may also increase costs in other areas (eg. infrastructure), but we will cover that in another post.  A few reasons come to mind on how costs can be reduced:</p>
<ol>
<li><strong>Reducing development costs:</strong><br />
When building packaged software, you need to support and test a variety of end user environments.  How many of these you support depends on how much of your target market you want to capture.  However, each supported platform combination (OS, HW, etc&#8230;) requires additional development and testing resources, adding to your overall costs.  <a href="http://www.sybase.com/products/databasemanagement/sqlanywhere">SQL Anywhere</a> has definitely encountered this issue.  Take a look at our <a href="http://www.sybase.com/detail?id=1002288">Supported Platforms Matrix</a> and imagine the testing matrix we have for each release.  To complicate things further, new versions of the software support databases created with older versions of the software (eg. you can run a database created with SQL Anywhere version 10 on a SQL Anywhere version 12 server), further complicating the testing matrix.</p>
<p>Because the cloud can offer you a known, consistent platform for your software to run on, and allows you to decide when and how upgrades occur, you can significantly reduce development and testing costs by offering your software as a service.
</li>
<li><strong>Reducing deployment costs</strong><br />
Every customer has their own unique production environment &#8211; from the machine in the back room to the full service IT department with racks of servers.  All hardware is not created equally.  The cheaper the components of the hardware, the more likely there are going to be issues with it.  Again, looking at SQL Anywhere as an example, we have no control of the deployment environment our customers and OEM&#8217;s deploy to, aside from our documented minimum requirements.  We have run into cases where different versions of hardware drivers at various levels (eg. hard disk drivers) had bugs, or deliberate behaviour (like ignoring flush requests) which caused database corruption to occur. Fortunately these issues are relatively rare and we have developed some methods for dealing with them, but these are only issues that would occur upon deployment.</p>
<p>On top of the hard to track down hardware issues, is the much worse issue of what software is running on your customers&#8217; computers.  From virus to antivirus and MS Office to WoW, all the software on a machine contributes to making every customer deployment a unique adventure.</p>
<p>It is impossible to test every nuance of the varied deployment environments for your software, so you do your best to ensure your software will work in the majority of cases, and rely on your deployment and support teams for the rest.</p>
<p>With the cloud, because you control the deployment environment, you can actually test and verify ahead of time, and be much more confident, allowing you to reduce QA and deployment expenses related to production installs of your software.
</li>
<li><strong>Reducing support costs</strong><br />
Related to the deployment environment is ongoing support for your application.  You have no control over your end user environment.  I have answered many support calls where a user says &#8220;I never did anything.  Your software just stopped working.&#8221;, only to later find out some other piece of software like the OS or antivirus installed an update behind the scenes, breaking the application.</p>
<p>This sort of thing should not happen in the cloud.  Your customers can have a much more consistent experience with your application because you control the runtime environment.  Nothing changes in your hosted applications runtime environment until you test and approve it.
</li>
</ol>
<p>While the above things can have a direct impact on your costs, they can also have an indirect impact on your business.  Two examples that come to mind immediately are:</p>
<ol>
<li>Fewer install and support issues means happier customers, and happy customers are loyal customers.</li>
<li>Less time spent on debugging and support issues means more time for your engineering teams to focus on new innovations to make your product better.</li>
</ol>
<p>While cost reduction is only one benefit of moving to the cloud, it can be a significant motivator for both you and your customers.  <a href="http://www.sybase.com/fujibeta">SQL Anywhere OnDemand Editiion</a> can help you get there by enabling you to build and manage your own data cloud platform service on top of which you can build your SaaS applications.</p>
<img src="http://feeds.feedburner.com/~r/RowsAndColumns/~4/T5JWL1Lc8Xk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://iablog.sybase.com/hinsperg/2011/11/isvs-can-reduce-costs-by-moving-to-the-cloud/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Create a Heat Map with SQL Anywhere and SAP Crystal Reports</title>
		<link>http://iablog.sybase.com/hinsperg/2011/03/create-a-heat-map-with-sql-anywhere-and-sap-crystal-reports/</link>
		<comments>http://iablog.sybase.com/hinsperg/2011/03/create-a-heat-map-with-sql-anywhere-and-sap-crystal-reports/#comments</comments>
		<pubDate>Wed, 02 Mar 2011 15:19:07 +0000</pubDate>
		<dc:creator>Jason Hinsperger, Product Manager</dc:creator>
				<category><![CDATA[Spatial]]></category>
		<category><![CDATA[SQL Anywhere]]></category>
		<category><![CDATA[crystal reports]]></category>
		<category><![CDATA[reporting]]></category>

		<guid isPermaLink="false">http://iablog.sybase.com/hinsperg/?p=471</guid>
		<description><![CDATA[There is a whole world of possibility available for visualizing your data spatially. SAP Crystal Reports is a tool that helps you to create reports to visualize your data. Along with an intern, I was playing with it (or maybe &#8216;evaluating it to understand its capabilities with regards to SQL Anywhere&#8217; would be a better [...]]]></description>
			<content:encoded><![CDATA[<p>There is a whole world of possibility available for visualizing your data spatially.<br />
<a href="http://www.crystalreports.com/">SAP Crystal Reports</a> is a tool that helps you to create reports to visualize your data.  Along with an intern, I was playing with it (or maybe &#8216;evaluating it to understand its capabilities with regards to SQL Anywhere&#8217; would be a better way to phrase it&#8230;), and found that one of the things you can do is create &#8216;Heat Maps&#8217;, which is a simple way to visualize your data on a map without having to learn about or use spatial data in the database.  Using Crystal Reports 2008 and <a href="http://www.sybase.com/products/databasemanagement/sqlanywhere">SQL Anywhere 12</a>, we were able to create a simple heat map report easily and quickly, allowing me to visualize the density of customers in the SQL Anywhere demo database across the US.<br />
However, this was just the tip of the iceberg.  You can move on from there to leverage <a href="http://dcx.sybase.com/index.html#1201en/dbspatial/dbspatial12.html">spatial support in SQL Anywhere</a> to create a variety of reports that help you to slice and dice your data in many different ways.</p>
<p>To plot the location density of customers on a USA map we first created some ranges, so that each geographic area (state) could be colour coded according to the number of customers in that state.  That allows us to very quickly identify those states where we have a large presence, which can impact where we might plan roadshows and customer visits.  It also shows us where we have relatively few customers, which may indicate untapped market opportunities.<br />
You can imagine how you could use other metrics (like revenue) to derive similar kinds of insight from your data.</p>
<p>Using the Database Expert from the Standard Toolbar, I can open ODBC &#8220;SQL Anywhere 12 Demo&#8221; data source and see all of the tables in the database. Even though we aren&#8217;t actually using any spatial capabilities of SQL Anywhere, I used the SpatialContacts table because it has findable addresses in it.</p>
<p><a href="http://iablog.sybase.com/hinsperg/wp-content/uploads/2011/03/CRDBExpert.jpg"><img src="http://iablog.sybase.com/hinsperg/wp-content/uploads/2011/03/CRDBExpert.jpg" alt="" title="CRDBExpert" width="502" height="479" class="alignnone size-full wp-image-474" /></a></p>
<p>Next I opened the map expert from the Standard Toolbar (Insert->Map)<br />
<a href="http://iablog.sybase.com/hinsperg/wp-content/uploads/2011/03/CRMapExpert.jpg"><img src="http://iablog.sybase.com/hinsperg/wp-content/uploads/2011/03/CRMapExpert.jpg" alt="" title="CRMapExpert" width="625" height="461" class="alignnone size-full wp-image-476" /></a></p>
<p>I switched to the advanced layout and dragged the &#8220;State&#8221; column from the SpatialContacts table, into all three of the provided report fields (Geographic field, On Change of, and Map Values).<br />
Then I selected &#8220;Ranged Map&#8221; from the Map Expert tab. </p>
<p>My report was now ready to preview (view->preview from the standard toolbar).  Click for a larger image<br />
<a href="http://iablog.sybase.com/hinsperg/wp-content/uploads/2011/03/CRHeatMap.jpg"><img src="http://iablog.sybase.com/hinsperg/wp-content/uploads/2011/03/CRHeatMap.jpg" alt="" title="CRHeatMap" width="600" height="500" class="alignnone size-full wp-image-475" /></a></p>
<p>Thats basically all there is to it.  You can edit or modify the graph by right-clicking on it in the Preview tab; change the map or change the visible layers on the map (note that some layers like Ocean may cover other layers, preventing you from seeing your data). </p>
<img src="http://feeds.feedburner.com/~r/RowsAndColumns/~4/Dzs8wZ5-YSk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://iablog.sybase.com/hinsperg/2011/03/create-a-heat-map-with-sql-anywhere-and-sap-crystal-reports/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss><!-- Dynamic page generated in 0.444 seconds. --><!-- Cached page generated by WP-Super-Cache on 2012-05-15 08:14:09 -->

