Thursday, June 27, 2013

SQL-Server 2014 New Features of Interest : Newest Microsoft Database / RDMS

Microsoft SQL-Server 2014 New Features

SQL-SERVER 2014 UPGRADES AND ENHANCEMENTS OF NOTE

It seems like the pace of SQL-Server releases is picking up! SQL-Server 2014 CTP1 is just now available for download and it does not seem like that long since I wrote my blog about the previous version and SQL Server 2012 New Features. In general, I think I was more excited about SQL 2012 than I am about SQL-Server 2014, since there were more Transact SQL enhancements in that version, and I tend to focus quite a bit on programming stored procedures and user-defined functions.

But, SQL-Server 2014 definitely has some nice new features that deserve looking at, especially when it comes to "cloud" deployment on Microsoft Azure.

  • Microsoft's codename "Hekaton" in-memory OLTP engine.
  • Column store (columnstore in-memory indexes from SQL 2012) become update-able in SQL2014 by way of updateable clustered columnstore indexes — there are some limitations and restrictions (compared to non-updateable, non-clustered version), but these new indexes should lead to faster query speeds and greater data compression for certain data-warehousing and real-time analytics needs.
  • Buffer-pool-extension support for solid-state drives — enabling faster paging by extending the SQL Server in-memory buffer pool to SSDs.
  • Windows Azure — automatic or manual back-ups to Azure will allow you to keep your on-site data backed up to "the cloud" at a DB-instance-level (for disaster-recovery); restore to an Azure VM if needed too. Also, a new SSMS Migration Wizard for Windows Azure Infrastructure Services makes migrating your on-site SQL-Server to "the cloud" much simpler.
  • SQL 2012 "AlwaysOn" technology extended — SQL Server 2014 gets more "mission critical" availability with up to 8 readable secondaries and no downtime during online indexing operations; in addition, a new SSMS Wizard helps you deploy AlwaysOn secondaries to a Window Azure VM.
  • When used with Windows Server 2012 R2, Greater scalability of compute, networking and storage — including: Scaling up to 640 logical processors and 4TB of memory in a physical environment and up to 64 virtual processors and 1TB of memory per VM; Network Virtualization that abstracts networking layer allowing easy migration of SQL Server from one data-center to another; Storage Virtualization with Storage Spaces where you create pools of storage and storage tiers to prioritize "hot" data to access premium storage (e.g., SSDs) and "cold" data to access standard storage.
  • New security features — these enhancements should simplify administration, auditing, and some application requirements: new CONNECT ANY DATABASE Permission, IMPERSONATE ANY LOGIN Permission, SELECT ALL USER SECURABLES Permission, and ALTER ANY DATABASE EVENT SESSION Permissions;
  • The SELECT … INTO statement is improved and can now operate in parallel;
  • Compiled Transact SQL (compiled T-SQL) Stored Procedures using "WITH NATIVE_COMPILATION" directive — Expensive T-SQL stored procedures (SPs) that reference only In-memory OLTP ("Hekaton") tables can be natively compiled into machine code for further performance improvements. There are some additional requirements for compiling T-SQL that include:
    • Native compiled stored procedures must be schema-bound (use SCHEMABINDING directive);
    • Execution context is required (e.g., "EXECUTE AS OWNER");
    • Must be in an atomic block context — BEGIN ATOMIC WITH (TRANSACTION ISOLATION LEVEL = SNAPSHOT, LANGUAGE = N'us_english') ... statements here ... END;
    • NOTE: While these "native compiled" stored procedures are written using Transact-SQL, they do not support the full Transact-SQL surface area.

SQL-SERVER 2014 : Initial Thoughts

When I first read about "compiled T-SQL procedures", I was excited, but... that quickly faded as I learned about all the limitations.  If I am correct (I think I am), these new compiled stored procedures are only available for the "Hekaton" related data, and even then it sure sounds like further limitations will abound.  I need more time to play with this feature.

Next, I think the simplified deployment to Azure makes sense (certainly for Microsoft, as they can sell you yet another product / service), but it seems a bit much for me to pay for another software upgrade to get feature(s) that enable me to spend more money on their other products.  

Bottom line: I think the reason SQL-Server 2014 showed up on the scene so quickly (relative to the release-cycle windows between SQL2005, 2008, and 2012) has a lot to do with Microsoft freaking out about Amazon and other "cloud" providers landing hosting gigs for SQL-Server databases on a platform they do not own or collect subscriber-cash from.  So, Microsoft had to throw together whatever it could for a new "SQL 2014" release and get it out there to encourage users to adopt Azure as their preferred "cloud" deployment option for SQL-Server.

The new features that accompany SQL2014 pretty much all fit with this analysis.  Sure, the "compiled stored procedures" may not be 100% to do with Azure, but I cannot help wondering if the reason they only work with Hekaton stuff is that they are really "half baked" (and were perhaps intended to apply to all procedures, but there was no "time" to make that happen while rushing to shore-up Azure sales).  Just my thoughts.

