Recital

Login Register

In this article Barry Mavin, CEO and Chief Software Architect for Recital provides details on how the Recital Database Server can be used to provide a solution for Universal Data Integration.

Overview

The Recital Database Server handles universal cross-platform data access to a wide range of data sources. The database server natively handles full remote SQL data access to Recital, Visual FoxPro, FoxPro, FoxBASE, Clipper and older dBase data. Using Bridges, it handles full remote SQL data access to C-ISAM and OpenVMS RMS. Using gateway connections, it handles full remote SQL data access to Oracle, MySQL, PostgreSQL, SQL Server, server-side ODBC, server-side JDBC and server-side OLE DB data sources. With its ability to access data using server-side ODBC, JDBC and OLE DB drivers from clients on all supported operating systems (Windows, Linux, Unix, OpenVMS), the Recital Database Server is an ideal Data Integration Solution for applications of all sizes and complexity.

Universal Data Integration Solutions

There are several ways in which data may be accessed by the Database Server.

Table 1:

Client Universal Data Access solutions for accessing local or remote data.


Client Solution
Recital Use remote gateway connections
Visual FoxPro Use the Universal ODBC Driver
Java (all platforms) Use the Universal JDBC Driver
.NET Framework Use the Universal .NET Data Provider
Microsoft Office Use the Universal ODBC Driver
Windows Mobile Use the Universal Compact Framework .NET Data Provider
PHP on Linux Use the Universal ODBC Driver for Linux
Mono on Linux Use the Universal .NET Data Provider
Others If the data source you want to access is not in the list above, then you can use a remote ODBC, JDBC or OLE DB gateway.
You can find examples of connection strings for most ODBC and OLE DB data sources by clicking here.

Table 2:

Windows Server Universal Data Access solutions accessible from any remote client running on Windows, Linux, Unix or OpenVMS:


Data Source Solution
Recital Native support (See table 1)
Visual FoxPro Native support (See table 1)
FoxPro Native support (See table 1)
FoxBASE Native support (See table 1)
Clipper Native support (See table 1)
dBase Native support (See table 1)
C-ISAM Use a bridge (See table 1)
Access Use a gateway connection
gateway="oledb:Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\somepath\mydb.mdb;User Id=admin;Password=;"
Exchange Use a gateway connection
gateway="oledb:Provider=ExOLEDB.DataSource;Data Source=http://servername/publicstore"
Excel Use a gateway connection
gateway="oledb:Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\MyExcel.xls;"
Oracle Use a gateway connection
gateway="oledb:Provider=msdaora;Data Source=TheOracleDB;User Id=xxxxx;Password=xxxxx;"
SQL Server Use a gateway connection
gateway="oledb:Provider=sqloledb;Data Source=Aron1;Initial Catalog=pubs;User Id=sa;Password=asdasd;"
MySQL Use a gateway connection
gateway="oledb:Provider=MySQLProv;Data Source=mydb;User Id=xxxxx;Password=xxxxx;"
IBM DB2 Use a gateway connection
gateway="oledb:Provider=DB2OLEDB;Network Transport Library=TCPIP;Network Address=XXX.XXX.XXX.XXX;Initial Catalog=MyCtlg;Package Collection=MyPkgCol;Default Schema=Schema;User ID=MyUser;Password=MyPW"
Sybase ASA Use a gateway connection
gateway="oledb:Provider=ASAProv;Data source=myASA"
Sybase ASE Use a gateway connection
gateway="oledb:Provider=Sybase.ASEOLEDBProvider;Srvr=myASEserver,5000;Catalog=myDBname;User Id=username;Password=password"
IBM Informix Use a gateway connection
gateway="oledb:Provider=Ifxoledbc.2;password=myPw;User ID=myUser;Data Source=dbName@serverName;Persist Security Info=true"
Ingres Use a gateway connection
gateway="odbc:dsn=data_source_name"
Firebird Use a gateway connection
gateway="odbc:dsn=data_source_name"
IBM AS400 iSeries Use a gateway connection
gateway="oledb:PROVIDER=IBMDA400; DATA SOURCE=MY_SYSTEM_NAME;USER ID=myUserName;PASSWORD=myPwd"
Interbase Use a gateway connection
gateway="oledb:provider=sibprovider;location=localhost:;data source=c:\databases\gdbs\mygdb.gdb;user id=xxxxx;password=xxxxx"
Others

