Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
C
caosdb-server
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Iterations
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container Registry
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
caosdb
Software
caosdb-server
Commits
a46a795b
Commit
a46a795b
authored
3 years ago
by
Daniel Hornung
Browse files
Options
Downloads
Patches
Plain Diff
DOC WIP: Structure documentation.
parent
31a49328
No related branches found
Branches containing commit
No related tags found
Tags containing commit
2 merge requests
!21
Release v0.4.0
,
!15
Document server code structure
Pipeline
#8102
passed
3 years ago
Stage: test
Stage: deploy
Changes
3
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
src/doc/conf.py
+4
-0
4 additions, 0 deletions
src/doc/conf.py
src/doc/development/benchmarking.md
+4
-0
4 additions, 0 deletions
src/doc/development/benchmarking.md
src/doc/development/structure.rst
+66
-1
66 additions, 1 deletion
src/doc/development/structure.rst
with
74 additions
and
1 deletion
src/doc/conf.py
+
4
−
0
View file @
a46a795b
...
...
@@ -190,6 +190,10 @@ epub_exclude_files = ['search.html']
# '<namespace_here>' : ('<base_url_here>', 'javadoc'),
# }
javadoc_url_map
=
{
'
org.restlet
'
:
(
'
https://javadocs.restlet.talend.com/2.4/jse/api
'
,
'
javadoc
'
),
}
# -- Options for intersphinx -------------------------------------------------
...
...
This diff is collapsed.
Click to expand it.
src/doc/development/benchmarking.md
+
4
−
0
View file @
a46a795b
# Benchmarking CaosDB #
Please refer to the file
`doc/devel/Benchmarking.md`
in the CaosDB sources for developer resources
how to do benchmarking and profiling of CaosDB.
This diff is collapsed.
Click to expand it.
src/doc/development/structure.rst
+
66
−
1
View file @
a46a795b
CaosDB's
i
nternal
s
tructure
CaosDB's
I
nternal
S
tructure
===========================
The CaosDB server
- builds upon the `Restlet <https://restlet.talend.com/>`_ framework to provide a REST interface to
the network. See the :ref:`HTTP Resources` section for more information.
- uses an SQL database (MariaDB or MySQL) as the backend for data storage. This is documented in
the :ref:`MySQL Backend` section.
- has an internal scheduling framework to organize the required backend jobs. Read more on this in
the :ref:`Transactions and Schedules<transactions>` section.
- may use a number of authentication providers. Documentation for this is still to come.
.. _HTTP Resources:
HTTP Resources
--------------
HTTP resources are implemented in the :java:ref:`resource<org.caosdb.server.resource>` package, in
classes inheriting from :java:ref:`AbstractCaosDBServerResource` (which inherits Restlet's
:java:ref:`Resource<org.restlet.resource.Resource>` class). The main :java:ref:`CaosDBServer` class
defines which HTTP resource (for example ``/Entity/{specifier}``) will be handled by which class
(:java:ref:`EntityResource` in this case).
Implementing classes need to overwrite for example the ``httpGetInChildClass()`` method (or methods
corresponding to other HTTP request methods such as POST, PUT, ...). Typically, they might call the
``execute()`` method of a :java:ref:`Transaction<org.caosdb.server.transaction.Transaction>` object.
Transactions are explained in detail in the :ref:`Transactions and Schedules<transactions>` section.
.. uml::
@startuml
abstract AbstractCaosDBServerResource
class RetrieveEntityResource
class EntityResource
AbstractCaosDBServerResource <|-- RetrieveEntityResource
RetrieveEntityResource <|-- EntityResource
@enduml
.. _MySQL Backend:
MySQL Backend
-------------
The MySQL backend in CaosDB may be substituted by backends for, but at the time of writing this
documentation, only MySQL (MariaDB is used for testing) is implemented. There are the following
main packages which handle the backend:
:java:ref:`backend.interfaces<interfaces>`
Interfaces which backends may implement. The main method for most interfaces is
``execute(...)`` with arguments depending on the specific interface, and benchmarking methods
(``getBenchmark()`` and ``setTransactionBenchmark(b)`` may also be required.
:java:ref:`backend.implementation.MySQL<MySQL>`
MySQL implementations of the interfaces. Typical "simple" implementations create a prepared SQL
statement from the arguments to ``execute(...)`` and send it to the SQL server.
:java:ref:`backend.transaction<backend.transaction>` classes
Subclasses of the abstract :java:ref:`BackendTransaction` which implement the ``execute()``
method. These classes may use specific backend implementations (like for example the MySQL
implementations) to interact with the backend database.
.. _transactions:
Transactions and Schedules
--------------------------
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment