Posts

Creating XML from Relational Databases


Sometimes following an example someone else created is a good way to get a quick start on a project. The downside is you might miss a better, more efficient solution. In our recent post on XML in the Cloud, we used DatabaseSpy to connect to a local MySQL database and to the Amazon Relational Database Service in the cloud. We used the Concat( ) function in a SQL SELECT statement to create XML formatted output from non-XML data as shown below. DatabaseSpy SQL query and result Our SELECT statement was based on an example in the MySQL documentation on XML support. Let’s take a little deeper look at the problem this statement tries to address. You can copy a DatabaseSpy Results table like the one displayed above and paste it into an editing window in XMLSpy, but the Results table alone does not create a well-formed XML document. To be well formed according to the W3C definition, an XML document must contain a root element. All other elements and logical structures must nest within the root. You can also think of the root element as a wrapper around the entire XML content, the same way the element <city></city> encloses each line in our original results. A Better Way to Create XML from Relational Data We don’t need to manually edit the results to add a root element, nor do we need to adapt our already-complicated SQL query to add the root. DatabaseSpy lets us easily export well-formed XML documents from database tables that contain ordinary data like our cities table. In the DatabaseSpy Export dialog we can choose XML Structure as the output format, click the cities table to select it from the database hierarchy, and choose XMLSpy as the destination. The Preview section at the bottom of the Export dialog shows a view into the table contents. DatabaseSpy Export Dialog When we click the Export button, DatabaseSpy formats the relational data with XML element names derived from the column names of the table and sends the resulting output directly to XMLSpy. The screenshot below shows a portion of the file in XMLSpy. The Message window at the bottom verifies the file is well formed. XMLSpy Editing window and Message window Note that DatabaseSpy supplied the root element <Import name = “cities”> and added comments to describe the datatypes of the database table columns. And, we did not have to construct a SQL statement with a cumbersome Concat( ) function. We began this post to address the simple requirement for a root element to complete the output of the Concat ( ) function we described earlier. When real-world projects require converting from relational databases to XML, the requirements are likely to be much more complex. Altova XMLSpy connects directly to all popular databases to work with XML technologies and relational data. XMLSpy lets you easily create an XML Schema from a database structure, or create a database schema from an XML Schema. XMLSpy also includes advanced editors and debuggers for XQuery and XPath for XML stored directly in databases, along with specialized support for XML features in Microsoft SQL Server, IBM DB2, and Oracle databases. As more industries adopt and evolve XML-based standards for information interchange, a common need is to convert data stored in legacy databases to XML. Altova MapForce connects to databases and allows you to map and transform relational data to be compatible with one or more XML Schemas. You can use your mapping to perform a one-time data conversion, you can save and re-open your mapping to perform another conversion later, or you can instruct MapForce to generate royalty-free source code from your mapping to include in your own project when repeated conversions are required. If you’d like to see for yourself how well Altova tools can generate well-formatted XML from relational databases, download a free trial of the Altova MissionKit.

Tags: , , , , ,

New Software Feature: Charting in DatabaseSpy 2011


Multi-database query, design, and database comparison tool. A colorful, eye-catching chart is much more vivid and communicates meaning more quickly than a table of numeric data. As part of the v2011 launch of the Altova Missionkit on September 8, 2010, DatabaseSpy 2011 includes a new SQL charts tool that provides a wide variety of charting features to graphically represent SQL query results. DatabaseSpy 2011 supports the following chart types to provide the most appropriate representation of various data sets:

  • Line charts
  • 2-D and 3-D pie charts
  • 2-D and 3-D bar charts
  • Round gauge and bar gauge charts

A line chart generated from SQL query results by Altova DatabaseSpy DatabaseSpy SQL Charts Tool Supported Databases DatabaseSpy 2011 supports multiple database types and can generate charts from the results of SQL queries to the following databases:

  • Microsoft® SQL Server® 2000, 2005, 2008
  • IBM DB2® 8, 9
  • IBM DB2 for iSeries® v5.4, 6.1
  • Oracle® 9i, 10g, 11g
  • Sybase® 12
  • MySQL® 4, 5
  • PostgreSQL 8
  • Microsoft Access™ 2003, 2007