Continue to read this Software Development and Technology Blog for computer programming articles (including useful free / OSS source-code and algorithms), software development insights, and technology Techniques, How-To's, Fixes, Reviews, and News — focused on Dart Language, SQL Server, Delphi, Nvidia CUDA, VMware, TypeScript, SVG, other technology tips and how-to's, plus my varied political and economic opinions.

Friday, June 14, 2013

Google Dart Language Status / Popularity 2013

Google Dart Language Progress 2013


Time Flies: Dart, one year later...

In May of 2012, I wrote a blog about how Google's Dart Language ranking / usage was on the rise. I was watching the Github language-popularity rankings for Dart quickly move from 70th position to 55th ranking between May 2012 and October 2012. Now I just took another look today, and one year later Dart is showing up in 56th position on Github. So, Dart's Github rank has essentially gone nowhere since October of 2012. So, what does that mean?

Well, I believe some of the early excitement over Dart wore off as developers (including myself) have been waiting for the Dart language and APIs to stabilize. I switched from heavy-development mode to "just keep code working with latest Dart SDK / APIs" mode for much of the past year (not to mention the fact the Dart team destroyed my ability to have standalone SVG-docs using Dart for interactivity - which previously worked).  In addition, I think a lot of people are waiting for projects like the Dart Web UI (Web Components) stuff to mature so it can be put to use in projects without heavy re-working later.

It is worth noting that the free Dart Editor has come a long way since last year, if you use it.  I personally use JetBrains WebStorm / PHPStorm product (which has a nice Dart plugin), but I can certainly appreciate the effort Google is putting into creating a free editor.  Though, I cannot help thinking that some of the time spent working on the editor would be better spent getting the language features, APIs, and libraries completed and stabilized.

In addition, Dart's code execution-speed / performance is fantastic now!  This is certainly worth noting, and keeps my interest in Dart.  When Dart is running twice as fast as JS (in V8 engine, which is quite speedy JS to begin with), that is impressive, which is partly why...

Dart Language is Getting Noticed Yet

I just took a look at the TIOBE Programming Community Index (June 2013) site (FYI, the TIOBE Programming Community index is an indicator of the popularity of programming languages), were I encountered this (quoted material) in their monthly summary, which notes Dart's progress / presence:
...there are also some threats for JavaScript. The JavaScript language is generally regarded as a programming language in which it is easy to make mistakes. It is interpreted, so most errors show up only at run-time. That's why Google designed Dart (currently at position 80) as JavaScript's successor. But also other programming languages were designed to generate JavaScript code instead of writing it manually. Examples of this are CoffeeScript (position 139) and TypeScript (position 207).
Yes, Dart is more than holding its own compared to Microsoft's own Dart-like language, TypeScript.  But, it is nowhere near the well-entrenched JavaScript (which was in 10th place this month).  Google has done a decent job of talking Dart up at developer conferences and so froth, but much more will have to change before Dart truly threatens Javascript...

What is needed for Dart Language adoption to increase?

Now, that sure is an open question subject to all sorts of debate.  As I mentioned, I want/need the language features and APIs and libraries to stabilize before I commit much more heavy development time into Dart projects.  Furthermore, Google needs to really embrace Dart (internally) in such a way the shows us developers that we are not investing in something that is going to just fade away.  And, I mean more than just *talk*.

I find it frustrating that projects like the (native, not js-interop) Dart-based Google Visualization API / Google Charts projects have just stalled out and appear, essentially, abandoned (if anyone can even find these anymore).  What's up with that?  For a while, it looked like the Dart team was going to produce native Dart-language layer for products like Google Visualization, which I'd love to see.  I recently needed to use Google-Viz / Charts with some Google Table data, and I looked everywhere for native Dart stuff.  In the end, I just gave up and used JavaScript for the project, and hated every minute of it (I find Dart coding productivity to be much higher than JS, as I really enjoy class-based OOP as natively implemented in Dart).

There there is always the question about: when will Google's cloud (Google App Engine) support native Dart-based hosted web applications?  Seems like a very popular topic/question that remains as yet open. Or, how soon will the Dart VM be included in Chromium / Blink browser?

Until more "core" and "mainstream" libraries exist natively in Dart (starting with Google's own various public libraries and APIs), I just do not see how Dart's adoption will surge.  Sure, it will slowly grow, but it would grow a LOT faster if there were some substantial popular libraries and APIs out there that were written in native Dart.  Dart's execution speed is fantastic, but that alone is not quite enough for me to commit fully to Dart.  That's my opinion for now at least.  I remain a Dart developer, but a software developer that is also waiting for signs that I will not be investing my time into something that becomes the next Delphi (i.e., technically superior, fast, but low market adoption niche language/product).


Continue to read this Software Development and Technology Blog for computer programming articles (including useful free / OSS source-code and algorithms), software development insights, and technology Techniques, How-To's, Fixes, Reviews, and News — focused on Dart Language, SQL Server, Delphi, Nvidia CUDA, VMware, TypeScript, SVG, other technology tips and how-to's, plus my varied political and economic opinions.