what is c-isam?
Posted in 2000
A poster who inherited a C-ISAM application on Solaris 2.6 asked what C-ISAM actually is, since there was no visible database engine. Replies explained it's an indexed B-tree flat-file library (likely an Informix SE database), with access via C-ISAM calls or sqlexec/sqlexecd rather than a running engine -- cheap and admin-free, but corruption-prone. Slow queries on a million-row file were attributed to sequential scans; suggested fixes were adding suitable indexes and reworking the code to use them. A later poster's question about extracting data without disturbing environment/permissions got no answer.
Auto-generated by DrWatson from the posts below — may be imperfect; read the full thread.
Topics: Platform-Specific Issues
I have inherited a c-isam application running on solaris 2.6. I am curious exactly what c-isam is. From what I can tell it has no database engine running. It appears to be just flat files sitting there. Sent via Deja.com http://www.deja.com/ Before you buy.
In article <88u13k$rpc$1@nnrp1.deja.com>, bjonesxx@my-deja.com wrote: > I have inherited a c-isam application running on solaris 2.6. I am > curious exactly what c-isam is. From what I can tell it has no > database engine running. It appears to be just flat files sitting > there. C-ISAM is exactly that. It's an old standard for a database that uses flat files for data access. You are most likely running a Standard Engine (SE) database. This means that there is no engine to run. All data access is via C-ISAM programs, or possibly through an interface called sqlexecd. When someone starts an ESQL, 4GL, or SQL program (or a few others) then they will connect to the sqlexecd daemon and spawn an sqlexec process. C-ISAM, like I said, is an old standard and is prone to data corruption. You have to be very careful when writing code because it's very easy to corrupt the database by inserting garbage into the database. On the other hand, it's very cheap, and very easy to administer, since there isn't really much to do. No shared memory, no LRUs, no cleaners, etc. -- # unrm / ksh: unrm: not found # man cpio Sent via Deja.com http://www.deja.com/ Before you buy.
bjonesxx@my-deja.com wrote: > I have inherited a c-isam application running on solaris 2.6. I am > curious exactly what c-isam is. From what I can tell it has no > database engine running. It appears to be just flat files sitting > there. > > Sent via Deja.com http://www.deja.com/ > Before you buy. The files are kept in a (Binary Tree) fashion to speed up search. It is not by itself a DBMS system, but most SQL based RDMS use the C-ISAM structure. -- Compliments of QueriX -------------------------------------------------------------------------------------------------- QueriX 4GL Compilers are Informix 4GL Compatible, and Connection to other RDBMS such as Oracle. Hydra 4GL Compiler (Compatible with I4GL) Compile once, run everywhere Phoenix Windows GUI. (Front End to 4GL) Chimera Java GUI The only GUI you will ever need... (Front End to 4GL) Arachne Web Technology (Front End to 4GL on the Web) For more details visit: http://www.querix.com/ ---------------------------------------------------------------------------------------------------
Explains why some of our queries seem to take forever especially on the one file that supposedly has a million records in it. In article <88u30o$t36$1@nnrp1.deja.com>, mars1972@my-deja.com wrote: > In article <88u13k$rpc$1@nnrp1.deja.com>, > bjonesxx@my-deja.com wrote: > > I have inherited a c-isam application running on solaris 2.6. I am > > curious exactly what c-isam is. From what I can tell it has no > > database engine running. It appears to be just flat files sitting > > there. > > C-ISAM is exactly that. It's an old standard for a database that uses > flat files for data access. You are most likely running a Standard > Engine (SE) database. This means that there is no engine to run. All > data access is via C-ISAM programs, or possibly through an interface > called sqlexecd. When someone starts an ESQL, 4GL, or SQL program (or a > few others) then they will connect to the sqlexecd daemon and spawn an > sqlexec process. > > C-ISAM, like I said, is an old standard and is prone to data corruption. > You have to be very careful when writing code because it's very easy to > corrupt the database by inserting garbage into the database. > > On the other hand, it's very cheap, and very easy to administer, since > there isn't really much to do. No shared memory, no LRUs, no cleaners, > etc. > > -- > # unrm / > ksh: unrm: not found > # man cpio > > Sent via Deja.com http://www.deja.com/ > Before you buy. > Sent via Deja.com http://www.deja.com/ Before you buy.
In article <88ugfa$7d8$1@nnrp1.deja.com>, bjonesxx@my-deja.com wrote: > Explains why some of our queries seem to take forever especially on the > one file that supposedly has a million records in it. Is it indexed well? On the query in question, is is in a C-ISAM program, or in an SQL statement? I have an SE database right now, <sigh>, and it performs poorly when compared to an online engine, but it still isn't TOO bad. If you're doing a sequential scan on the table, there isn't much you can do. If it's SQL, you can speed it up by adding an index or two, possibly. If it's C-ISAM, you can speed it up by adding an index, and then rewriting the frigging code to use it. Sorry if I seem a little bitter. C-ISAM has been causing me no end of grief for a while now. :) -- # unrm / ksh: unrm: not found # man cpio Sent via Deja.com http://www.deja.com/ Before you buy.
It is reading the file sequentially. Each file only has 3 or 4 indexed fields. These fields are only used to access the individual records they denote. If you want to pull out anything else and you do not have anything specific to one of the 4 indexed fields to limit by it reads the whole file sequentially by the primary key field searching each record for the information you want. If you give it an input file of the primary keys you are interested in it goes wicked quick. If however you want something that you cannot limit by a indexed field it gets painful. As an example if you want a list of records by the date or date range the record was created or by who created the records it will evaluate each record sequentially. Not so much of a problem on 60k worth of records, but on the million plus record file its a pain in the ass. You grow old looking at it. In article <88uv8c$j6f$1@nnrp1.deja.com>, mars1972@my-deja.com wrote: > In article <88ugfa$7d8$1@nnrp1.deja.com>, > bjonesxx@my-deja.com wrote: > > Explains why some of our queries seem to take forever especially on > the > > one file that supposedly has a million records in it. > > Is it indexed well? On the query in question, is is in a C-ISAM > program, or in an SQL statement? I have an SE database right now, > <sigh>, and it performs poorly when compared to an online engine, but it > still isn't TOO bad. If you're doing a sequential scan on the table, > there isn't much you can do. If it's SQL, you can speed it up by adding > an index or two, possibly. If it's C-ISAM, you can speed it up by > adding an index, and then rewriting the frigging code to use it. > > Sorry if I seem a little bitter. C-ISAM has been causing me no end of > grief for a while now. :) > > -- > # unrm / > ksh: unrm: not found > # man cpio > > Sent via Deja.com http://www.deja.com/ > Before you buy. > Sent via Deja.com http://www.deja.com/ Before you buy.
Actually our tests show SE to be much faster. Check your indexes, and access. Remember you dont have a SQl engine to do your navigation - you have to think :-) <bjonesxx@my-deja.com> wrote in message news:88ugfa$7d8$1@nnrp1.deja.com... > Explains why some of our queries seem to take forever especially on the > one file that supposedly has a million records in it. >
This looks exactly like what I had a question about. I need to get the data
out of a C-ISAM database, and whoever programmed the risc box, left all
kinds of Informix fragments. I found the license for online as well as a
ton of old levels of data and executables dating back to 1993. I had been
trying to get to some old data that a client is still using. After trying
to connect through a network using the SDK, I found that the environment was
set up wrong. I tried to run dbaccess, but it tells me that the INFORMIXDIR
is invalid. I found a program to set up the environment, but it tells me
that all permissions, etc will be changed if I run the program. I don't
want to damage the accessibility of the files still in use. Is there any
way to export the data from the C-ISAM files, or is there a non-invasive way
to connect to the database(s). I am new to Informix, but have approximately
18 years of programming experience. Any insight you might provide would be
appreciated
TIA
Alex
<mars1972@my-deja.com> wrote in message news:88u30o$t36$1@nnrp1.deja.com...
> In article <88u13k$rpc$1@nnrp1.deja.com>,
> bjonesxx@my-deja.com wrote:
> > I have inherited a c-isam application running on solaris 2.6. I am
> > curious exactly what c-isam is. From what I can tell it has no
> > database engine running. It appears to be just flat files sitting
> > there.
>
> C-ISAM is exactly that. It's an old standard for a database that uses
> flat files for data access. You are most likely running a Standard
> Engine (SE) database. This means that there is no engine to run. All
> data access is via C-ISAM programs, or possibly through an interface
> called sqlexecd. When someone starts an ESQL, 4GL, or SQL program (or a
> few others) then they will connect to the sqlexecd daemon and spawn an
> sqlexec process.
>
> C-ISAM, like I said, is an old standard and is prone to data corruption.
> You have to be very careful when writing code because it's very easy to
> corrupt the database by inserting garbage into the database.
>
> On the other hand, it's very cheap, and very easy to administer, since
> there isn't really much to do. No shared memory, no LRUs, no cleaners,
> etc.
>
> --
> # unrm /
> ksh: unrm: not found
> # man cpio
>
>
> Sent via Deja.com http://www.deja.com/
> Before you buy.