Charting SQL Query Results A link in the Altova DatabaseSpy 2011 SQL Editor Results window toolbar opens the Chart Selection dialog to initiate data charting. A SQL query and result table in Altova DatabaseSpy The chart tool icon opens the Select columns dialog, where users can specify which column of the Results table to use for the X-axis. Users can also change the order of value columns, or even leave one or more results column uncharted. This feature permits multiple charts to be generated for subsets of data from a single query that retrieves many table columns. DatabaseSpy SQL Chart Tool Select Columns dialog The data is initially plotted using the default chart type and settings in a new Charts window. Like other DatabaseSpy helper windows, the Charts window can be unpinned, moved, and resized, as a floating window. The Charts window has nine tabs that permit users to specify properties of nine different charts that can even be assigned to different query results. A bar chart generated from SQL query results by Altova DatabaseSpy The Change Type dialog gives users instant access to a wide variety of other chart styles. DatabaseSpy SQL Chart Tool Change Type dialog Within each chart type, sub-menus specify all the details of the chart appearance. Numerous customization options are available for each chart type, including chart titles, foreground and background colors, definition of axis ranges and labels, control of fonts, text colors and sizes, and more. A pull-down menu also lets users save and reload customized chart settings in files, for instance to store standardized chart styles and reuse them with multiple query results. The screenshot below shows a few of the settings for the line chart at the top of this page, which illustrates the same temperature and humidity data shown in the SQL query screenshot. DatabaseSpy SQL Chart Tool Chart Appearance dialog The screenshot below shows a bar chart reporting total sales for the year to date by sales territory. This is a typical example of a chart style that can be reused in a report that is frequently updated with the latest sales data. A 3-D bar chart generated from SQL query results by Altova DatabaseSpy Multiple Charts from a Single SQL Query Results Table Generating multiple charts from the same SQL query is simple and straightforward by selecting different columns of data in the Results table. The SQL query in the screenshot below returns the population and land area of the boroughs that make up New York City: A SQL query and result table in Altova DatabaseSpy Users can choose any tab in the Charts window, then assign data by clicking the Select Data menu option in the Charts window menu bar. DatabaseSpy SQL Chart Tool Select Data dialog Here are examples of an ordinary pie chart and a 3-D pie chart generated individually from the population and square miles data columns of the Results table: A 2-D pie chart generated from SQL query results by Altova DatabaseSpy A 3-D pie chart generated from SQL query results by Altova DatabaseSpy DatabaseSpy 2011 lets users change the chart colors by selecting an alternate palette or any custom colors. Customization of chart colors in Altova DatabaseSpy Gauge Charts from a Single Value or Calculated Results Gauge charts are used to illustrate a single value and show its relation to a minimum and a maximum value. For a round gauge chart, users can specify the beginning and ending values of the range, and the starting and ending locations on the gauge. DatabaseSpy 2011 enables complete gauge customization through selection of the background color, border color, needle color, text font, size, and color, and more. A round gauge chart generated by Altova DatabaseSpy DatabaseSpy 2011 can generate charts from results tables that contain relational data, or from results of calculations performed by SQL queries. Gauge charts are a good fit for illustrating a single calculated value. The screenshot below shows a percent of quota calculation in a DatabaseSpy 2011 SQL Editor window, based on a table of stored daily sales and sales quota data. SQL query that generates a single calculated result in Altova DatabaseSpy The calculated value can be more dramatic when represented in a bar gauge chart, where DatabaseSpy 2011 permits multiple background colors defined by ranges along the axis, as shown below. clip_image018 Export Charts for Reports DatabaseSpy 2011 exports charts to image files in .png, .bmp, .gif, or .jpg files in customized sizes, independent of the size of the chart window on the screen to create eye-catching visual elements in reports of all types. Export option in the DatabaseSpy Charts menu Whether you are a developer, business analyst, research professional, or other database user, DatabaseSpy 2011 can generate elegant charts from SQL query results to illustrate your data reports – download a free 30-day trial today!
If you’d like to find out for yourself how well DatabaseSpy works with other Altova tools, download a free trial of the Altova MissionKit.

