:: NEWS :: With NShape, application programmers
can integrate MS Visio-like functionality in their applications. NShape
is open source and specifically made for industrial applications.
dataweb TurboDB: A User’s Perspective
This document is an independent report into the usability of the TurboDB.net database solution and encompasses website navigation, product download, documentation, installation and development.
About the Author
About the Author
I am approaching the completion of an Honorary Bachelor’s Degree in Computer Science at Coventry University (UK) and have been programming for several years now, although only commercially for the last two.
Academically, my database work has mostly been with Microsoft Access (using Visual Basic 6) and Paradox (using PAL). One example of this was an assignment for a commercial programming module, where we were required to write a car insurance application that had to be coded entirely using direct data access (no SQL). The application had to enforce multiple relationships between customers, cars and policies whilst maintaining data integrity.
My non-database work (academically) has included User Interface Design, Advanced Programming, Artificial Intelligence and Mathematics for Computing.
Having used database engines from the days of Paradox for DOS, I have built up an appreciation of the various issues involved in both programming and using systems on a range of platforms. As a result, I chose to study the theory of Database Design in more detail at university. This allowed me to gain further insight into the mechanisms involved in multiple-user environments, such as “on-demand” information services, as well as the logistics and limitations of database systems in general.
Why Test TurboDB?
One of my ambitions has always been to independently release software and be recognised for doing so. I think that for a lot of people, software is a poisoned chalice as it can make life easier and can save money but the realities are that computers are too difficult to set up, increasingly insecure and sometimes just too much hassle to get simple jobs done.
I aim to write software that is both functional and simple. As a programmer, I feel that my task is to solve problems and remove the complexity of using computers, after all, good software always belies its’ complexity.
Programs now increasingly rely on database engines to handle their data storage requirements as traceability becomes ever more important. This in itself is proving to be problematic as a lot of solutions suffer from convolution and overly complex installation procedures. It was this that has spurned my research into a database engine that was both powerful and easy to use (especially during deployment - which cannot be said for Microsoft’s SQL Server!) with a view to writing database driven software.
Since I am now writing the majority of my code in C#, another core requirement is that the database engine I use is compatible with the .net framework(s). This will become increasingly important as the market for windows-enabled mobile/PDA devices progresses beyond their hardware functionality and focuses more on applications development.
Having previously looked at the VistaDB engine (which is completely written in .net) and found several major issues, I relished the opportunity to try out a more mature solution.
Using the dataweb Website
Having written corporate websites and studied user interface design, I tend to be a lot more critical of site design than the average user - so it was a welcome change to see a clear and cleanly laid-out site. I have broken down my assessment into 8 core categories:
With the myriad of adverts and flash banners that line the Internet, it is a refreshing change to see a site that is clean and simply laid out. In my opinion content is king and so a site must be devoid of clutter (which also helps search engine rankings). The dataweb site scores very highly here in my opinion.
The structure of the site is very good, although the addition of a search box would have been welcome as this would be both functional and help break up the white space adjacent to the website logo. I would also like to have seen the country flags currently shown on the left-hand navigation bar use this space.
The news on the front page should really be truncated to show just the top five items, followed by a link to the rest of the stories. This avoid unnecessary vertical scrolling (not an obvious thought when writing a page, but nevertheless annoying!).
This site is very strong in the principles of usability as the major site areas are consistently displayed at the top of each page with relevant sub-categories being displayed on the left. This, when combined with the simple page layout, makes it very easy to distinguish the sites’ content from other page elements.
As previously mentioned, the navigational controls are in line with what people expect from a website. However, points are lost for missing some simple tricks that could have dramatically enhanced the usability of the site.
Firstly, the dataweb logo itself should be a link to the index page, except when the page IS the index page. This is a common practice and introduces consistency in the form of a “home” link as well as helping to improve the site’s search engine rankings.
Secondly, the site has no ‘breadcrumb path’ to show the user where they are (typically shown at the top of a website). This location status (such as “Home” or “Home >> Main Topic >> Sub-Topic”) can make the user feel safer in exploring the site as they can still get back to where they were without having to play around with their browser buttons.
Availability of information
This area is one of the best (and most important) of the site as all of the information and frequently asked questions were easy to get to with the links being placed logically within the content.
The software’s documentation was also available online, both as a PDF and as a navigable resource which is a refreshing change to the typical laziness of only uploading a PDF (which requires the increasingly intensive Acrobat Reader). My only gripe with this was again the lack of a search facility.
Speed is often overlooked in the broadband era, so it was a pleasure to actually have the content arrive almost instantly after clicking its’ link. This is a big plus for any website.
The only mistake that really caught my eye was that the copyright date at the bottom of the page still reads 2003.
The website download was quick and fast - as simple as clicking on the “Downloads” page and picking the relevant Trial. Perhaps some icons (ie. The .net and Delphi logos) would have improved the affordability of the page slightly, but the bookmarks greatly improved navigation to the relevant download section.
Installation and Visual Studio Integration
Installation was a very simple affair – which is what I expected for a database whose biggest plus point was easy deployment! The installer picked a sensible directory and the files were copied quickly.
As a final stage of the installation, the installer makes amendments to the Visual Studio 2003 help files, which didn’t take too long and was very smooth. However, dataweb have missed the opportunity to take this integration to the next level by not integrating itself into the “New Project” dialog of Visual Studio:
Fig 1. The “New Project” dialog of Visual Studio 2003 .net
An entry for a blank WinForms project with a TurboDB DataAdapter (which subsequently launches the TurboDB DataAdapter Configuration Wizard) under the “Database Projects” section of this dialog would have been a really nice addition. This way, users would not have to add the dll references manually. It would also help beginners if the installer provided the option to install the TurboDB View and Compound File Explorer into Visual Studio’s Tools Menu automatically.
My second gripe with the Visual Studio integration was with the TurboDB DataAdapter Configuration Wizard (fired when a TurboDB DataAdapter is dragged onto a form). The Wizard starts off well by offering whether to use a single-file database or a directory database and then progresses to the “Generate SQL Statements Screen”:
Fig 2. The “Generate SQL statements” screen in the Adapter Configuration Wizard
Now, let’s say I do not want to generate any statements (which most people would not in the early stages of program creation) and click the “Finish” button. I see this error:
Fig 3. The error message displayed upon entering no SQL Statements
The fact that this error even appears in the first place is bad enough as this action is perfectly legitimate, but the error message is just plain clumsy - it doesn’t tell us anything about the error! This is bad user interface design in any case and could seriously affect a user’s first impression of TurboDB.
After clicking on the “Advanced Options” button and un-ticking the “Generate Insert, Update and Delete Statements” checkbox, I was able to finish the wizard properly.
Fig 4. The option to avoid entering SQL Statements, hidden in the “Advanced Options”
Ideally, the wizard should provide this screen before the option of entering any commands and then only display the command entry screen if the checkbox is still ticked. This isn’t a major programming change to make but is one I feel dataweb should make quickly in order to avoid alienating new users and make the wizard a lot smoother.
TurboDB’s documentation is excellent and, bar the odd grammatical error, contains everything that both beginners and programmers need to know to start using the component in their own projects. This is strengthened by the fact that it is automatically integrated into Visual Studio’s own help system and is viewable either online as either HTML or a PDF.
The integrated documentation is, however, devoid of examples. The Microsoft Visual Studio documentation includes an example link for the majority of their classes in the help page for it. This is a convention that the TurboDB should adopt for both the sake of consistency and for providing a quicker way for people to see how to use the TurboDB classes.
It would also be a nice feature to add a section in the help explaining the DataAdapter classes, their relationships to each other and the correlation to the relevant ADO.net classes (possibly in the form of a flow diagram). Although the TurboDB class naming convention makes this pretty clear in most cases, it does assume that the user has some prior knowledge of ADO.net and its’ classes. A brief overview (with examples) of ADO.net and its’ TurboDB equivalents would ease the path to database development.
The TurboDB SQL implementation is very well documented and is possibly one of the best outside of Microsoft’s I have ever seen. Using this SQL variant is very easy due to a combination of excellent statement documentation. Within minutes of experimenting with the TurboDB Viewer it became apparent that this area has seen some considerable effort put in and it shows. Conceivably, the door is left open for future SQL Server migration.
Actually using TurboDB.net in a new project (after the initial wizard problems) was easy, but I ended up adding the dll reference to my project via the “Solution Explorer” instead:
Fig 5. Manually adding a reference to the namespace
This way, I avoided using the wizard and did not have to actually add anything to my form in order to use the component. This is just the way I prefer to add namespaces as it reduces clutter on the form when designing them.
As a test, I created a database in a directory structure - deliberately knowing that its’ path did not exist - in order to get TurboDB to throw an exception. This was the resulting error:
Fig 6. An example of a generic exception
This error is similar to the one shown by the TurboDB DataAdapter Configuration Wizard (described earlier) in that it is not very useful and does not actually tell you anything useful. In this example, the database could not be created because the directory structure was not in place. By using the File object and checking for the existence of the structure before trying to create the database, it was easy enough to prevent this error – but what happens if the database is being created on removable media and it is out of space? This error would occur but still does not tell us why the database wasn’t created. In turn, the program trying to create the database cannot display a decent error message to the user. Although it is the job of the programmer using the dataweb namespace to handle its’ exceptions, TurboDB could be more file system-intelligent and throw more meaningful exceptions to make the job easier.
Apart from the occasionally too generic exception throwing, TurboDB was easy enough to code with after I had shaken off some of my ADO.net rust. The component was responsive to requests, but I would liked to have seen some example code where huge demands are being placed on the database and some sort of “Please Wait” message is displayed while the transaction is being processed (or in a queue to be processed).
TurboDB exposes its’ Borland heritage in some of its’ locking strategies and file extensions, which is welcome as having used Paradox heavily for a couple of years there is a real trust and sense of reliability automatically associated with this component. Coupled with the excellent SQL implementation, I would easily choose this product over implementations such as VistaDB, but this heritage is also a weakness.
There are a total of 11 file extensions that TurboDB uses for one purpose or another - some of which are very generic (such as .dat). This is a real irritation as I have other programs that use these associations and the TurboDB tools hijacked them. Although easy resolved, this got me thinking about the ramifications of product deployment. This could cause problems on other people’s systems as they maybe well delete some of these files on a regular basis and could accidentally break the application being deployed.
TurboDB does allow the distribution of a database as a single flat file using the extension “tdbd”, which resolves this issue to a larger extent, as it is less likely a user would be using this on their system. However, a nice feature would be to allow the programmer to change this file extension prior to compilation, allowing it to be safely associated with the target application. Although this is no guarantee that the end user won’t be using the association already, it would allow for a greater degree of customisation to occur.
Apart from its’ sometimes too-generic exception handling, the only other real gripe I have with TurboDB again stems from its’ Borland roots. When a database is created/used, the component creates a folder called “VDP” at the root of the currently used drive. I have not been able to ascertain what the purpose of this folder is, whether it is for temporary files or for future product use, but it is nevertheless irritating. If TurboDB must use a temporary folder then the programmer should be able to determine what the path to this folder should be (that way they could use the current user’s windows settings, for example). If this folder is being used for indexing, or any another temporary use, then it presents a major security risk. The reason for this is that the folder resides in an easily accessible place without any file access control (at operating system level) and another user could manipulate its’ contents or even inject malicious code.
I have not, as yet, been able to use TurboDB in a networked environment and so am not able to comment on any issues encountered with its’ use either in terms of speed, security, or data integrity. This is because I do not have access to a LAN that can be used for this purpose (although I plan to be in a position to test this soon). Conceivably, however, TurboDB could be used to create a database server that can queue requests and implements more stringent security over network connections when used in a larger environment.
I have also not been able to test the component on the .net Compact Framework as I do not have access to a PDA and have had some trouble reliably using the various emulators that are available.
In Summary, TurboDB is a powerful tool that is easy to use and has strong product documentation that lowers the learning curve and speeds up database development. This component does, as all good software should, enables the user to concentrate more on what they are trying to achieve instead of re-inventing the wheel.
TurboDB has some rough edges, such as its’ configuration wizard, generic exception messages and fixed file extensions, but these are minor issues that can easily be ironed out in a subsequent release of the component. The only real concern I have is about the security implications of the VDP folder and I think that if the folder is absolutely necessary, then dataweb should allow the programmer to change its’ path as a matter of some urgency.
Having previously tested other .net database components, I can safely say that this has been the best component I have used so far simply due to its’ sheer power and ease of use. I look forward to developing software with this component in the near future and have no problems recommending this software.