If the data source you want to access is not in the list above, then you can use server-side ODBC, JDBC or OLE DB.
You can find examples of connection strings for most ODBC and OLE DB data sources by clicking here.
Full details on using server-side JDBC drivers can be found here.
Full details on using server-side ODBC drivers can be found here.
Full details on using server-side OLE DB drivers can be found here.


Table 3:

Linux and Unix Server Universal Data Access solutions accessible from any remote client running on Windows, Linux, Unix or OpenVMS:


Data Source Solution
Recital Native support (See table 1)
Visual FoxPro Native support (See table 1)
FoxPro Native support (See table 1)
FoxBASE Native support (See table 1)
Clipper Native support (See table 1)
dBase Native support (See table 1)
C-ISAM Use a bridge (See table 1)
Oracle Use a gateway connection
gateway="oracle:Connection_String"
MySQL Use a gateway connection
gateway="mysql:Connection_String"
IBM DB2 Use a gateway connection
gateway="db2:Connection_String"
PostgreSQL Use a gateway connection
gateway="postgres:Connection_String"
Others

If the data source you want to access is not in the list above, then you can use a server-side JDBC driver.
Full details on using server-side JDBC drivers can be found here.


Table 4:

OpenVMS Server Universal Data Access solutions accessible from any remote client running on Windows, Linux, Unix or OpenVMS:


Data Source Solution
Recital Native support (See table 1)
Visual FoxPro Native support (See table 1)
FoxPro Native support (See table 1)
FoxBASE Native support (See table 1)
Clipper Native support (See table 1)
dBase Native support (See table 1)
RMS Use a bridge (See table 1)
Others

If the data source you want to access is not in the list above, then you can use a server-side JDBC driver.

Supported Data Sources

Native Data Access

The Recital Database Server has native built-in support for the following data sources:

  • Recital
  • Visual FoxPro
  • FoxPro
  • FoxBASE
  • Clipper
  • dBase

You can setup tables to work with using the Database Administration Tool in Recital Enterprise Studio.

Bridges

Using Bridges, you can access the following data sources as if they were standard Recital/FoxPro tables:

  • CISAM
  • OpenVMS RMS

You can setup bridges using the Database Administration Tool in Recital Enterprise Studio.

Gateways/Connections

Using Gateways, you can transparently access the following local or remote data sources:

  • Recital
  • Oracle
  • ODBC (Server-side ODBC data sources)
  • JDBC (Server-side JDBC data sources)
  • OLEDB Use this to connect to SQL Server and other Windows OLE DB data sources)
  • MySQL
  • PostgreSQL

Remote Data Object functions

Recital 10 includes a complete and robust set of data source independent functions for accession MySQL, Oracle, DB2 and Postgres. This article explains how to use them.

Client Data Access drivers

Included with the Recital Database Server are three Client drivers. These Client drivers can access any data sources supported by the Recital Database Server. They are not restricted to accessing only Recital data. They can be used to access server-side ODBC, JDBC and OLE DB data sources also.

Recital Universal .NET Data Provider

Use this client driver when building .NET applications with Visual Studio .NET. A data provider in the .NET Framework serves as a bridge between an application and a data source. A data provider is used to retrieve data from a data source and to reconcile changes to that data back to the data source.

Key features of the Recital Universal .NET Data Provider:

  • Fully Internet enabled
    The Recital Universal .NET Data Provider works across the internet providing access to a wide range of data sources located on remote servers running Windows, Linux, Unix and OpenVMS.
  • SQL Server compatible
    The Recital Universal .NET Data Provider is plug compatible with the .NET Framework SQL Server Data Provider.
  • Cross-platform Data Integration
    Using the Recital Universal .NET Data Provider, you can connect to remote Windows, Linux, Unix or OpenVMS servers and access any data source supported by the Recital Database Server.
  • Managed code
    The Recital Universal .NET Data Adaptor written in C# is 100% .NET Framework managed code.
  • Runs on Windows Mobile
    The Recital Universal .NET Data Adaptor runs under the .NET Compact Framework on Windows Mobile.