Tags: , , ,

UML Database Modeling in UModel 2011


As software applications interact with growing amounts of data, database designs and structures become critical to development of successful projects. UModel® 2011, just launched on September 8, 2010, adds a new feature that empowers users to extend software modeling functionality by modeling relational databases along with Java, C#, and Visual Basic software applications. UModel 2011 accelerates database modeling with features that permits users to:

  • Import existing tables from all popular relational databases to create UML database diagrams
  • Modify diagrams for existing tables and generate SQL database change scripts to synchronize the database
  • Design new database tables and relationships from scratch and issue SQL CREATE scripts

UML database diagram UModel Database Diagram Supported Databases The UModel 2011 database diagram functionality supports multiple databases and automatically adjusts SQL dialects, data types, and other specialized features for the following databases:

  • Microsoft® SQL Server® 2000, 2005, 2008
  • IBM DB2® 8, 9
  • IBM DB2 for iSeries® v5.4, 6.1
  • Oracle® 9i, 10g, 11g
  • Sybase® 12
  • MySQL® 4, 5
  • PostgreSQL 8
  • Microsoft Access™ 2003, 2007

UModel Database Diagram Elements UModel 2011 database diagrams support all the following database elements:

  • Database schemas
  • Tables
  • Views
  • Check Constraints
  • Primary / Foreign / Unique keys
  • Indexes
  • Stored procedures
  • Functions
  • Triggers
  • Database Relationship Associations
  • Database Relationship with Attributes

Import Existing Database Structures Users can import an existing relational database via a selection in the UModel 2011 Project menu. UModel Project menu The Import SQL Database option opens the UModel 2011 Database Connection dialog, with the Database Connection Wizard and all the additional connection options available in DatabaseSpy and other Altova MissionKit tools that interact with popular relational databases. UModel database connection dialog When importing a database, UModel 2011 also automatically adds a database profile to the project. UModel 2011 database diagrams are displayed in a special category in the Diagram Tree Helper window. UModel Diagram Tree helper window Modifying Databases in the Model UModel 2011 database diagrams use a dedicated toolbar with icons indicating database elements that are shared with DatabaseSpy, easing the learning curve between tools. UModel database diagram toolbar As editing proceeds in UModel 2011, the SQL Auto-completion helper window assists with creation of diagrams valid for the SQL database type. UModel database diagram SQL autocompletion window As an alternative to working directly in the diagram, users can also edit database elements in the Properties helper window. UModel database diagram Properties helper window Database Change Scripts When a developer synchronizes program code from the UModel project, changes in any database diagram generate a Database Change Script with SQL commands to implement the revisions. Database Change Scripts created in UModel can be saved as SQL files, executed directly in the database, or opened in a DatabaseSpy SQL Editor window via a convenient button in the UModel Database Change Script dialog. UModel Database Change Script Conversely, if another team member modifies a table directly in the database, a developer can update the UML model by merging the database changes. UModel Message window After synchronization of the UML model with the latest version of the database, the database diagram shows a new column in the Teachers table. UModel updated database diagram Like all other UModel diagram types, UModel 2011 lets users save database diagrams as image files and include them in automatically-generated project documentation. Visit the Altova What’s New page to learn more about all the new features in the Altova MissionKit 2011. Model databases along with system requirements, business rules, and application code for your next development project – click here to download a free 30-day trial of UModel 2011 today!

Tags: , , , , , ,

Using Altova Tools to Work with XML Data in the SQL Azure Cloud


