versión actual
isis
openisis
manual práctico
acerca de
enlaces
in english
bienvenido a OpenIsis.org
DEMOS:
normal
o trate
de buscar caracteres unicode
(
índice unicode)
Disponible para "descarga":
Código fuente
Binarios
- win32 (0.8.5) ( mingw32 cross-build) debería trabajar en todas las plataformas win32 desde win5b.
Nota: Si usted quiere utilizar java va a necesitar el JDK1.3.x
La versíón actual de windows aún no es "thread-safe", por lo tanto utilizarla con una máquina
servlet de Java bajo ambiente windows requiere algún cuidado.
- solaris (0.8.4) ( compilado en solaris 5.8 )
Nota: el JDK que viene con solaris 5.7 / 5.8 ( java 1.2 ) debería funcionar.
Características:
- Julio 2002
trabajo de artículo ¿Qué de ISIS hace a ISIS?
- 0.8.6 Junio 2002
Esta versión implementa formateo básico. Mientras que la mayoría
de características de WinISIS o CISIS, especialmente las características
gráficas, aún no están implementadas (de todas maneras no son típicamente
utilizadas en ambiente web), hay apoyo para subcampos repetidos como se declara
en MARC para varios campos.
Vea notas de formateo para más detalles.
La extensión Perl ahora implementa formateo (véase test.pl),
y versiones mejoradas para los otros lenguajes seguirán pronto.
- PHP Junio 2002
Braulio José Solano Rojas
de Costa Rica creó una extensión PHP, que puede ser vista en acción en
galileo.
Disponible como descarga
o desde sourceforge modulo php-openisis.
Además, el Institut Teknologi Bandung de Indonesia
cambió su índice web a una versión basada en PHP/OpenIsis.
- 0.8.5.2 Marzo 2002
Extensión PERL bastante mejorada. Vea el archivo OpenIsis.pm incluido en el código fuente.
- 0.8.5.1 March 2002
Java ahora implementa apoyo para modos de formateo básico como MHL,
varios modos HTML-seguros (como escapar todos los caracteres no ASCII),
un método Vn-field-selector-style
y varias utilerías interesantes.
La indentación no está propiamente manejada, dado que no hay una
solución fácil y común en HTML.
Se harán herramientas para una serie de estrategias estándares luego...
- 0.8.5 Marzo 2002
Finalmente una implementación del lenguaje de consulta
(demostración).
Todos los operadores están ahí (incluyendo /(etiqueta) excepto /(t1,t2...)).
Se hace lo posible para limitar el costo potencial de consultas extremadamente
estúpidas como "$"^"$", de tal manera que resultados no históricos (#n)
o resultados intermedios (para precedencia) son guardados.
Las consultas son procesadas estrictamente de izquierda a derecha en un almacenamiento de 1000
coincidencias.
- 0.8.4 Enero 2002
Reescritura casi completa del código de búsqueda para apoyar condiciones NEAR.
Arreglado los problemas de alineamiento en IFP, ahora trabaja con la bd unesb
(-format aligned) y la bd cds tal como se distribuyen con winisis.
La bd cds que tenímos en versiones previas (de una distribución vieja de CDS)
tiene un formato mezclado: archivos hoja alineados, otros desalineados.
Aunque el apoyo a un formato mixto se logra fácilmente con openisis,
no será incluido a menos que alguien lo necesite (envíen un correo).
El demo JSP ahora apoya la
búsqueda en la bd unesb
con más de 70.000 filas (noten que el
servidor anfitrión es un Celeron de 500MHZ).
La búsqueda está limitada a 1000 "postings", usualmente resultando
en un número de filas de alguna manera menor (donde las filas tienen múltiples
"postings" coincidentes).
El menor número de fila (MFN) que fue cortado es grabado,
y es posible (aún no en el JSP) repetir la búsqueda empezando desde esa fila.
- 0.8.3 Octubre 2001
Primer lanzamiento realmente utilizable, dado que tenemos búsqueda verdadera por
índice (como prefijo o palabra completa).
La búsqueda da una lista (arreglo) de MFNs ordenados;
la aritmética lógica (y, o, negación) en estas listas es directa.
La demostración JSP muestra
como una consulta es refinada (más angosta) iterativamente haciendo un
"y" lógico con otra consulta.
Gracias a Verónica Lencinas y colegas,
tenemos una primer versión en español de este documento originalmente
en inglés.
- Septiembre 2001
No hay un lanzamiento nuevo aún, pero hay mantenimiento y pruebas.
Nuevo mecanismo de bitacoreo de estructuras.
El código fuente está disponible via CVS en
sourceforge.
La versión para Windows openisis.exe corre.
- 0.8.2 Agosto 2001
openisis se encuentra ahora bajo la LGPL, no queda código legado. La
conversión de estructuras de archivo se maneja ahora mediante una descripción
abstracto y dinámica más que estructuras-C. De esta manera podemos
dar soporte a diferentes configuraciones de archivos, bases de datos más
grandes, grandes procesadores endian y más aún. Disponibilidad
de búsqueda simple en texto libre mediante C-Lib y Java. Obteniendo
unos 30.000 registros/seg en una lectura aleatoria en una lenta Notebook de
300 MHz Notebook parece ser de utilidad en la práctica. Una demo jsp
demo está en desarrollo ;).
- 0.8.1 Junio 2001
Versión con interfaz nativa Java. Package Java org.openisis incluye Db, Rec,
Field, Test. NativeDb implementada en libopenjsis.so. Extracción de subcampos
y traducción de entidades html en java puro.
- 0.8.0 Mayo 2001
Extracción de subcampos y traducción de entidades html. Acceso general desde
Perl también mediante un xsub. El registro aparece como hash, manuable pero
sin campos repetibles. Makefile.PL, test.pl etc.
- 0.7.9 Mayo 2001
Primer versión: librería-C estática (C-Library) libopenisis.a para leer registros
a partir de la clave de fila (Mfn). Ejecutable "openisis" hace test. Logeado,
lectura de argumentos, Makefile, demo etc.
Isis es un sistema de bases de datos sencillo pero potente, que cuenta con una
importante base de usuarios desde los 80. Debido a su buena adaptabilidad a datos
bibliográficos, se usa generalmente en bibliotecas y por su bajo costo, especialmente
en aquellas con escaso presupuesto.
Una base de datos isis consiste en filas de estructura no específica, identificada
con un número único, la clave de fila (mfn). Cada fila contiene una lista de
campos, con un número de campo (tag) y un valor de cadena. Dentro de una fila
puede haber cero, uno o más campos con un número de campo determinado. El valor
del campo generalmente es la representación textual de datos en una u otra codificación
de caracteres (generalmente una de las páginas de código IBM/DOS), pero también
puede contener bytes arbitrarios.
subcampos
Hay una convención que consiste en codificar campos múltiples dentro de un solo
campo, separándolos con un ' ^ ' seguido por un caracter identificador del subcampo.
De esta manera el valor del campo ' ^afoo^bbar^bbaz' representa un campo con un
subcampo 'a' con valor 'foo' y dos subcampos 'b': 'bar' y 'baz' respectivamente.
formateo
Hay un lenguaje de formateo con variables de texto, campos y subcampos, estructuras
de control if-else
(según existencia de campos) y búcles for
(sobre repetición
de campos) (dicho de manera sencilla).
indización
Se construye un índice, convirtiendo una fila en una lista de palabras (aplicando
formatos opcionales) y ubicándolas según su posición de su ocurrencia en la
fila, en un árbol B (que se extiendo sobre seis archivos). Se puebe buscar una
palabra o un prefijo indicando - o no - la posición (campo). Debido a que todos
los campos pueden ser combinados en un índice, no es necesario (pero posible)
generar múltiples índices.
consultas
Un lenguaje de consultas permite la combinación de palabras usando los operadores
"y" (and), "o" (or) y "no" (not).
uso
Mientras que isis carece de la mayoría de las características de un sistema
de gestión de bases de datos relacionales (RDBMS), como relaciones complejas
entre diferentes entidades, su flexibilidad resulta práctico para catálogos
y directorios con registros altamente variables y un solo nivel de subestructura,
los que actualmente se vierten en documentos XML más que en filas. El mecanismo
flexible de indización combina lo mejor de búsqueda en texto completo con recuperación
estructurada.
La madre de todo el software isis es una versión DOS de "MicroISIS", un sistema
integrado con interfaz de texto. Hay una versión BSD de "CDS/ISIS" que también
corre bajo linux hasta kernels 2.2.x (los kernels 2.4 actuales no permiten el
módulo iBCS para binarios COFF). Además hay varias versiones de "WinISIS" (sólo
para M$-Windows).
Existe una librería compartida de funciones de acceso a bases de datos isis
"isis.dll" que, a pesar de su nombre, también se distribuye en una versión para
linux "isilux". Sin embargo se necesitan algunas librerías muy especiales para
usarla. Un conjunto de utilitarios de línea de comando ("cisis") realizan tareas
tales como la importación de archivos de intercambio de bases de datos bibliográficas
- ISO2709, construcción de archivos invertido, etc. Lo más cercano a un servidor
de bases de datos isis es "wwwisis", que corre como un CGI o bien desde la línea
de comandos y realiza la mayoría de tareas de isis (versiones win y lin). Sin
embargo, corre sólo por encargo, no como un servidor propiamente dicho y no
puede proveer control de procesos simultáneos.
Este software "oficial" de isis, es mantenido por Unesco y/o Bireme, y ha sido complementado por
aportes independientes, algunos de dominio público. Javaisis es una interfaz gráfica
basada en AWT con su correspondiente servidor, que usa wwwisis. Es un software
bueno y abierto que se concentra sobre un frontend multiplataforma, pero sin
acceso directo a la base de datos. Robert
Janusz escribió una librería C de cero (iAPI), que fué el punto de partida
para el software openisis.
¿Y entonces, porqué estamos haciendo openisis? Porque Isis no es un software de
fuente abierta, ni siquiera es gratuito, y esto conduce a una serie de problemas.
- Disponibilidad (en teoría)
Existen versiones para algunos sistemas operativos, determinadas versiones
de librerías e idiomas. Para otros entornos, no hay versiones disponibles,
y nada se puede hacer al respecto.
- Disponibilidad (en la práctica)
Puede bajar la mayoría del software pero está protegido, en parte, con contraseñas
que se deben solicitarse a algún distribuidor nacional. Existen algunos aranceles
y/o la condición de exponer las razones de la necesidad del software, hecho
lo cual hay un tiempo de espera hasta conseguirlo, por ejemplo en Alemania
más de un mes.
- Disponibilidad (en términos legales)
Algunas partes del software incluyen información sobre las licencias bajo
las cuales se distribuyen, otras no. Los términos de las mismas difieren según
el país. No es fácil establecer exactamente cuál puede ser el uso permitido.
- Disponibilidad (de documentación)
Alguna documentación está disponible en inglés, otra solamente en portugués,
castellano o italiano. Sólo una pequeña parte se puede "bajar", la mayoría
consta en papel.
- Control de fallas (bugs)
No hay forma de corregir una falla y tampoco se puede hay mucho que se pueda
hacer para que alguien la corrija.
- Extensión
La única forma de escribir una asociación (Binding) para perl o Java sería
mediante isis.dll. Hay problemas respecto la necesidad de librerías adicionales
(especialmente en C++), no hay información respecto a seguridad de procesos,
compatibilidad con unicode, etc. En consecuencia es practicamente imposible
escribir una aplicación web para bases de datos isis con las tecnologías corrientes.
- Mejoramiento
Con la práctica, muchos usuarios desarrollan ideas útiles para el mejoramiento
del software. Su experiencia se pierde cuando no son capaces de transferirla
a un software mejorado.
- Habilitación
Mientras que software de fuente abierta permite a personas de todo el mundo
a adaptar sus herramientas a sus necesidades, el software cerrado los mantiene
dependientes.
Para encarar estos problemas, percibimos la necesidad de una implementación
abierta de isis. Sin duda lo mejor sería de contar con el código existente para
isis bajo una u otra forma de licencia abierta (GPL, LGPL, artística o similar,
según sea apropiado).
Por otro lado, una implementación secundaria e independiente, tiene sus ventajas.
Permitiría un enfoque diferente, desarrollando determinadas potencialidades,
mientras que en otras situaciones el abordaje sería distinto. Por ejemplo, openisis
tendrá algún soporte para procesos múltiples y unicode, pagando un cierto costo.
Realizar una recodificación por un desarrollador con un bagaje de conocimientos
diferentes, puede aportar nuevas ideas que, luego de haber sido probadas, pueden
ayudar a mejorar el estándar.
OpenIsis como software para acceder bases de datos isis está y estará disponible
gratuitamente para cualquiera, con código fuente completo, sin aranceles ni
restricciones.
En términos generales, no está planeado reimplementar cada línea de código
escrita para isis. Para ser útil, OpenIsis debe mantener la compatibilidad con
el formato de los archivos de la base de datos. De esta manera, se puede usar
winisis o cualquier otro script existente para crear y mantener la base de datos,
empleando la interfaz perl de OpenIsis para un motor de consultas potentes y
la interfaz nativa de Java para aplicaciones web basada en servlets.
OpenIsis privilegiará la provisión de herramientas más que aplicaciones. Por
ejemplo, no intentará recrear la funcionalidad de winisis hasta que el conjunto
de herramientas GUI haya sido completado. Para alcanzar este objetivo, OpenIsis
provee acceso a los lenguajes de programación más importantes: Java para web (HECHO),
perl para scripts (HECHO) y, algún día, Tcl/Tk para interfaces gráficas independientes
de la plataforma (parcialmente hecho). Todos los demás (lenguajes) pueden por cierto, utilizar enlaces
a la librería.
Proximos pasos:
- hacer un diseño de archivos configurable para permitir bases de datos
más grandes y de implementación exclusiva en java (HECHO)
- implementar la búsqueda (búsqueda en texto libre HECHO)
- implementar búsqueda en base a archivo invertido
- mayor rendimiento: probar std (HECHO, rinde mal) y homegrown io buffering, además de
acelerar bucles en la función de conversión de ldb's
- empezar a trabajar en una implementación pura de java "thread-save"
(voluntarios ?)
- preparar lanzamientos binarios para windows (.exe y .dll para java) (HECHO)
- implementar el lenguaje de consulta (mayormente HECHO)
- implementar formateo (va en camino)
- implementar la escritura (mayormente planeada)
- ... los voluntarios son bienvenidos !
Se comienza bajando el software. Hasta ahora es todo fuente, sin binarios.
Crearemos distribuciones binarias cuando se logre mayor estabilidad. Se desempaca
todo en algún directorio cualquiera. Para las pruebas, se necesitará también
alguna base de datos isis que deberá ser ubicada como archivo db/cds/cds.*.
Pruebe ésta. Controlar que
los nombres de archivo estén en minúsculas.
Si se está en Windows, deberá contar con un entorno cygwin con herramientas
como gmake y gcc o portar el código y escribir el archivo make para su make
y compilador. Erik armará una versión Windows empleando Linux
gcc como compilador cruzado. Si se está en Linux, está todo bien. Con un MAC
... ni idea.
Tipee "make" y disfrute de los mensajes del compilador. Tipee "make demo" y
disfrute de su primer registro openisis. (Ya instaló una base db/cds/cds.*,
no es así? Tiene 42 registros?) Tipee "make run" y observe el contenido de su
base de datos. Ttipee "make test", no debería haber diferencia entre
testout.txt y testres.txt como se entregan (usando esta base de datos cds).
Tipee "make time" para medir el rendimiento, pruebas subsiguientes generalmente
son mucho más rápidas. Mi 800 MHz P3 logra en lectura aleatoria
más de 80.000 registros por segundo, una vez que los archivos estén
en el cache del sistema.
$ make time
time ./openisis -v 3 -perf 100000 -db db/cds/cds
0.63user 0.61system 0:06.20elapsed 19%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (95major+11607minor)pagefaults 0swaps
$ make time
time ./openisis -v 3 -perf 100000 -db db/cds/cds
0.71user 0.53system 0:01.23elapsed 100%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (95major+11607minor)pagefaults 0swaps
Tipee "make perl" para armar el material para perl. Se sobreentiende que previamente
deberá haberse instalado algún tipo de perl 5.*. Tipee "make java" o, si no
le alcanza, tipee "make jdump", para verlo aparecer en su nuevo y brillante
JDK 1.3 Java VM. Algún 1.2.* JDK debería hacerlo también, pero indíquele al
Makefile que no busque en /usr/java/jdk1.3, seteándolo a JAVAHOME.
libopenisis puede enlazarse con tu código; no es necesario instalarlo. Si desea
instalar los binarios 'openisis' en alguna ubicación de su path, simplemente
cópielo, no hay registros de configuración mágicos.
Para instalar openisis para su disponibilidad general en su /usr/lib/perl5
o donde esté instalado, cambie al subdirectorio perl (después de "make perl")
e ingrese "make install" (como root o legitimado de otra manera). Después pruebe
"perldoc OpenIsis" y el script de demostración demo.pl.
Java, like perl, needs to dynamically slurp both some stuff in the own language
and a native shared object. The former is openisis.jar, set your CLASSPATH to
include it, or specify when invoking java like in the Makefile. The latter is
libopenjsis.so on linux (yes, it's jsis). The system dynamic linker
must be able to find it; see NativeDb.java for details.
OpenIsis.org es patrocinado por
,
a service of merconic, Berlín, Alemania. Como un sitio
destinado a estudiantes, allmaxx apoya software de fuente abierto dirigido a
la educación y el manejo de conocimientos. Véase también la open
community for science.
Actualmente el sitio es mantenido por
Erik y Paul.
Los voluntarios son bienvenidos.
El código fuente de Openisis está disponible en
lado a lado con el proyecto PHP isis de Franck Martin's PHP. Gracias Franck!
openisis y PHP isis en sourceforge
sitios núcleo isis:
Unesco
Bireme
documentación:
EL LIBRO manual de referencia CDS/ISIS incl. formato de datos (en español)
gente y proyectos:
Robert Janusz' iAPI
Kafkas Caprazli's TODO acerda de CDS/ISIS
software de código abierto para bibliotecas
javaisis
Institut Teknologi Bandung
IsisOnline en Indonesia
grupos de usuarios:
Netherlands / international
UK (ISIS PLUS)
Germany (isisnetz)
personal:
Erik Grziwotz
Klaus "Paul" Ripke
Braulio José Solano Rojas
ISIS, conjuntos de caracteres y unicode
$Revision: 1.2 $ last changed $Date: 2002/09/02 09:30:45 $ by $Author: kripke $
(this page intentionally left blank :)