<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p>Hi Hilaire</p>
    <p>I am also thinking about a persistence solution for Cuis. In 2025
      I am planning to gradually move to Cuis and I need one.</p>
    <p>At the moment I use</p>
    <p>- external CSV files. This is good as a lot of information comes
      in tables. CSV is the de-facto standard for data. Input comes in
      this format. Noteworthy Excel/LibreOffice Calc and text processor
      tables. The LibreOffice database component can deal with them.<br>
    </p>
    <p>- I use the ReferenceStream to send a fat object (a tree of
      objects, top level is a dictionary) from Squeak to Cuis, see my
      mail 'Importing String objects from Squeak' at the beginning of
      this month. I am working on getting it to work also in the other
      direction.<br>
    </p>
    <p>- I also have large PNG image files (30MB * 200 .. 600) and a lot
      of smaller picture files (2MB each) to manage. I keep them out of
      the Cuis image in folders and have a small representation of them
      in the Cuis image. These smaller files are also in an external
      folder.</p>
    <p>- You may have a look at the Squeak wiki page 'Databases and
      Persistence' <a class="moz-txt-link-freetext" href="https://wiki.squeak.org/squeak/512">https://wiki.squeak.org/squeak/512</a> for some ideas.<br>
    </p>
    <p>- Noteworthy there is the remark about image persistence[1]. Very
      doable if the content is not too large. I guess this is a solution
      good enough for the upcoming 3 .. 10 months of your Dynabook
      development but probably not for longer. </p>
    <p>- You earlier expressed your interest in SQLite on this list. The
      most frequent deployed  database in the world. Also a de-facto
      standard. The two Cuis SQLite implementations are unfortunately
      currently broken. Not sure how much effort it takes to fix that. I
      would like to have this done but at the moment my time does not
      allow this. Maybe some time next February / March. Not all needs
      to go into one SQLite db file. For example one could be used for
      each document your dynabook user is annotating and the school,
      teacher and student information could go into another one.</p>
    <p>- And one should not forget that the Cuis idea is not to do
      something others have done well (e.g git as version control
      system). A home grown persistence solution will absorb quite some
      energy and put a delay on working on what others can not do.
      Support of a ODB solution is an issue.<br>
    </p>
    <p>Could you please elaborate about your mixed experience with
      ReferenceStream? To know that would be helpful.<br>
    </p>
    <p>Regards</p>
    <p>Hannes<br>
    </p>
    <p><br>
    </p>
    <p>[1]</p>
    <p><strong>Squeak Image</strong><br>
      Squeak (as all Smalltalk implementations worthy of that name)
      implements persistency in a way which is (almost) unseen in any
      other computational environment. It does not need databases, XML
      or any similar superfluous stuff to be persistent. Just try: </p>
    <pre>Smalltalk snapshot: true andQuit: false.</pre>
    <br>
    You can also create a process which saves the image periodically
    instead of you.<br>
    <pre>[[true] whileTrue:
        [(Delay forSeconds: 1000) wait.
         Smalltalk snapshot: true andQuit: false ]]
                forkAt: 49.
</pre>
    <br>
    But keep in mind that this type of persistence is not <a
      class="external" href="http://en.wikipedia.org/wiki/ACID">ACID</a>.
    You may lose data. In cases where it is not acceptable to lose data,
    some of us think databases are not superfluous at all (<a
      class="internal" href="https://wiki.squeak.org/squeak/2578"
title="Gerald Zincke: last edited 6907 days ago by bchm-d9bae9b0.pool.mediaWays.net">Gerald
      Zincke</a>). It also involves shutting down and restarting all
    those objects that involve external resources; see the various
    implementors of #shutDown etc.
    <p> <br>
    </p>
    <div class="moz-cite-prefix">On 14/12/2024 3:40 pm, Hilaire
      Fernandes via Cuis-dev wrote:<br>
    </div>
    <blockquote type="cite"
      cite="mid:939f82bd-63e1-4d1c-b910-b9d42ff4fda4@free.fr">
      <meta http-equiv="content-type" content="text/html; charset=UTF-8">
      <p><font size="4">Hi !</font></p>
      <p><font size="4">What are our options for ODB?<br>
        </font></p>
      <p><font size="4">Experimented with ReferenceStream, but I have a
          mixed experience so far, hard to control what is and is not
          persisted.<br>
        </font></p>
      <p><font size="4">Thanks<br>
        </font></p>
      <pre class="moz-signature" cols="72">-- 
<a class="moz-txt-link-freetext" href="http://mamot.fr/@drgeo"
      moz-do-not-send="true">http://mamot.fr/@drgeo</a></pre>
      <br>
      <fieldset class="moz-mime-attachment-header"></fieldset>
    </blockquote>
  </body>
</html>