This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Contents of /openisis/current/doc/Cuba.txt

Parent Directory Parent Directory | Revision Log Revision Log

Revision 237 - (show annotations)
Mon Mar 8 17:43:12 2004 UTC (16 years, 7 months ago) by dpavlin
File MIME type: text/plain
File size: 24002 byte(s)
initial import of openisis 0.9.0 vendor drop

1 roadmap for the OpenIsis development
4 Mapa para el desarrollo de OpenIsis
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)
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".
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)
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".
39 * prepared
40 - Tcl/Tk GUI client
41 - Lehmann/Yao index with collation support
42 - highly efficient multithreading server
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.
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
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.
75 * aims
76 - multi-purpose database and server technology
77 - robustness, performance and scalability
78 - exploring application areas with tools
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.
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.
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
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.
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.
114 * variants
115 - standalone
116 - client and multithreaded server
117 - no multi-process writing, single-shot writers possible
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).
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).
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.
135 * Variantes
136 - estación de trabajo independiente
137 - cliente y servidor multihilos
138 - sin escritura multi-proceso, funciones de escritura monoestables
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).
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)
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.
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.
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)
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).
183 * server architecture
184 - multithreading - multisession
185 - various embedded languages possible
186 - usually not itself client
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.
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.
199 * Arquitectura del servidor
200 - multihilos - multisessión
201 - posibilidad de usar varios lenguajes incrustados
202 - generalmente no es un cliente en sí
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.
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.
221 * client architecture
222 - TCP or local sockets
223 - asynchronous in event based environment (GUI,server)
224 - synchronous else
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.
233 * Arquitectura de clientes
234 - TCP o sockets locales
235 - entorno asincrónico basado en eventos (GUI, servidor)
236 - otros sincrónicos
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.
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
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.
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.
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
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.
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.
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
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.
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.
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)
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.
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.
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"
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.
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"
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.
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
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.
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
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.
388 * Tcl/Tk application
389 - graphical user interface
390 - asynchronous singlethreaded client
391 - integrated in server
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.
400 Tcl is also well suited as a safe server extension language,
401 with one interpreter per session.
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
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.
420 * Perl features
421 - pathologically eclectic rubbish lister
422 - best for the lazy, impatient and hubristic
423 - unreadable one-way code
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.
430 * Características de Perl
431 - "pathologically eclectic rubbish lister"
432 - lo mejor para vagos, impacientes y presuntuosos
433 - código unidireccional ilegible
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.
440 Nota1: (Listador de tonterías patológicamente eclécticas).
443 * Perl application
444 - converting
445 - reports
446 - integration
447 - cgi
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.
455 * Uso de Perl
456 - conversión
457 - informes
458 - integración
459 - cgi
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.
468 * PHP features
469 - easy for beginners
470 - commonly available on servers
471 - with Apache, runs multiprocess
474 * Características de PHP
475 - fácil para principiantes
476 - generalmente disponible en los servidores
477 - multiproceso con Apache
480 * PHP application
481 - lightweight web apps
482 - integration with existing PHP code
483 - for writing, should be used as client
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
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
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.
505 In the long term one could envision basing the cyrus IMAP server on
506 ISIS to hold the metadata.
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
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.
526 A largo plazo se podría enfocar de basar el
527 servidor IMAP cyrus en ISIS para almacenar los metadatos.
530 * XML
531 - structures easily flattened to ISIS records
532 - compact storage, fast access
533 - can search for all attributes
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.
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
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.
563 * supported platforms
564 - linux fully supported
565 - other unixes incl. MacOS X
566 - windows w/o multithreading
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.
575 * Soporte para plataformas
576 - soporte completo para linux
577 - otros unixes incluyendo MacOS X
578 - windows sin multi-procesamiento
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.
588 * proposed file formats
589 - plaintext MST
590 - XRF 4/2, 5/3, 7/5 or as seems fit
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.
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.
603 * Formatos de archivo propuestos
604 - archivo maestro plano (MST)
605 - archivo de referencias cruzadas (XRF) 5/3, 7/5 o como parezca ajustarse
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.
617 * application projects
618 - common serials database
619 - commercial applications (web shop and content management)
620 - several web based
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
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
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
647 ---
648 $Id: Cuba.txt,v 1.6 2003/02/10 17:15:39 kripke Exp $

  ViewVC Help
Powered by ViewVC 1.1.26