Recital Universal JDBC Driver

The JDBC API is the industry standard for database-independent connectivity between the Java programming language and a wide range of databases. The JDBC API provides a call-level API for SQL-based database access. JDBC technology allows you to use the Java programming language to exploit "Write Once, Run Anywhere" capabilities for applications that require access to enterprise data.

Key features of the Recital Universal JDBC Driver:

  • Fully Internet enabled
    The Recital Universal JDBC driver works across the internet providing access to a wide range of data sources located on remote servers running Windows, Linux, Unix and OpenVMS.
  • JDBC 3.0 API
    The Recital Universal JDBC driver supports the JDBC 3.0 API.
  • Pure Java Type 3 Driver
    The Recital Universal JDBC driver is a 100% pure Java Type 3 driver.
  • Full Access to Metadata
    The JDBC API provides metadata access that enables the development of sophisticated applications that need to understand the underlying facilities and capabilities of a specific database connection.
  • Cross-platform Data Integration
    Using the Recital Universal JDBC driver, you can connect to remote Windows, Linux, Unix or OpenVMS servers and access any data source supported by the Recital Database Server.
  • No Installation
    A pure JDBC technology-based driver does not require special installation; it is automatically downloaded as part of the applet that makes the JDBC calls. The Recital Universal JDBC Driver is 100% java.
Recital Universal ODBC Driver

Connect to remote data from Microsoft Office or other applications that support ODBC data access. The Recital Universal ODBC Driver is also available for Linux and Unix.

Key features of the Recital Universal ODBC Driver:

  • Fully Internet enabled
    The Recital Universal ODBC driver works across the internet providing access to a wide range of data sources located on remote servers running Windows, Linux, Unix and OpenVMS.
  • Works with Crystal Reports
    The Recital Universal ODBC driver supports the SQL syntax generated by Crystal Reports.
  • Works with Microsoft Office
    The Recital Universal ODBC driver works with Microsoft Office products.
  • Works with PHP on Linux
    The Recital Universal ODBC driver is available for Linux and works with PHP.
Published in Blogs
Read more...

Recital is a proven and cost-effective database solution that will help reduce the cost of your database and application software infrastructure substantially. As an added benefit, Recital can run many legacy applications with little to no change as it understands FoxBASE, FoxPRO and Clipper languages as a subset of it's overall capability.
Published in Blogs
Read more...
The SET RELATION Recital Navigational Data Command can be used to link two (or more) tables based on the master index key of the child table.  With a relation active, as you move through the parent table, the record pointer also moves in the child table, automatically selecting the first related record or moving to the end of file if no related record exists.    

open database southwind
// open child table
use order_details order orderid in 0
// open parent table
use orders order orderid in 0
set relation to orderid into order_details
do while not eof()
? orders.orderid, order_details.productid
skip
enddo

The code above will display the productid from the first related record, but you will often want to display information from all the related records in the child or detail table as in an SQL Left Outer Join.

open database southwind
select orders.orderid, order_details.productid;
from orders left outer join order_details;
on orders.orderid = order_details.orderid

In this case, we can use a second nested DO WHILE loop, for example:

open database southwind
use order_details order orderid in 0
use orders order orderid in 0
set relation to orderid into order_details
do while not eof()
// Display first or 0 child record
? orders.orderid, order_details.productid
// Display any additional child records
do while not eof(order_details)
? orders.orderid, order_details.productid
skip in order_details
enddo
skip
enddo

Or we can use the SET SKIP command.  The SET SKIP command can be used with DISPLAY, LIST and REPORT and automatically skips through all the related records in the child table.

open database southwind
use order_details order orderid in 0
use orders order orderid in 0
set relation to orderid into order_details
set skip on
set skip to order_details
list orders.orderid, order_details.productid

LIST and DISPLAY offer a number of keyword options to allow you to configure the display output.  REPORT offers full column based report design.
Published in Blogs
Read more...

STRERROR()