In an earlier post we discussed connecting to Microsoft SQL Azure databases with Altova DatabaseSpy and demonstrated database schema comparison and content comparison between a local database and the same database migrated to SQL Azure. In this post we will use a different method to migrate an existing table to SQL Azure and show you some tricks you can do with XML in the cloud. We started by creating a new database schema in SQL Azure. Then we created a DatabaseSpy project with a connection to a local copy of SQL Server Express running the AdventureWorks sample database, and a second connection to our new SQL Azure schema. DatabaseSpy Project helper window The AdventureWorks database contains a table called JobCandidate with some XML data we will use for a model for our SQL Azure XML contents. AdventureWorks JobCandidate table in the DatabaseSpy Online Browser window We can generate a CREATE statement for the existing table to use as a basis for the SQL Azure version. CREATE statement for the existing JobCandidate table We need to modify this statement to execute in our SQL Azure database. In addition to changing the database and schema names, we will remove the foreign key constraint to the Employee table, since our new database doesn’t contain a table with that name. Also, SQL Azure does not support the CONTENT keyword, so we will remove that as well. Modifying the CREATE statement in a DatabaseSpy SQL Editor window After making sure the Properties window for the revised CREATE statement points to the SQL Azure database, we can execute the statement. When we refresh the database and expand our view in the Online Browser helper window, we can see the new empty table. New table viewed in the DatabaseSpy Online Browser window A data comparison between the existing table and the new one will allow us to create a script to migrate data into our new table in the SQL Azure cloud. This is similar to the data comparison we wrote about in our previous post on SQL Azure, except instead of merging data directly, we will save the merge script. DatabaseSpy Merge Data dialog Our first attempt to run the merger script failed, throwing an error message that SQL Azure cannot insert values into the new table when IDENTITY_INSERT is set to OFF. We can add a line to the merge script to SET INDENTITY_INSERT ON and re-execute: Merge data script viewed in a DatabaseSpy SQL Editor window Next, we can run a SELECT query to view the data that was successfully uploaded. Select query and Results viewed in DatabaseSpy The DatabaseSpy Data Inspector window lets us more easily examine the contents of a wide column, and is ideal to use for XML documents stored in the Resume column of the new JobCandidate table. DatabaseSpy Data Inspector window Editing XML Data with XMLSpy If you need to revise, edit, update, or validate XML data in a SQL Azure database, Altova XMLSpy provides more robust XML editing features than DatabaseSpy. We can connect to our SQL Azure database from XMLSpy and run a SELECT query from the XMLSpy Database Query window. XMLSpy lets us open any XML row for direct editing, with access to advanced XML editing functionality. XMLSpy Database Query view of XML data in the SQL Azure cloud Of course all the familiar features of the XMLSpy text view and grid view are available. XMLSpy Text view of XML data in the SQL Azure cloud XMLSpy Grid view of XML data inthe SQL Azure cloud After your edits are complete, the XMLSpy File / Save menu option saves the revised XML document to the same row of the JobCandidate table in the SQL Azure database in the cloud. XMLSpy File / Save menu option saves XML data to the SQL Azure cloud Parsing XML Data with XQuery You can also apply the XMLSpy XQuery editor, with its built-in knowledge of XQuery syntax and context-sensitive entry helpers to build XQuery statements that parse the XML data in your SQL Azure database. The XQuery statement below extracts and returns the home addresses from the XML resumes where JobCandidateID is less than 7. XMLSpy XQuery editor for XML data in SQL Azure The XQuery statement can be executed in the Database Query window, with results immediately available to work with in XMLSpy. XQuery statement and results inthe XMLSpy Database Query window Of course the XQuery result can also be edited in Text view or in Grid view. XQuery result in XMLSpy Text view XQuery result in XMLSpy Grid view And you can save the query result either from the Database Query window or from the XML Editor view. Find out for yourself how productive you can be by using Altova tools to work with XML data in the SQL Azure cloud ̶ download a free 30-day trial of the Altova MissionKit for Software Architects, an integrated suite that includes XMLSpy, DatabaseSpy, and additional XML, database, and UML tools.

Tags: , , , , , , ,

Connecting DatabaseSpy to a SQL Azure Database in the Cloud


