1 |
roadmap for the OpenIsis development |
2 |
|
3 |
|
4 |
Mapa para el desarrollo de OpenIsis |
5 |
|
6 |
|
7 |
* status |
8 |
- read-only engine |
9 |
- very basic versions of query/formatting |
10 |
- multiple language bindings: PHP,Perl,Java |
11 |
- webapps work fine (neither complex queries nor formatting) |
12 |
|
13 |
This is the status since summer 2002, one year after the development started. |
14 |
While multithreading ability would be useful when running inside a Java |
15 |
servlet engine, webforms do not usually create complex queries, |
16 |
do not refer to previous results and the graphical layout is anyway |
17 |
driven by HTML code inside a JSP rather than by formatting |
18 |
language constructs like "FONTS". |
19 |
|
20 |
|
21 |
* Estado actual |
22 |
- motor de sólo-lectura |
23 |
- consultas y formateo aún básicos |
24 |
- múltiples asociaciones (bindings) en los siguientes lenguajes: PHP, Perl, Java |
25 |
- aplicaciones web funcionan bien (sin consultas complejas ni formateo) |
26 |
|
27 |
Este es el estado desde verano 2002, un año despúes de |
28 |
haber comenzado el desarrollo. |
29 |
Mientras que sería útil incluír la habilidad de |
30 |
manejar multihilos dentro de |
31 |
un motor de servlets Java, formularios en web |
32 |
generalmente no requieren la realización de consultas |
33 |
complejas, no necesitan acceso a resultados anteriores |
34 |
y el diseño gráfico ya está incluído en el código HTML |
35 |
dentro de un JSP y no requiere de instrucciones |
36 |
de formateo como "FONTS". |
37 |
|
38 |
|
39 |
* prepared |
40 |
- Tcl/Tk GUI client |
41 |
- Lehmann/Yao index with collation support |
42 |
- highly efficient multithreading server |
43 |
|
44 |
Since midth of 2002, we've been preparing the next step, |
45 |
which shall lead to a (non web based) graphical user interface |
46 |
supporting simultaneous write access. |
47 |
In order to support even very demanding applications, |
48 |
we sacrificed the simplicity and convenience of direct file access |
49 |
in favor of a server based approach. |
50 |
After several tests and studies on how this might be integrated within |
51 |
the various environments the design phase is mostly finished and |
52 |
much of the code has already been written. |
53 |
The index structure is borrowed from Postgres/the GiST. |
54 |
|
55 |
|
56 |
* en preparación |
57 |
- cliente con interfaz gráfica en Tcl/Tk |
58 |
- Indice Lehmann/Yao con alfabetización flexible |
59 |
- servidor multihilos altamente eficiente |
60 |
|
61 |
Desde mediados de 2002 hemos preparado el próximo paso |
62 |
que deberá conducir a una interfaz gráfica (no basada |
63 |
en web) que posibilite acceeso a escritura simultáneo. |
64 |
A fin de dar soporte incluso a aplicaciones con altas |
65 |
exigencias, sacrificamos la simplicidad y |
66 |
conveniencia de acceso directo a archivos en favor de |
67 |
un enfoque basado en un servidor. Después de |
68 |
muchas pruebas y estudios sobre cómo podría ser |
69 |
integrado en los diferentes entornos, prácticamente |
70 |
hemos finalizado con la fase del diseño y ya hay mucho |
71 |
código escrito. La estructura del índice es prestado |
72 |
de Postgres/the GiST. |
73 |
|
74 |
|
75 |
* aims |
76 |
- multi-purpose database and server technology |
77 |
- robustness, performance and scalability |
78 |
- exploring application areas with tools |
79 |
|
80 |
While OpenIsis clearly has it's roots in CDS/ISIS, |
81 |
we believe the principles of IIF(ISO2709)-based databases to be |
82 |
very well suited for a wide range of applications, |
83 |
not only in the bibliographical domain. |
84 |
|
85 |
The more programmers feel ISIS is their database of choice, |
86 |
the more will contribute improvements. |
87 |
Maybe one day even Koha and Gnuteca will switch over from MySQL/Postgres. |
88 |
Therefore we strictly focus on an industrial-strength implementation |
89 |
of the core issues and on making them available to techies in various ways |
90 |
rather than building elaborated applications offering easy end user access. |
91 |
|
92 |
|
93 |
* Objetivos |
94 |
- base de datos y tecnología de servidor multipropósito |
95 |
- robustez, rendimiento y escalabilidad |
96 |
- exploración de diferentes áreas de aplicación con las herramientas |
97 |
|
98 |
Aunque las raíces de OpenIsis provienen de CDS/ISIS, |
99 |
creemos que los principios de bases de datos |
100 |
basados en el formato de intercambio de información |
101 |
(ISO 2709) se adaptan muy bien a una amplia gama de |
102 |
aplicaciones, no sólo en el ámbito bibliográfico. |
103 |
|
104 |
Cuanto más programadores eligan a ISIS como base de |
105 |
datos, mayores serán los avances contribuidos. Quizas |
106 |
incluso Koha y Gnuteca se pasen de MySQL/Postgres a |
107 |
ISIS. Como consecuencia nos hemos concentrado en una |
108 |
poderosa implementación de las funciones básicas y a |
109 |
ofrecerlos a desarrolladores de diferentes formas, en |
110 |
lugar de construir aplicaciones completas para el |
111 |
usuario final. |
112 |
|
113 |
|
114 |
* variants |
115 |
- standalone |
116 |
- client and multithreaded server |
117 |
- no multi-process writing, single-shot writers possible |
118 |
|
119 |
The most simple variant is working for some time now. |
120 |
In a read-only application, several clients may |
121 |
access the database simultaneously. (This *may* even work with *one* writer, |
122 |
but details are system dependent, so don't rely upon this). |
123 |
|
124 |
No two writing processes may have overlapping access to the database, |
125 |
since this would require fine-grained file locking (which has lots of |
126 |
problems) and rule out agressive caching (which has lots of benefits). |
127 |
However, where the complete access to the database, from opening to closing, |
128 |
is strictly serialized by one single lock, multi-process write access |
129 |
is possible (CGI, PHP). |
130 |
|
131 |
The approach most stable yet giving highly parallelized access is a |
132 |
server acting on behalf of a bunch of clients, as used by every RDBMS. |
133 |
|
134 |
|
135 |
* Variantes |
136 |
- estación de trabajo independiente |
137 |
- cliente y servidor multihilos |
138 |
- sin escritura multi-proceso, funciones de escritura monoestables |
139 |
|
140 |
La variante más sencilla ya funciona desde algún |
141 |
tiempo. Es una aplicación de sólo lectura, varios |
142 |
clientes pueden acceder una base de datos en forma |
143 |
simultánea. (Esto incluso *puede* funcionar con *un* |
144 |
cliente que grabe datos sobre ella, sin embargo los |
145 |
datalles dependen del sistema de implementación, por |
146 |
lo que ésto no deberá ser tomado al pie de la letra). |
147 |
|
148 |
|
149 |
* application scenarios |
150 |
- multi-purpose or customized Tk application |
151 |
- PHP or Perl webapp readonly or client |
152 |
- Java webapp standalone, server or client |
153 |
- multi-protocol C server (Z39.50, HTTP, IMAP) |
154 |
|
155 |
The basic GUI version will try to mimik the basic features of WinISIS. |
156 |
The scripting abilities of Tcl/Tk can be used for customizing applications. |
157 |
For experienced users facing complex tasks, this could provide a much more |
158 |
demanding, yet also more flexible alternative to worksheets and printformats. |
159 |
|
160 |
As with today's RDBMS, all language environments can act as client to a |
161 |
database server. Java, due to it's one-multithreaded-process architecture, |
162 |
may also incorporate the multisession server code locally (via JNI). |
163 |
The server proper is not limited to it's native database access protocol, |
164 |
but may support a host of session based TCP protocols, |
165 |
e.g. Z39.50 using the Yaz toolkit. |
166 |
|
167 |
|
168 |
* Escenarios de aplicación |
169 |
- aplicaciones multipropósito o a medida con Tk |
170 |
- aplicaciones web en PHP o Perl de sólo-lectura o clientes |
171 |
- aplicaciones Java independientes, cliente o servidor |
172 |
- servidor multi-protocolo en C (Z39.50, HTTP, IMAP) |
173 |
|
174 |
La versión con interfaz gráfica reimplementará las |
175 |
características básicas de WinISIS. La facilidad de |
176 |
Tcl/Tk para integrar scripts puede aprovecharse para |
177 |
aplicaciones a medida. Para usuarios experimentados |
178 |
que se enfrentan a tareas complejas, ésto es una |
179 |
alternativa más exigente, pero también más flexible |
180 |
que hojas de trabajo y formatos de impresión (PFT). |
181 |
|
182 |
|
183 |
* server architecture |
184 |
- multithreading - multisession |
185 |
- various embedded languages possible |
186 |
- usually not itself client |
187 |
|
188 |
The server opens one session for every client to hold references to previous |
189 |
query results. All requests on behalf of one client are serialized. |
190 |
As a consequence, IO and memory, which are also bound to sessions, |
191 |
can be accessed safely within the server without additional locking. |
192 |
|
193 |
The basic server language, yet another PFT-lookalike, can be augmented |
194 |
by embedded versions of the several bindings similar to the well known |
195 |
PASCAL formatting exits. While the server could also itself access remote |
196 |
databases, this is not recommended since it may hamper availability. |
197 |
|
198 |
|
199 |
* Arquitectura del servidor |
200 |
- multihilos - multisessión |
201 |
- posibilidad de usar varios lenguajes incrustados |
202 |
- generalmente no es un cliente en sí |
203 |
|
204 |
El servidor abre una sessión para cada cliente para |
205 |
almacenar referencias a los resultados obtenidos por |
206 |
consultas anteriores. Todas las solicitudes de un |
207 |
cliente se serializan, como consecuencia el |
208 |
acceso a los archivos y la memoria también se ligan a |
209 |
una sesión y pueden accederse en forma segura dentro |
210 |
del servidor sin bloquéo adicional. |
211 |
|
212 |
El lenguaje del servidor es solamente otro tipo de PFT |
213 |
y puede aumentarse incrustando versiones de las |
214 |
diferentes asociaciones similar a las conocidas |
215 |
salidas de formato de Isispascal. Mientras que el |
216 |
servidor también podría acceder bases de datos |
217 |
remotas, ésto no se recomiendo ya que puede haber |
218 |
inconvenientes con la avabilidad. |
219 |
|
220 |
|
221 |
* client architecture |
222 |
- TCP or local sockets |
223 |
- asynchronous in event based environment (GUI,server) |
224 |
- synchronous else |
225 |
|
226 |
The client connects to the server by means of TCP or the faster Unix sockets. |
227 |
The basic programmatic interface will, after sending a request to the server, |
228 |
wait until the response is available completely. In some environments like |
229 |
the Tk GUI however, it is possible for the client to stay responsive while |
230 |
waiting, display some progress bar and then show results as they arrive. |
231 |
|
232 |
|
233 |
* Arquitectura de clientes |
234 |
- TCP o sockets locales |
235 |
- entorno asincrónico basado en eventos (GUI, servidor) |
236 |
- otros sincrónicos |
237 |
|
238 |
El cliente se contecta al servidor mediante TCP o los |
239 |
sockets de Unix que son más rápidos. La interfaz de |
240 |
programación básica espera -después de haber enviado |
241 |
una solicitud al servidor- hasta que la respuesta esté |
242 |
disponible en forma completa. Sin embargo algunos |
243 |
entornos como la interfaz gráfica de Tk pueden incluír |
244 |
algún tipo de barra de progreso y mostrar los |
245 |
resultados en la medida que ingresan a fin de mantener |
246 |
el cliente en espera. |
247 |
|
248 |
|
249 |
* relation to technologies |
250 |
- use pros, avoid cons |
251 |
- bring ISIS power to other techniques |
252 |
- but stay independent of single concept like XML |
253 |
|
254 |
There is no single perfect programming environment for all kinds of tasks |
255 |
and all sorts of programmers. In order to support the widest possible |
256 |
range of techniques, we must not tie OpenIsis to any particular one. |
257 |
|
258 |
Using C++, for example, causes problems when linked into another environment |
259 |
which fails to properly call constructors and destructors or was compiled |
260 |
with another version of "io.h". While relying on a C++ based XML-parser is |
261 |
perfectly ok for a given application, it would not be such a good idea for |
262 |
a multi-purpose library. Even C-runtime features must be used with caution. |
263 |
|
264 |
|
265 |
* Relación con tecnologías |
266 |
- aprovechar los pros, evitar los contra |
267 |
- llevar el poder de ISIS a otras tecnologías |
268 |
- pero permanecer independiente de conceptos aislados como XML |
269 |
|
270 |
No hay un entorno de programación perfecto para todo |
271 |
tipo de tareas y todos los programadores. Para dar |
272 |
soporte al rango más amplio de tecnologías no debemos |
273 |
atar a OpenIsis a ninguna en particular. |
274 |
|
275 |
Usando C++ por ejemplo, aparecen problemas cuando se |
276 |
enlazan en otro entorno que falla al llamar |
277 |
correctamente a constructures y destructores o cuando |
278 |
ha sido compilado con otra versión de "io.h". Mientas |
279 |
que un parser XML basado en C++ es perfectamente |
280 |
factible en una aplicación dada, no sería tan bueno |
281 |
para una librería multi-propósito. Incluso |
282 |
características del librería de runtime de C (libc) |
283 |
deben emplearse con cautela. |
284 |
|
285 |
|
286 |
* Java features |
287 |
- works well in servlet engines |
288 |
- full-fledged language with well-designed utilities |
289 |
- mature and portable multithreading support |
290 |
- JVM license problems, buggy GUI toolkits |
291 |
|
292 |
The various improvements over the C++/Smalltalk heritage made Java |
293 |
the language of choice for object oriented programming in large-scale |
294 |
software projects. Servlet engines are the most elaborate environment |
295 |
for complex web-publishing tasks. |
296 |
|
297 |
Unfortunately, the GUI toolkits AWT and Swing are poorly designed |
298 |
and implemented. The Sun JVM and JDK are subject to export restrictions, |
299 |
and the free JVMs are not very mature. |
300 |
|
301 |
|
302 |
* Características de Java |
303 |
- funciona bien en motores servlet |
304 |
- lenguaje completo con funciones bien diseñadas |
305 |
- soporte para multihilos maduro y portable |
306 |
- problemas con la licencia, toolkits GUI deficientes (AWT) |
307 |
|
308 |
Las diferentes mejores sobre la herencia de |
309 |
C++/Smalltalk hacen de Java el lenguaje de elección |
310 |
para programación orientada a objetas en proyectos de |
311 |
software de gran escala. Motores servlets ofrecen el |
312 |
entorno más elaborado para tareas complejas en la |
313 |
publicación web. |
314 |
|
315 |
Desafortunadamente los toolkits de interfaces gráficas |
316 |
AWT y Swing están pobremente diseñados e |
317 |
implementadas. La máquina virtual Java y JDK de |
318 |
Sun están sujetas a restricciones en cuanto a su |
319 |
exportación y otras máquinas virtuales Java no están |
320 |
demasiado maduras. |
321 |
|
322 |
|
323 |
* Java application |
324 |
- multithreaded network application with in-process server |
325 |
- synchronous client in pure Java |
326 |
- integration based on JDBC or "enterprise beans" |
327 |
|
328 |
The database frontend for "Institut der Didaktik der Mathematik" is a simple |
329 |
example how to take advantage of HTTP session handling and javax.mail classes |
330 |
to create an order system. Remote database access can be implemented in pure |
331 |
Java (like Oracle's "thin client"), however, asynchronous communication is |
332 |
not supported by java.net.Socket. The wealth of existing Java based solutions |
333 |
might be basis for integration e.g. with SOAP. |
334 |
|
335 |
|
336 |
* Uso de Java |
337 |
- aplicación multihilos en red con servidor de procesamiento interno |
338 |
- clientes sincrónicos en Java puro |
339 |
- integración basada en JDBC o "enterprise beans" |
340 |
|
341 |
El interfaz de base de datos para el "Instituto |
342 |
de didáctica de la matemática" es un ejemplo simple de |
343 |
cómo se puede aprovechar las ventajas de un handling |
344 |
de sesión HTTP y de clases javax.mail para crear un |
345 |
sistema de solicitud bibliográfica. Se puede |
346 |
implementar el acceso a bases de datos remotas en Java |
347 |
puro (como el "cliente liviano" de Oracle), sin |
348 |
embargo java.net.Socket no ofrece soporte para |
349 |
comunicación asincrónica. La abundancia de soluciones |
350 |
existentes basadas en Java pueden ofrecer una base |
351 |
para una mayor integración, por ejemplo con SOAP. |
352 |
|
353 |
|
354 |
* Tcl/Tk features |
355 |
- best portable GUI toolkit |
356 |
- very tight integration with ISIS |
357 |
- easy scripting for customization |
358 |
- not too widespread use |
359 |
|
360 |
As a GUI toolkit, Tk is unparalleled in portability and ease of use. |
361 |
While it can also be used as PerlTk, PythonTk and even JavaTk, |
362 |
Tcl is Tk's native language and, among the mentioned, the most easy to learn. |
363 |
Since Tcl was conceived as Tool Command Language, features of the |
364 |
C library are easily and efficiently made accessible. |
365 |
While Tcl is twelve years old and very mature, it is not that well known |
366 |
and does not offer such an enormous amount of third-party libraries to use. |
367 |
|
368 |
|
369 |
* Características de Tcl/Tk |
370 |
- el mejor juego de herramientas GUI multiplataforma |
371 |
- integración muy estrecha con ISIS |
372 |
- scripting sencillo para requerimientos particulares |
373 |
- uso no demasiado extendido |
374 |
|
375 |
Como toolkit de interfaz gráfica, Tk no tiene igual en |
376 |
cuanto a portabilidad y facilida de uso. Mientras que |
377 |
también puede ser usado como PerlTk, PythonTk e |
378 |
incluso JavaTk, Tcl es el lenguaje nativo de Tk y |
379 |
entre los mencionados, el de más facil aprendizaje. |
380 |
Debido a que Tcl fué concebido como un lenguaje |
381 |
de control de herramientas, se accede con facilidad y eficiencia a |
382 |
las características de la librería en C. Mientras que |
383 |
Tcl ya tiene doce años y es muy maduro, no es tan |
384 |
conocido y no ofrece una cantidad tan enorme de |
385 |
librerías adicionales. |
386 |
|
387 |
|
388 |
* Tcl/Tk application |
389 |
- graphical user interface |
390 |
- asynchronous singlethreaded client |
391 |
- integrated in server |
392 |
|
393 |
Tcl's most important application is to provide a portable Tk-based GUI, |
394 |
which, due to it's nature as a script, can be tailored to the needs of |
395 |
each library or augmented by additional functionality like Z39.50 |
396 |
(indexdata wrote a Tcl/Tk client based on Yaz). |
397 |
This GUI provides synchronous access to local databases and asynchronous |
398 |
remote access, however, runs itself in a single thread. |
399 |
|
400 |
Tcl is also well suited as a safe server extension language, |
401 |
with one interpreter per session. |
402 |
|
403 |
|
404 |
* Uso de Tcl/Tk |
405 |
- interfaz de usuario gráfica |
406 |
- cliente asincrónico de proceso simple (sólo hilo) |
407 |
- integrado con el servidor |
408 |
|
409 |
La aplicación de Tcl más importante es de proveer una |
410 |
interfaz gráfica portable y basada en Tk que, debido a |
411 |
su naturaleza de script, puede ser hecho a medida de |
412 |
cada biblioteca o aumentada con funcionalidades |
413 |
adicionales como Z39.50 (indexdata escribió un |
414 |
cliente Tcl/Tk basado en Yaz). Esta interfaz gráfica |
415 |
provee acceso sincrónico a bases de datos locales y |
416 |
acceso remoto asincrónico, sin embargo corre en sí |
417 |
mismo como un sólo hilo. |
418 |
|
419 |
|
420 |
* Perl features |
421 |
- pathologically eclectic rubbish lister |
422 |
- best for the lazy, impatient and hubristic |
423 |
- unreadable one-way code |
424 |
|
425 |
The experienced programmers preferred quick-and-dirty language. |
426 |
There is rarely a situation in life for which not somebody wrote some |
427 |
Perl Module. Usually, however, you can use it but not read it. |
428 |
|
429 |
|
430 |
* Características de Perl |
431 |
- "pathologically eclectic rubbish lister" |
432 |
- lo mejor para vagos, impacientes y presuntuosos |
433 |
- código unidireccional ilegible |
434 |
|
435 |
El lenguaje rápido-y-sucio preferido por programadores |
436 |
experimentales. Se encuentra raramente una ocasión en |
437 |
la vida donde alguién NO haya escrito un módulo Perl. |
438 |
Sin embargo generalmente lo puede usar, pero no leerlo. |
439 |
|
440 |
Nota1: (Listador de tonterías patológicamente eclécticas). |
441 |
|
442 |
|
443 |
* Perl application |
444 |
- converting |
445 |
- reports |
446 |
- integration |
447 |
- cgi |
448 |
|
449 |
You wouldn't start writing a complex application in Perl, would you? |
450 |
One year later it's nearly impossible to go any further. |
451 |
However, behind and between the scenes Perl is as useful as for small |
452 |
CGI based web frontends. |
453 |
|
454 |
|
455 |
* Uso de Perl |
456 |
- conversión |
457 |
- informes |
458 |
- integración |
459 |
- cgi |
460 |
|
461 |
Ustedes no comenzarían escribir una aplicacion |
462 |
compleja en Perl, ¿no es cierto? |
463 |
Un año más tarde es casi imposible de ir más allá. |
464 |
Sin embargo, atrás y entre escenas Perl es tan práctico |
465 |
para pequeños cgi-frontends para web. |
466 |
|
467 |
|
468 |
* PHP features |
469 |
- easy for beginners |
470 |
- commonly available on servers |
471 |
- with Apache, runs multiprocess |
472 |
|
473 |
|
474 |
* Características de PHP |
475 |
- fácil para principiantes |
476 |
- generalmente disponible en los servidores |
477 |
- multiproceso con Apache |
478 |
|
479 |
|
480 |
* PHP application |
481 |
- lightweight web apps |
482 |
- integration with existing PHP code |
483 |
- for writing, should be used as client |
484 |
|
485 |
|
486 |
* Uso de PHP |
487 |
- Aplicaciones web livianas |
488 |
- integración con código PHP pre-existente |
489 |
- para escritura, debe ser utilizado como cliente |
490 |
|
491 |
|
492 |
* Mail and MIME |
493 |
- mailheaders easily stored as ISIS records |
494 |
- IMAP queries similar to Type-1/ISIS |
495 |
- well established concept for handling multimedia |
496 |
|
497 |
MIME is not exactly a programming language, but an environment |
498 |
worthwhile to support. While media attached to an ISIS DB is locally |
499 |
best stored in separate files (just like RDBMS store their "BLOBS"), |
500 |
it's type and attributes should be described according to the MIME schema. |
501 |
Even where bibliographical rules for such descriptions apply, |
502 |
MIME is best suited to give some client app hints on how to display |
503 |
or further process such data. |
504 |
|
505 |
In the long term one could envision basing the cyrus IMAP server on |
506 |
ISIS to hold the metadata. |
507 |
|
508 |
|
509 |
* Mail y MIME |
510 |
- Encabezamientos mail se almacenan fácilmente como registros ISIS |
511 |
- consultas IMAP tienen similitudes con consultas tipo-1/ISIS |
512 |
- concepto establecido para manejar multimedia |
513 |
|
514 |
MIME no es exactamente un lenguaje de programación, |
515 |
pero un entorno que merece soporte. Mientras que es |
516 |
preferible almacenar archivos multimedia atachados |
517 |
localmente a una base de datos ISIS en forma separada |
518 |
(justo como las bases relacionales almacenan sus "BLOBS"), |
519 |
el tipo y atributos de estos archivos |
520 |
deberían describirse acorde al esquema MIME. Incluso |
521 |
cuando se aplican reglas bibliográficas en estas |
522 |
descripciones, MIME ofrece la mejor forma de informar |
523 |
a las aplicaciones cliente como visualizar o procesar |
524 |
estos datos. |
525 |
|
526 |
A largo plazo se podría enfocar de basar el |
527 |
servidor IMAP cyrus en ISIS para almacenar los metadatos. |
528 |
|
529 |
|
530 |
* XML |
531 |
- structures easily flattened to ISIS records |
532 |
- compact storage, fast access |
533 |
- can search for all attributes |
534 |
|
535 |
During the last years virtually every software "moved" to XML, |
536 |
actually putting fancy new cloths on their same old data. |
537 |
Since bibliographers were among the early supporters of XML's anchestor |
538 |
SGML it is not surprising that these cloths can easily be stripped off |
539 |
in order to store structures whose XML representation is available |
540 |
into an ISIS DB. Each opening tag produces a field with subfields |
541 |
holding it's attributes. Fields representing the childs are followed |
542 |
by a field denoting the closing tag. |
543 |
|
544 |
|
545 |
* XML |
546 |
- estructura que se adapta fácilmente a registros ISIS |
547 |
- almacenamiento compacto, acceso rápido |
548 |
- permite consultas por todos los atributos |
549 |
|
550 |
Durante los ultimos años practicamente todo "se movió" |
551 |
hacia XML colocando bonitas ropas nuevas sobre los |
552 |
mismos datos viejos. Debido a que entre los primeros |
553 |
en impulsar SGML -el ancestro de XML- estuvieron |
554 |
bibliógraficos, no es de sorprender que estas ropas |
555 |
pueden quitarse facilmente para almacenar datos en |
556 |
bases de datos ISIS, mientras que las estructuras XML |
557 |
siguen accesibles. Cada etiqueta de apertura genera un |
558 |
campo con subcampos que almacenan sus atributos. Los |
559 |
nodos hijos se representan en campos a los que le |
560 |
sigue un campo que significa las etiquetas de cierre. |
561 |
|
562 |
|
563 |
* supported platforms |
564 |
- linux fully supported |
565 |
- other unixes incl. MacOS X |
566 |
- windows w/o multithreading |
567 |
|
568 |
As of today, linux/intel is the ideal platform. |
569 |
On other unixes, we may have to deal with big endian processors |
570 |
and support for POSIX threads may vary. |
571 |
Windows 9x/Me lacks sufficient multithreading support. |
572 |
NT4/00/XP has the necessary calls, but difficult to use. |
573 |
|
574 |
|
575 |
* Soporte para plataformas |
576 |
- soporte completo para linux |
577 |
- otros unixes incluyendo MacOS X |
578 |
- windows sin multi-procesamiento |
579 |
|
580 |
Actualmente linux/intel representa la plataforma |
581 |
ideal. Sobre otros unixes tenemos que manejar |
582 |
procesadores big endian y el soporte para subprocesos |
583 |
POSIX puede variar. Windows 9x/Me carece de suficiente |
584 |
soporte para multihilos. NT4/00/XP incluya las |
585 |
llamadas necesarias, pero son dificiles de usar. |
586 |
|
587 |
|
588 |
* proposed file formats |
589 |
- plaintext MST |
590 |
- XRF 4/2, 5/3, 7/5 or as seems fit |
591 |
|
592 |
Besides the legacy MST and XRF, OpenIsis will support additional formats. |
593 |
A plaintext MST is very similar to ISO2709, representing a record as |
594 |
a series of lines. There are neither limits on field length, record length |
595 |
or database size nor any alignment or byte order incompatibilities. |
596 |
In most cases it will even occupy slightly less space. |
597 |
|
598 |
The record length should be stored together with the position in the XRF |
599 |
instead of the MST, so access requires less IO and the number of bytes |
600 |
used for position/length can be allocated as needed. |
601 |
|
602 |
|
603 |
* Formatos de archivo propuestos |
604 |
- archivo maestro plano (MST) |
605 |
- archivo de referencias cruzadas (XRF) 5/3, 7/5 o como parezca ajustarse |
606 |
|
607 |
Mas allá de los formatos heredados MST y XRF, OpenIsis |
608 |
ofrecerá soporte a formatos adicionales. Un MST en un |
609 |
archivo plano es muy similar a ISO 2709, representando |
610 |
un registro como una serie de lineas. Tampoco hay |
611 |
limitacion de longitud de campo, longitud de registro |
612 |
o tamaño de la base de datos, ni alineamiento o |
613 |
incompatibilidades de orden de bytes. En muchos casos, |
614 |
incluso ocuparía un espacio levemente menor. |
615 |
|
616 |
|
617 |
* application projects |
618 |
- common serials database |
619 |
- commercial applications (web shop and content management) |
620 |
- several web based |
621 |
|
622 |
|
623 |
* Proyectos de aplicaciones |
624 |
- base de datos de publicaciones periódicas |
625 |
- aplicaciones comerciales (comercios en-línea y gestión de contenidos) |
626 |
- varios basados sobre aplicaciones web |
627 |
|
628 |
|
629 |
* roadmap 2003 |
630 |
- 02: finish index |
631 |
- winter: standalone GUI (HTML formatting) |
632 |
- spring: server with GUI client |
633 |
- Java and Perl overhaul |
634 |
- reworked formatting |
635 |
- full Type-1 queries |
636 |
|
637 |
|
638 |
* Objetivos para 2003 |
639 |
- febrero: terminar índice |
640 |
- marzo: aplicación GUI para estaciones de trabajo independiente (sobre formato HTML) |
641 |
- primavera: servidor con cliente GUI |
642 |
- revisión de las asociaciones con Java y Perl |
643 |
- retrabajar formateo |
644 |
- soporte completo para consultas tipo 1 |
645 |
|
646 |
|
647 |
--- |
648 |
$Id: Cuba.txt,v 1.6 2003/02/10 17:15:39 kripke Exp $ |