Syntax

STRERROR( [ <expN> ] )

Description

The STRERROR() function returns a string describing the last operating system error message. If the optional error number is specified then the related operating system error message will be returned.

Example

mqdes=mqcreate("/myqueue", 2)
 if (mqdes < 0)
     messagebox(strerror()+",errno="+alltrim(str(error())))
    return
 endif
 rc = mqsend(mqdes, "Test message")
 if (rc < 0)
     messagebox(strerror()+",errno="+alltrim(str(error())))
    return
 endif
 mqclose(mqdes)

Published in Blogs
Read more...
The Recital Universal ODBC Driver is a 32 bit implementation, so is not listed in the 64 bit ODBC Data Source Administrator, which is the default administrator accessed from Control Panel | Administration Tools.

So, to create and configure Recital ODBC datasources, you need to use the Window 32 bit ODBC Data Source Administrator or Recital's own  Recital Universal ODBC Manager (32-bit).

The Window 32 bit ODBC Data Source Administrator is %windir%\SysWOW64\odbcad32.exe.
The Recital Universal ODBC Manager (32-bit) can be accessed from the Control Panel (icon view).
Published in Blogs
Read more...
Recital 10 enhanced Recital by enabling it to be used in bash shell scripts and in shell commands which use pipes and/or redirect stdin and stdout. If stdin is not redirected then recital will startup and operate as normal in a terminal window. Additionally you can use heredoc to denote a block of recital commands that should be executed. Note that when used in this manner, no UI commands can be executed and no user interaction is allowed.  
# recital < mrprog.prg 
# recital < myprog.prg > myoutput.txt
# recital > myoutput.txt <<END
use customers
list structure
END
# echo "select * from sales!customers where overdue" | recital | wc -l
Individual commands can be executed in shell scripts.
# recital -c "create database sales"
# recital -c "create table sales!invoices (id int, name char(25), due date)"
Expressions can be evaluated and used in shell scripts.
# VER=`recital -e "version(1)"`
You can view what command line options are available by typing:
# recital --help
Published in Blogs
Read more...

In this article Barry Mavin, CEO and Chief Software Architect for Recital, details how to use the Recital Database Server with Visual FoxPro. 

 

Published in Blogs
Read more...

When you start the loadbalancer.org appliance you will see the following:

Default login:
Username: root
Password: loadbalancer

Access to webclient from an external client is:
http://192.168.1.129:9080
http://192.168.1.129:9443

You can access the web administrator using the IP and ports described onscreen.

For the sri lanka porject we are looking for performance and the network diagram indicates we are happy to have the cluster on the same subnet as the rest of the network.

Direct routing is the fasted performance possible, it has the advantage over NAT that the Loadbalancer does not become a bottleneck for incoming and outgoing packets. With DR the loadbalancer simply examines incoming packets and the servers to route the packets directly back to the requesting user.

The web interfaceis the only way to fully configure the loadbalancer vm. The console tool lbwizard will get it initiallised and any further configurations can then be done via the webinterface.

Using lbwizard for the Sri lanka configuration follow these steps.

On the first Loadbalancer:

//Start

Is this unit part for a HA Pair?
YES

Have you already setup the Slave?
NO

Is this a one-armed configuration?
YES

Enter the IP Address for the interface eth0?
Enter IP address you wish to be assigned to the SLAVE loadbalancer.

Enter the netmask for interface eth0?
Enter netmask for the subnet.

Enter the Floating IP adrress?
Enter the IP address that will be IP assosiacted the the HA-pair of loadbalancers.

//Finish

On the 2nd loadbalancer VM, run the lbwizard.

//Start

Is this unit part of an HA-Pair?
YES

Have you already set up the Slave?
YES

What is the slave units UP address?
Enter the IP which you entered when configuring the other loadbalancer VM.

Is this a one-armed configuration?
YES

Enter the IP Address for the interface eth0?
Enter the IP that will be assigned to the MASTER loadbalancer

Enter the netmask for interface eth0?
Enter the subnet netmask.

Enter the Floating IP address?
Enter the IP address that will be IP assosiacted the the HA-pair of loadbalancers.