Tips and techniques to ease introduction of Microsoft’s cloud-based SQL Azure database into production environments led the topics in June at the Tech-Ed conference in New Orleans. SQL Azure is built on Microsoft SQL Server technologies and is designed to provide a highly-available and scalable database service hosted by Microsoft in the cloud. Developers who deploy databases in SQL Azure do not have to install, setup, patch, or manage any relational database software, only their own database structure and content. Automatic redundancy and fault tolerance are built-in and no physical administration is required. You can build a manual connection string and use SQL Server syntax and datatypes to connect DatabaseSpy and other Altova tools to SQL Azure databases to perform typical database development and maintenance tasks. This blog post makes a connection to a SQL Azure database from DatabaseSpy and demonstrates several typical operations you might want to perform as you migrate an existing database to the cloud. To retrace these steps on your own you will need a SQL Azure account, or a login and password created by a SQL Azure account holder. For more information on setting up a SQL Azure account, visit the Microsoft SQL Azure home page. You will also need to install the SQL Server Native Client 10.0 (or later). SQL Azure does not behave exactly like a local SQL Server database, so we can’t use the Altova SQL Server connection wizard. Instead we will use an ODBC connection. DatabaseSpy ODBC Connection Dialog We won’t illustrate all the details of the process of building a new connection string here. You can paste an existing connection string into the dialog shown above, or, if you need specific instructions for each step to manually create a new string, you can refer to the Tech Note titled Build an ODBC Connection String for SQL Azure on the Altova Web site. After you connect to SQL Azure the first time, a DatabaseSpy project file lets you save all your connection settings along with frequently-used SQL scripts, database design files, and database comparisons in a convenient bundle to reload later. The screenshot below shows a new DatabaseSpy project with two databases connected simultaneously, Sakila in MySQL and Sakila in the cloud in SQL Azure. DatabaseSpy Project Helper Window Microsoft provides a number of conversion tools to help users migrate existing databases to the SQL Azure platform. We used the Microsoft SQL Server Migration Assistant for MySQL to convert our local MySQL Sakila sample database to our SQL Azure account. DatabasesSpy lets users open multiple connections simultaneously, even to databases of different types. The database comparison functionality of DatabaseSpy makes it an ideal tool to check the results of the Sakila conversion. First we will open a database schema comparison and select a few tables from the MySQL database for the left side of the comparison. DatabaseSpy Comparison Selection Dialog After we select the corresponding tables from SQL Azure version, the tables open in a database schema comparison window. DatabaseSpy Schema Comparison When we click the green compare button at the top left corner of the window, DatabaseSpy compares the database structures, highlights differences, and generates a summary in the message window. DatabaseSpy Schema Comparison with Differences Some differences represent datatype definitions that vary between databases. For instance, the MySQL type unsigned small int does not have an exact equivalent in SQL Server, so the conversion tool substituted the int type for the film_id column in the film table. Also, the year datatype assigned to the release_year column in MySQL has been converted to a smallint in SQL Azure. I guess this will make the SQL Azure version of the database more forward-compatible, since it will be able to accommodate films released all the way through the year 32,767, as opposed to 2155, which is the maximum value of the year datatype in MySQL! We can compare data contained in the two databases via a selection in the right-click context menu, opening the selected tables in a new data comparison window. DatabaseSpy Comparison Context Menu The data comparison shows us the contents of the tables are not identical. DatabaseSpy Content Comparison When we open the results window, we see that the description column did not migrate successfully. DatabaseSpy Content Comparison with Results Looking back at the Database Schema Comparison window, we can see the length of the description column was set to zero. This explains the red arrows that point from the description column in MySQL to the description column in SQL Azure in the Results window. We cannot copy any string of text into a column with a defined length of zero. Instead, let’s open the SQL Azure version of the film table in a new Design window. DatabaseSpy Graphical Design View We can increase the size of the description field in the Properties window, and run the resulting change script. DatabaseSpy Graphical Design Properties Helper Window DatabaseSpy Database Structure Change Script Next, when we re-run the data comparison, we find that the data was converted, but the previously defined field length of zero made the data invisible. DatabaseSpy Content Comparison with Results Latency Issues You can use DatabaseSpy to explore latency issues for the cloud database vs. the local copy. We saw from the data comparison above that the film tables in the two databases contain 1,000 rows of identical data. We can repeatedly run SELECT statements to retrieve the data from SQL Azure and from the local MySQL database to time the results. The DatabaseSpy SQL Editor message window displays the execution time. SQL Azure Query Execution Time Running the above SELECT statement five consecutive times on the SQL Azure version of the sakila database generated results ranging from 60.632 seconds to 63.851 seconds. Running a SELECT statement for the same film table in the local MySQL database yielded the following result: SQL Server Query Execution Time Repeating the test for the local version generated similar times. The takeaway for developers is your database-driven application will likely need to accommodate latency as you move your data to the cloud. Try your own connection to SQL Azure with a free trial of Altova DatabaseSpy.

