AlexSchaft wrote:We are doing queries on dbf/cdx files without a dictionary. The only thing to notice is that any condition like "Where Name = 'Smith'" needs an index on Name without a condition
Alex
Alex;
True, you may execute SQL without a DD connection and still take advantage of indexes, but that's only true with compound indexes (cdx, adi). NTXs will not be used by the SQL engine since there is no way for the sql parser to be aware of those indexes. However, provided that you do have a dd created, then cdx, adi, and ntxs are used.
Otto;
The performance on the RDP server should be pretty much the same than on a client-server situation such as ADS, since the operation executes on the server and data does not have to flow to the workstation. Still ADS allows you to set certain tables as memory tables so that consultations to those tables are even faster. However speed is not the only consideration or benefit when considering an sql engine. Let me show in more detail some other benefits you get:
1. Triggers -You write triggers to perform validation or to perform additional tasks in response to a data operation. For example, a trigger can be used to generate a unique customer ID each time a new record is being inserted into the customer table. Likewise, a trigger can be used to write to a log table each time a change is made to a customer record. This type of operation is usually called an audit trail. I use a trigger to keep an audit trail on critical tables. I also use a trigger to create a new entry on a queue of messages to be send via email every time a pathology result is signed. The trigger is executed on the server and by the server and it will execute when the appropriate action takes place even if the table is being accessed from some other application other than your own.
2. Constraints and referential integrity. When managing many tables from many different apps it can become a nightmare to avoid orphan records on a parent child table relationship. Constraints are data dictionary based rules that Advantage can use to validate your data as it is being posted to a table. Referential integrity is a special type of constraint that ensures the data residing in two or more related tables remains consistent. You can have a RI rule to either restrict changing or to perform a cascade change of a foreign key when a primary key is changed or the record is deleted. Field constraints as well as record level constraints will ensure your data is consistent. I could enumerate a long list of real life applications for RI and constraints, but I'm going to leave it a that.
Notice that #1 and #2 are just some of ways to remove some of the business logic from the client side and moving it to the server side, never to be a concern to the developer ever again.
3. Hot-Backups. With ADS (and I suppose with any other sql engine as well), you can perform a backup of the data even while the tables are open and being used. What it does is that it creates a snap shot of the db at the moment the backup got started it.
4.Using Php, .net, perl, ADO, MDAC, OLE DB and other apps with your same data. Many times you need provide access to certain information from a browser such as ie. With Advantage you can have your main apps written as win32 with fw and still also have a php web portal where users can access certain information or all of it. Advantage also provides web services via oData standard where apps written for the iphone, android, or windows iphone can access the same dbfs that your win32 apps does. I write php web pages for my customer's customers. In this way they can access pathology results for tests they sent to the lab from any web browser anywhere.
5. Replication - With Advantage you can have many servers connected via an internet connection replicating the whole db or just some tables such that an entry in one server is visible on another server anywhere in the world. Replication can work nway, as a spoke wheel and in any dierection.
6. Stored procedures. You can have some procedures stored on the server for faster execution.
7. SQL scripting language.
8.Data security. You don't need to create a share in order to provide access to tables. The tables may reside on a directory that ins not visible to any user. A user can not copy a dbf to a pendrive or to a local drive. A user can not delete (by accident) a .dbf. The user simply does not know what the data looks like or where is it stored. Plus you can add data encryption as well as communication encryption and a lot more.
I'm going to stop here. What I mean by this is that an SQL engine opens up a whole new world we were not aware of. RDP will work great with ADS. AMOF - I use RDP for some users, but always with ADS running on the server.
Reinaldo.