Enter the address of the default gateway?
Enter the deafult gateway for the subnet.

Enter the IP of the nameserver?
Enter the dns server.

Enter the port for the first Virtual server?
Enter 22 for ssh

Enter the IP address of the first real server?
Enter the real IP of the first appserver

//Finish

Now this is complete we need to go to the web admin interface to configure the 2nd Real Server. As the lbwizard program will only allow you to configure 1 real server.

Now login to the web admin using the default password:

username: loadbalancer
password: loadbalancer

Note: Connect to the IP you have now set for your master loadbalancer

Goto the edit configuration tab

Now click add a real server:

Enter a label
IP address of the server plus the port of the service i.e. 192.168.1.125:22


Edit Configuration -> Virtual Servers

persistancte -> NO

Scheduler-> LC
LC - Least-Connection: assign more jobs to real servers with
fewer active jobs.

Service to check -> custom1

Check port -> 22

Forwarding Method -> DR

Feedback Method -> Agent

Arp Problem when using DR

Every real server must be configured to respond to the VIP address as well as the RIP
address.

You can use iptables (netfilter) on the real server to re-direct incoming packets destined for the virtual
server IP address.

This is a simple case of adding the following command to your start up script (rc.local):

//replace 10.0.0.21 with the Virtual Server IP
iptables -t nat -A PREROUTING -p tcp -d 10.0.0.21 -j REDIRECT

chkconfig iptables on

Published in Blogs
Read more...
A number of people have complained about data loss after a system crash when using Ext4.  A bug report was logged. According to multiple posts by a developer of Ext4, Theodore Tso, this is due to differences in approach to security and performance issues between the two file systems.

Ext3 commits writes to disk within approximately 5 seconds - Ext4 can take from 40-150 seconds.  In addition, if a system is using Ext3 and crashes before the commit takes place you will still have the previous contents of a file where under Ext4 the file will be empty.  Theodore Tso feels that this is a failure at the application level and that the file system is behaving as designed and as specified by the POSIX spec (which apparently does not specify what is supposed to happen when a system is not shut down cleanly).  His solution to the issue is to suggest proper use of fsync() and lists various scenarios/examples in post 54 of the bug report (linked above).  In addition he wrote a patch that recognize the rename() situation mentioned in his post 54 yet retains the normal Ext4 behaviors and performance in the majority of cases.  Also a more "proper" solution has been provided which allows the behavior of Ext3 to be retained under Ext4 by mounting it with alloc_on_commit.

A somewhat related topic is the use of on-board caching by hard drives.  This behavior can be modified on most drives by using hdparm.
Published in Blogs
Read more...

 

Occasionally as a Linux administrator you will be in the situation where working on a remote server and you are left with no option but to force a reboot the system. This may be for a number of reasons, but where I have found it most frequent is when working on Linux clusters in a remote location.

When the "reboot" or "shutdown" commands are executed daemons are gracefully stopped and storage volumes unmounted.
This is usually accomplished via scripts in the /etc/init.d directory which will wait for each daemon to shut down gracefully before proceeding on to the next one. This is where a situation can develop where your Linux server fails to shutdown cleanly leaving you unable to administer the system until it is inspected locally. This is obviously not ideal so the answer is to force a reboot on the system where you can guarantee that the system will power cycle and come back up. The method will not unmount file systems nor sync delayed disk writes, so use this at your own discretion.

To force the kernel to reboot the system we will be making use of the magic SysRq key.

The magic_SysRq_key provides a means to send low level instructions directly to the kernel via the /proc virtual file system.


To enable the use of  the magic SysRq option type the following at the command prompt:

 

    echo 1 > /proc/sys/kernel/sysrq

 

Then to reboot the machine simply enter the following:

 

    echo b > /proc/sysrq-trigger


Voilà! Your system will instantly reboot.
{linkr:related;keywords:linux;limit:5;title:Related Articles}
{linkr:bookmarks;size:small;text:nn;separator:%20;badges:2,1,18,13,19,15,17,12}

Published in Blogs
Read more...

Copyright © 2025 Recital Software Inc.

Login

Register

User Registration
or Cancel