Tags: , , ,

What to Do On a Rainy Day in San Francisco?


That was the question for 30,000-plus attendees at Oracle OpenWorld 2009 last week, when weather forecasters were predicting the remnants of a Pacific typhoon would hit San Francisco with winds up to 60 miles per hour and drop rainfall measuring multiple inches. A rainy day in San Francisco Fortunately, the best attractions were all indoors. Oracle OpenWorld is one of the largest events held each year at the Moscone Convention Center. The keynote speeches, conference seminars, and partner exhibitions fill all three buildings. Even Howard Street between the North and South halls is closed for an entire block to create room for the lunch pavilion. Oracle OpenWorld is the best place to come for face-to-face education and interaction on all subjects related to every facet of the Oracle ecosystem. Altova is an Oracle Partner and this is an event we look forward to every year. The Altova MissionKit provides extensive support for database management, query, and design; database integration; database differencing; and database content editing. Altova at Oracle OpenWorld We love to meet users whose Oracle databases contain XML and show off features like support for Oracle XML DB data modeling, and the XQuery editor, debugger, and profiler in XMLSpy. We love to talk to users whose Oracle databases don’t contain XML yet, so we can demonstrate how to derive an XML Schema from the tables and relationships in a non-XML database. We also like to meet users who sometimes interact with databases other than Oracle, since the database functionality in Altova tools is never restricted to a single database technology. Due to the Oracle acquisition of Sun this year, MySQL was a popular subject. Our DatabaseSpy demo in the Altova booth highlighted simultaneous connections to Oracle and MySQL databases with interactive functionality to compare and merge data between tables in different database types. With convenient shuttle service from all the area hotels to Moscone, the question became not “What to do in the rain?”, but “What to do first?” Conference sessions covered every topic from databases to applications, to middleware, to specialized industry topics, and even XBRL. In Moscone West the Oracle Demo Grounds were always busy, with dozens of individual stations simultaneously active. The Altova booth was a popular spot, as were displays by other Oracle partners, including Amazon, Salesforce, and many more. To refresh and recharge, there were lots of fun things to do too. We even saw evidence that Paul and Ringo might have been there. They left their instruments Best yet, when we stepped outside after a long, productive day, the rain had stopped and we were presented with a warm San Francisco night. Check out our Oracle Openworld 2009 video slideshow on YouTube to see more:

Tags: , , , , , , ,

New DatabaseSpy Video: Exploring Databases


We’ve just launched the third video in the DatabaseSpy series. Exploring Databases is a tour of the DatabaseSpy Online Browser, a powerful tool for viewing, searching, and analyzing one or more connected databases. Exploring Databases demo Exploring Databases builds on the preceding video, Database Connections, which demonstrated how easy it is to use DatabaseSpy to connect to one or more databases. You can even simultaneously connect to databases of different types. And DatabaseSpy supports the most popular databases in production today, including Microsoft SQL Server, IBM DB2, Oracle, Sybase, MySQL, and more. Once you’re connected, the DatabaseSpy Online Browser shows you an expandable hierarchy of the database structure. It’s a great place to start exploring an unfamiliar database or quickly navigate to any specific element you need to work with in a familiar one. The Altova Flash videos are proving to be a popular feature on our Web site, with close to 350,000 views in all. If you haven’t seen an Altova product video yet, you’re missing a great opportunity to get a flavor for components of the award-winning Altova MissionKit by seeing them in action. If you’re already a fan, check back again soon — we’re in the studio working on more videos right now.

Tags: , , , , , , ,