diff --git a/README.rst b/README.rst
index be6fc269..bf94b915 100644
--- a/README.rst
+++ b/README.rst
@@ -1,5 +1,5 @@
-Schnelleinstieg
-===============
+Quick start
+===========
|Contributors| |License| |Docs| |Pyup|
@@ -17,7 +17,7 @@ Schnelleinstieg
Installation
------------
-#. Herunterladen und Auspacken:
+#. Download and unpack:
.. code-block:: console
@@ -28,11 +28,11 @@ Installation
creating: jupyter-tutorial-master/
…
-#. Pipenv installieren
+#. Install Pipenv
- Siehe :doc:`Pipenv installieren `
+ Pleas refer :doc:`Install Pipenv `
-#. Python-Pakete installieren:
+#. Install Python packages:
.. code-block:: console
@@ -46,8 +46,9 @@ Installation
Enabling notebook extension highlighter/highlighter...
- Validating: OK
-#. Javascript- und CSS-Dateien der `Jupyter Notebook Extensions
- `_ installieren
+#. Install the `Jupyter Notebook Extensions
+ ` Javascript and CSS
+ files:
.. code-block:: console
@@ -63,7 +64,7 @@ Installation
Enabling notebook extension latex_envs/latex_envs...
- Validating: OK
-#. HTML-Dokumentation erstellen:
+#. Create HTML documentation:
.. code-block:: console
@@ -72,17 +73,17 @@ Installation
$ bin/python -m pip install -r docs/constraints.txt
$ bin/sphinx-build -ab html docs/ docs/_build/
-#. PDF erstellen:
+#. Create a PDF:
- Für die Erstellung von PDFs benötigt ihr weitere Pakete.
+ For the creation of a PDF file you need additional packages.
- Für Debian/Ubuntu erhaltet ihr diese mit:
+ For Debian/Ubuntu you get this with:
.. code-block:: console
$ apt-get install texlive-latex-recommended texlive-latex-extra texlive-fonts-recommended latexmk
- oder für macOS mit:
+ or for macOS with:
.. code-block:: console
@@ -95,7 +96,7 @@ Installation
mktexlsr: Updating /usr/local/texlive/2020/texmf-dist/ls-R...
mktexlsr: Done.
- Anschließend könnt ihr ein PDF generieren mit:
+ Then you can generate a PDF with:
.. code-block:: console
@@ -106,9 +107,9 @@ Installation
Run 'make' in that directory to run these through (pdf)latex
…
- Das PDF findet ihr anschließend in ``docs/_build/latex/jupytertutorial.pdf``.
+ You can find the PDF at ``docs/_build/latex/jupytertutorial.pdf``.
-Folge uns
+Follow us
---------
* `GitHub `_
@@ -118,9 +119,9 @@ Folge uns
Pull-Requests
-------------
-Wenn ihr Vorschläge für Verbesserungen und Ergänzungen habt, empfehle ich euch,
-einen `Fork `_ meines
-`GitHub-Repository `_ zu erstellen
-und darin eure Änderungen vorzunehmen. Gerne dürft ihr auch einen *Pull Request*
-stellen. Sofern die darin enthaltenen Änderungen klein und atomar sind, schaue ich
-mir eure Vorschläge gerne an.
+If you have suggestions for improvements and additions, I recommend that you
+create a `Fork `_ of my `GitHub
+Repository `_ and make your changes
+there. . You are also welcome to make a *pull request*. If the changes
+contained therein are small and atomic, I’ll be happy to look at your
+suggestions.
diff --git a/docs/clean-prep/dask-pipeline.ipynb b/docs/clean-prep/dask-pipeline.ipynb
index a99c8170..64d90df0 100644
--- a/docs/clean-prep/dask-pipeline.ipynb
+++ b/docs/clean-prep/dask-pipeline.ipynb
@@ -4,28 +4,28 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "# Dask-Pipeline"
+ "# Dask pipeline"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "## Beispiel: Tracking der Internationalen Raumstation mit Dask\n",
+ "## Example: Tracking the International Space Station with Dask\n",
"\n",
- "In diesem Notebook werden wir zwei APIs verwenden:\n",
+ "In this notebook we will be using two APIs:\n",
"\n",
"1. [Google Maps Geocoder](https://developers.google.com/maps/documentation/geocoding/)\n",
"2. [Open Notify API for ISS location](http://api.open-notify.org/)\n",
"\n",
- "Wir werden sie verwenden, um den ISS-Standort und die nächste Durchlaufzeit in Bezug auf eine Liste von Städten zu verfolgen. Um unsere Diagramme zu erstellen und Daten intelligent zu parallelisieren, verwenden wir Dask, insbesondere [Dask Delayed](http://dask.pydata.org/en/latest/delayed.html)."
+ "We will use them to keep track of the ISS location and next lead time in relation to a list of cities. To create our diagrams and intelligently parallelise data, we use Dask, especially [Dask Delayed](http://dask.pydata.org/en/latest/delayed.html)."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "### 1. Importe"
+ "### 1. Imports"
]
},
{
@@ -67,9 +67,9 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "### 3. Latitude- und Longitude-Paare aus einer Liste von Städten\n",
+ "### 3. Latitude and longitude pairs from a list of cities\n",
"\n",
- "s.a. [Location APIs](https://locationiq.org)"
+ "see also [Location APIs](https://locationiq.org)"
]
},
{
@@ -187,7 +187,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "## 4. ISS-Daten abrufen und Durchlaufzeiten der Städte ermitteln"
+ "## 4. Retrieve ISS data and determine lead times for cities"
]
},
{
@@ -309,7 +309,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "## 5. Erstellen einer `delayed`-Pipeline"
+ "## 5. Create a `delayed` pipeline"
]
},
{
@@ -353,7 +353,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "## 6. DAG anzeigen"
+ "## 6. Show DAG"
]
},
{
diff --git a/docs/clean-prep/deduplicate.ipynb b/docs/clean-prep/deduplicate.ipynb
index 67a93d95..a3d82101 100644
--- a/docs/clean-prep/deduplicate.ipynb
+++ b/docs/clean-prep/deduplicate.ipynb
@@ -4,18 +4,18 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "# Daten deduplizieren\n",
+ "# Deduplicate data\n",
"\n",
- "In diesem Notebook deduplizieren wir Daten mithilfe der [Dedupe](https://dedupe.readthedocs.io/en/latest/)-Bibliothek, die ein flaches neuronales Netzwerk verwendet, um aus einem kleinen Training zu lernen.\n",
+ "In this notebook, we deduplicate data using the [Dedupe](https://dedupe.readthedocs.io/en/latest/) library, which uses a flat neural network to learn from a small training session.\n",
"\n",
- "Zudem haben dieselben Entwickler\\*innen [parserator](https://github.com/datamade/parserator) erstellt, mit dem Ihr Textfunktionen extrahieren und Eure eigenen Textextraktion trainieren könnt. "
+ "In addition, the same developers have created [parserator](https://github.com/datamade/parserator) with which you can extract text functions and train your own text extraction."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "## 1. Importe"
+ "## 1. Imports"
]
},
{
@@ -43,7 +43,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "## 2. Datenqualität überprüfen"
+ "## 2. Check data quality"
]
},
{
@@ -231,9 +231,9 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "## 3. Dedupe konfigurieren\n",
+ "## 3. Configure Dedupe\n",
"\n",
- "Nun definieren wir die Felder, auf die bei der Deduplizierung geachtet werden soll und erstellen ein neues `deduper`-Objekt:"
+ "Now we define the fields to be taken into account during deduplication and create a new `deduper` object:"
]
},
{
@@ -300,7 +300,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "## 4. Trainingsdaten erstellen"
+ "## 4. Create training data"
]
},
{
@@ -325,9 +325,9 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "## 5. Aktives Lernen\n",
+ "## 5. Active learning\n",
"\n",
- "Wenn Dedupe ein Datensatzpaar findet, werdet Ihr gebeten, es als Duplikat zu kennzeichnen. Ihr könnt hierfürdie Tasten `y`, `n` und `u`, um Duplikate zu kennzeichnen. Drückt `f`, wenn Ihr fertig seid."
+ "If Dedupe finds a pair of records, you will be asked to mark it as a duplicate. You can do this using the `y`, `n` and `u` buttons to mark duplicates. Push `f` when you're done."
]
},
{
@@ -521,7 +521,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "Wenn Ihr fertig seid, speichert Eure Trainingsdaten:"
+ "When you’re done, save your training data:"
]
},
{
@@ -538,7 +538,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "Speichert auch Eure Gewichte und Prädikate. Wenn `settings_file` bereits existiert, werden beim nächsten Durchlauf Training und aktives Lernen übersprungen:"
+ "Also save your weights and predicates. If `settings_file` already exists, training and active learning will be skipped in the next run:"
]
},
{
diff --git a/docs/clean-prep/engarde.ipynb b/docs/clean-prep/engarde.ipynb
index f6634b32..0e483dba 100644
--- a/docs/clean-prep/engarde.ipynb
+++ b/docs/clean-prep/engarde.ipynb
@@ -4,16 +4,16 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "# Pandas DataFrame-Validierung mit Engarde\n",
+ "# Pandas DataFrame validation with Engarde\n",
"\n",
- "In diesem Notebook überprüfen wir `pandas.DataFrame`-Objekte mit der Bibliothek [engarde](https://github.com/TomAugspurger/engarde). Mit ihr könnt Ihr sowohl Decorators für Funktionen schreiben als auch integrierte Funktionen verwenden, um Euren DataFrame mit bestimmten Validierungsregeln oder -definitionen zu testen."
+ "In this notebook we check `pandas.DataFrame` objects with the [engarde](https://github.com/TomAugspurger/engarde) library. With it you can write decorators for functions as well as use built-in functions to test your DataFrame with certain validation rules or definitions."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "## 1. Importe"
+ "## 1. Imports"
]
},
{
@@ -31,7 +31,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "## 2. Daten lesen"
+ "## 2. Read data"
]
},
{
@@ -47,7 +47,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "## 3. Daten überprüfen"
+ "## 3. Check data"
]
},
{
@@ -189,9 +189,9 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "## Datentypen überprüfen\n",
+ "## Check data types\n",
"\n",
- "Engarde lässt uns Datentypen nachverfolgen. In einer ersten Funktion sollten wir also unsere erwarteten Ergebnisse überpfüfen."
+ "Engarde lets us keep track of data types. So in a first function we should check our expected results."
]
},
{
@@ -258,9 +258,9 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "## 5. Entfernen ungenügender Daten\n",
+ "## 5. Remove insufficient data\n",
"\n",
- "Um Daten von schlechter Qualität zu entfernen, entfernen wir zunächst Duplikate und fehlende Einträge."
+ "To remove data of poor quality, we first remove duplicates and missing entries."
]
},
{
diff --git a/docs/clean-prep/hypothesis.ipynb b/docs/clean-prep/hypothesis.ipynb
index b9331aca..fea8f1bf 100644
--- a/docs/clean-prep/hypothesis.ipynb
+++ b/docs/clean-prep/hypothesis.ipynb
@@ -4,16 +4,16 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "# Hypothesis: _Property_ -basiertes Testen\n",
+ "# Hypothesis: property based testing\n",
"\n",
- "In diesem Notebook verwenden wir _Property_ -basierte Tests, um Probleme in unserem Code zu finden. [Hypothesis](https://hypothesis.readthedocs.io/en/latest/) ist eine Bibliothek, die Haskells [Quickcheck](https://hackage.haskell.org/package/QuickCheck) ähnelt. Später lernen wir sie zusammen mit anderen Testbibliotheken noch genauer kennen: [Hypothesis](https://jupyter-tutorial.readthedocs.io/de/latest/productive/testing/hypothesis.html). Hypothesis kann auch Mock-Objekte und Tests für Numpy-Datentypen bereitstellen."
+ "In this notebook we use property based tests to find problems in our code. [Hypothesis](https://hypothesis.readthedocs.io/en/latest/) is a library similar to Haskell’s [Quickcheck](https://hackage.haskell.org/package/QuickCheck). Later we will get to know it more closely together with other test libraries: [Hypothesis](../productive/testing/hypothesis.ipynb). Hypothesis can also provide mock objects and tests for Numpy data types."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "## 1. Importe"
+ "## 1. Imports"
]
},
{
@@ -31,7 +31,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "## 2. Bereich finden"
+ "## 2. Find range"
]
},
{
@@ -48,7 +48,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "## 3. Test mit `strategies` und `given`"
+ "## 3. Test with `strategies` and `given`"
]
},
{
@@ -101,7 +101,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "## 3. Test korrigieren mit `>=`"
+ "## 3. Correct the test with `>=`"
]
},
{
@@ -130,7 +130,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "## 4. Gegen Reguläre Ausdrücke prüfen"
+ "## 4. Check against regular expressions"
]
},
{
diff --git a/docs/clean-prep/index.rst b/docs/clean-prep/index.rst
index 0c85de31..54d9e340 100644
--- a/docs/clean-prep/index.rst
+++ b/docs/clean-prep/index.rst
@@ -1,11 +1,9 @@
-Daten bereinigen und validieren
-===============================
+Clean up and validate data
+==========================
-Im Folgenden wollen wir Euch einen praktischen Überblick über Bibliotheken und
-Methoden zur `Datenbereinigung
-`_ und -validierung mit Python
-geben. Dabei können wir aktuell nicht intensiv auf einzelne Bibliotheken und
-Werkzeuge eingehen sondern nur eine kurze Einführung geben.
+In this chapter we want to give you a practical overview of libraries and
+methods for `data cleansing `_ and
+validation with Python.
.. seealso::
diff --git a/docs/clean-prep/nulls.ipynb b/docs/clean-prep/nulls.ipynb
index 6f1d437b..35bf816d 100644
--- a/docs/clean-prep/nulls.ipynb
+++ b/docs/clean-prep/nulls.ipynb
@@ -4,11 +4,11 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "# Verwalten von Nullen mit Pandas\n",
+ "# Managing missing data with pandas\n",
"\n",
- "In diesem Notebook werden einige Möglichkeiten zum Verwalten von Nullen mithilfe von Pandas DataFrames vorgestellt. Weitere Informationen dazu findet Ihr in der Dokumentation des Pandas: [Working with missing data](https://pandas.pydata.org/pandas-docs/stable/user_guide/missing_data.html).\n",
+ "This notebook introduces a few ways to manage nulls using panda’s DataFrames. Further information can be found in the documentation of the panda: [Working with missing data](https://pandas.pydata.org/pandas-docs/stable/user_guide/missing_data.html).\n",
"\n",
- "## Siehe auch:\n",
+ "## See also:\n",
"\n",
"* [Missing data cookbook](https://pandas.pydata.org/pandas-docs/stable/user_guide/cookbook.html#cookbook-missing-data)"
]
@@ -36,7 +36,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "## Prüfen der Daten"
+ "## Check the data"
]
},
{
@@ -211,7 +211,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "## Entfernen aller Nullwerte (einschließlich des Hinweises `n/a`)"
+ "## Remove all null values (including the note `n/a`)"
]
},
{
@@ -226,7 +226,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "### Testen, ob wir `dropna` verwenden können"
+ "### Test if we can use `dropna`"
]
},
{
@@ -293,7 +293,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "### Finden aller Spalten, in denen alle Daten vorhanden sind"
+ "### Find all columns in which all data is present"
]
},
{
@@ -355,7 +355,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "### Finden aller Spalten, in denen Daten fehlen"
+ "### Finding all columns that are missing data"
]
},
{
@@ -437,7 +437,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "## Fehlende Daten durch Mehrheitswerte ersetzen"
+ "## Replace missing data with majority values"
]
},
{
@@ -526,7 +526,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "### Beispiel für die fehlenden Temperaturwerte"
+ "### Example for the missing temperature values"
]
},
{
diff --git a/docs/clean-prep/scikit-learn-reprocessing.ipynb b/docs/clean-prep/scikit-learn-reprocessing.ipynb
index 65a3a7d9..16ca15fe 100644
--- a/docs/clean-prep/scikit-learn-reprocessing.ipynb
+++ b/docs/clean-prep/scikit-learn-reprocessing.ipynb
@@ -4,7 +4,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "# Scikit Learn Preprocessing"
+ "# Scikit Learn preprocessing"
]
},
{
@@ -33,7 +33,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "## Überprüfen der Datenqualität"
+ "## Checking the data quality"
]
},
{
@@ -202,7 +202,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "## Fehlenden Werten den Mittelwert zuschreiben"
+ "## Assign the mean to missing values"
]
},
{
@@ -395,7 +395,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "## Temperaturwerte skalieren"
+ "## Scaling temperature values"
]
},
{
@@ -436,7 +436,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "## Skalieren mit dem `MinMaxScaler`"
+ "## Scaling with the `MinMaxScaler`"
]
},
{
diff --git a/docs/clean-prep/string-matching.ipynb b/docs/clean-prep/string-matching.ipynb
index 1c8808a2..26c8e0c0 100644
--- a/docs/clean-prep/string-matching.ipynb
+++ b/docs/clean-prep/string-matching.ipynb
@@ -4,9 +4,9 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "# String-Matching\n",
+ "# String matching\n",
"\n",
- "In diesem Notebook verwenden wir die beliebte String-Matching-Bibliothek [fuzzywuzzy](https://github.com/seatgeek/fuzzywuzzy). Weitere Informationen zu den verschiedenen verfügbaren Methoden und ihren Unterschieden findet Ihr im Blogbeitrag [FuzzyWuzzy: Fuzzy String Matching in Python](https://chairnerd.seatgeek.com/fuzzywuzzy-fuzzy-string-matching-in-python/)."
+ "In this notebook we use the popular string matching library [fuzzywuzzy](https://github.com/seatgeek/fuzzywuzzy). For more information on the different methods available and their differences, see the blog post [FuzzyWuzzy: Fuzzy String Matching in Python](https://chairnerd.seatgeek.com/fuzzywuzzy-fuzzy-string-matching-in-python/)."
]
},
{
@@ -48,9 +48,9 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "## String-Ähnlichkeit\n",
+ "## String similarity\n",
"\n",
- "Die Übereinstimmung der erstem beiden Strings `'Berlin, Germany'` und `'Berlin, Deutschland'` scheint gering:"
+ "The match of the first two strings and seems low: `'Berlin, Germany'` and `'Berlin, Deutschland'`:"
]
},
{
@@ -77,9 +77,9 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "## Partielle String-Ähnlichkeit\n",
+ "## Partial string similarity\n",
"\n",
- "Inkonsistente Teilzeichenfolgen sind ein häufiges Problem. Um dies zu umgehen, verwendet fuzzywuzzy eine Heuristik, die als _best partial_ bezeichnet wird."
+ "Inconsistent substrings are a common problem. To get around this, fuzzywuzzy uses a heuristic called _best partial_."
]
},
{
@@ -106,9 +106,9 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "## Token-Sortierung\n",
+ "## Token sorting\n",
"\n",
- "Bei der Token-Sortierung wird die betreffende Zeichenfolge mit einem Token versehen, die Token alphabetisch sortiert und anschließend wieder zu einer Zeichenfolge zusammengefügt, beispielsweise:"
+ "With token sorting, the relevant character sequence is provided with a token, the tokens are sorted alphabetically and then reassembled into a character sequence, for example:"
]
},
{
@@ -155,7 +155,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "## Weitere Informationen"
+ "## Additional Information"
]
},
{
@@ -171,7 +171,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "## Extrahieren aus einer Liste"
+ "## Extract from a list"
]
},
{
@@ -276,9 +276,9 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "## Bekannte Ports\n",
+ "## Known ports\n",
"\n",
- "FuzzyWuzzy wird auch in andere Sprachen portiert! Hier einige bekannte Ports:\n",
+ "FuzzyWuzzy is also ported to other languages. Here are some known ports:\n",
"\n",
"* Java: [xpresso](https://github.com/WantedTechnologies/xpresso)\n",
"* Java: [xdrop fuzzywuzzy](https://github.com/xdrop/fuzzywuzzy)\n",
diff --git a/docs/clean-prep/tdda.ipynb b/docs/clean-prep/tdda.ipynb
index 45832505..75feb69c 100644
--- a/docs/clean-prep/tdda.ipynb
+++ b/docs/clean-prep/tdda.ipynb
@@ -6,14 +6,14 @@
"source": [
"# TDDA: Test-Driven Data Analysis\n",
"\n",
- "In diesem Notebook werden wir eine Python-Bibliothek [TDDA](https://github.com/tdda/tdda) genauer anschauen, die Dateneingaben (wie NumPy-Arrays oder Pandas DataFrames) verwendet und eine Reihe von _Constraints_ um diese herum erstellt. Ihr könnt dann Eure _Constraints_ speichern (JSON-Ausgabe) und neue Daten anhand der beobachteten _Constraints_ testen."
+ "In this notebook we will take a closer look at the Python [TDDA](https://github.com/tdda/tdda) library that takes data inputs (such as NumPy arrays or Pandas DataFrames) and creates a series of constraints around them. You can then save your constraints (JSON output) and test new data based on the observed constraints."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "## 1. Importe"
+ "## 1. Imports"
]
},
{
@@ -41,7 +41,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "## 2. Daten überprüfen"
+ "## 2. Check data"
]
},
{
@@ -250,7 +250,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "## 3. Erstellen eines _constraint_-Objekt mit `discover_constraints`"
+ "## 3. Create a constraint object with `discover_constraints`"
]
},
{
@@ -313,7 +313,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "## 4. Schreiben der _Constraints_ in eine Datei"
+ "## 4. Writing the constraints to a file"
]
},
{
@@ -413,7 +413,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "## 5. Überprüfen von Dataframes mit `verify_df`"
+ "## 5. Checking dataframes with `verify_df`"
]
},
{
diff --git a/docs/clean-prep/voluptuous.ipynb b/docs/clean-prep/voluptuous.ipynb
index e76cb89e..9744ec83 100644
--- a/docs/clean-prep/voluptuous.ipynb
+++ b/docs/clean-prep/voluptuous.ipynb
@@ -4,16 +4,16 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "# Datenvalidierung mit Voluptuous (Schemadefinitionen)\n",
+ "# Data validation with voluptuous (schema definitions)\n",
"\n",
- "In diesem Notebook verwenden wir [Voluptuous](https://github.com/alecthomas/voluptuous), um Schemata für unsere Daten zu definieren. Wir können dann die Schemaprüfung an verschiedenen Stellen unserer Bereinigung verwenden, um sicherzustellen, dass wir die Kriterien erfüllen. Schließllich können wir Ausnahmen für die Schemaüberprüfung verwenden, um unreine oder ungültige Daten zu markieren, beiseite zu legen oder zu entfernen."
+ "In this notebook we use [Voluptuous](https://github.com/alecthomas/voluptuous), to define schemas for our data. We can then use the schema checker at various points in our cleanup to make sure we meet the criteria. Finally, we can use schema checking exceptions to mark, set aside, or remove impure or invalid data."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "## 1. Importe"
+ "## 1. Imports"
]
},
{
@@ -50,7 +50,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "## 3. Beispieldaten lesen"
+ "## 3. Read sample data"
]
},
{
@@ -66,7 +66,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "## 4. Daten untersuchen"
+ "## 4. Examine data"
]
},
{
@@ -215,7 +215,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "## 5. Schema definieren"
+ "## 5. Define the scheme"
]
},
{
@@ -366,18 +366,18 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "Aktuell wissen wir jedoch noch nicht, ob\n",
+ "However, we don’t currently know whether\n",
"\n",
- "* wir ein falsch definiertes Schema haben\n",
- "* möglicherweise negative Werte zurückgegeben oder falsch markiert werden\n",
- "* höhere Werte kombinierte Einkäufe oder Sonderverkäufe sind"
+ "* we have an incorrectly defined scheme\n",
+ "* negative values may be returned or incorrectly marked\n",
+ "* higher values are combined purchases or special sales"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "## 6. Hinzufügen einer benutzerdefinierten Validierung"
+ "## 6. Add a custom validation"
]
},
{
@@ -441,7 +441,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "## 7. Gültige Datumsstrukturen sind noch keine gültigen Daten"
+ "## 7. Valid date structures are not yet valid dates"
]
},
{
diff --git a/docs/conf.py b/docs/conf.py
index b9e65848..b4ec5439 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -22,7 +22,7 @@
author = "Veit Schiele"
# The full version, including alpha/beta/rc tags
-release = "0.7.0"
+release = "0.8.0"
# -- General configuration ---------------------------------------------------
@@ -50,7 +50,7 @@
#
# This is also used if you do content translation via gettext catalogs.
# Usually you set "language" from the command line for these cases.
-language = "de"
+language = "en"
# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
@@ -75,7 +75,7 @@
# documentation.
#
html_theme_options = {
- "description": "Materialen für die Cusy-Schulungen zum Aufbau und zur Nutzung einer Forschungsinfrastruktur auf Basis von Jupyter Notebooks.",
+ "description": "Training materials for the Cusy training courses on setting up and using a research infrastructure based on Jupyter notebooks.",
"fixed_sidebar": False,
"show_powered_by": False,
"github_user": "veit",
@@ -90,7 +90,7 @@
html_sidebars = {"**": ["about.html", "searchbox.html", "navigation.html"]}
# Change default HTML title
-html_title = "Jupyter Tutorial 0.7.0"
+html_title = "Jupyter Tutorial 0.8.0"
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
diff --git a/docs/data-rw/beautifulsoup.ipynb b/docs/data-rw/beautifulsoup.ipynb
index 70e920c6..1b5319c0 100644
--- a/docs/data-rw/beautifulsoup.ipynb
+++ b/docs/data-rw/beautifulsoup.ipynb
@@ -24,16 +24,16 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "1. Installieren:\n",
+ "1. Install:\n",
"\n",
- " Mit [Spack](https://jupyter-tutorial.readthedocs.io/de/latest/productive/envs/spack/index.html) könnt ihr BeautifulSoup in eurem Kernel bereitstellen:\n",
+ " With [Spack](../productive/envs/spack/index.rst) you can provide BeautifulSoup in your kernel:\n",
"\n",
" ``` bash\n",
"$ spack env activate python-374\n",
"$ spack install py-beautifulsoup4 ^python@3.7.4%gcc@9.1.0\n",
" ```\n",
"\n",
- " Alternativ könnt ihr BeautifulSoup auch mit anderen Paketmanagern installieren, z.B.\n",
+ " Alternatively, you can install BeautifulSoup with other package managers, e.g.\n",
"\n",
" ``` bash\n",
"$ pipenv install beautifulsoup4\n",
@@ -44,14 +44,14 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "2. Mit `r.content` können wir uns das HTML der Seite ausgeben lassen."
+ "2. With `r.content` we can display the HTML of the page."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "3. Als nächstes müssen wir diesen String mit BeautifulSoup in eine Python-Darstellung der Seite zerlegen:"
+ "3. Next we need to decompose this string into a Python representation of the page using BeautifulSoup:"
]
},
{
@@ -68,7 +68,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "4. Um den Code zu strukturieren, erstellen wir eine neue Funktion `get_dom` (**D**ocument **O**bject **M**odel), die den gesamten vorhergehenden Code einschließt:"
+ "4. To structure the code, let’s create a new function `get_dom` (**D**ocument **O**bject **M**odel) that includes all of the preceding code:"
]
},
{
@@ -87,10 +87,9 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "Das Herausfiltern einzelner Elemente kann z.B. über CSS-Selektoren erfolgen. Diese können in einer Website ermittelt werden, indem ihr z.B. in Firefox mit der rechten Maustaste auf eine der Tabellenzellen in der ersten Spalte der Tabelle klickt. Im sich nun öffnenden *Inspector* könnt ihr das Element erneut mit der rechten Maustaste anklicken und dann *Copy → CSS Selector* auswählen. In der Zwischenablage befindet sich dann z.B.\n",
- "`table.wikitable:nth-child(13) > tbody:nth-child(2) > tr:nth-child(1)`. Diesen *CSS-Selector* bereinigen wir nun, da wir weder nach dem 13. Kindelement der Tabelle `table.wikitable` noch dem 2. Kindelement in `tbody` filtern wollen sondern nur nach der 1. Spalte innerhalb von `tbody`.\n",
+ "The filtering out of individual elements can be done e.g. via CSS selectors. These can be determined in a website by e.g. Firefox, right-click on one of the table cells in the first column of the table. In the *Inspector* that opens you can click the element again with the right mouse button and then select *Copy → CSS Selector*. The clipboard then contains e.g. `table.wikitable:nth-child(13) > tbody:nth-child(2) > tr:nth-child(1)`. We are now cleaning up this *CSS-Selector* because we do not want to filter for the 13th child element of table `table.wikitable` or the 2nd child element in `tbody`, but only for the 1st column within `tbody`.\n",
"\n",
- "Schließlich lassen wir uns mit `limit=3` in diesem Notebook exemplarisch nur die ersten drei Ergebnisse anzeigen:"
+ "Finally, with `limit=3` in this notebook, we can only display the first three results as an example:"
]
},
{
@@ -115,7 +114,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "Wir wollen jedoch nicht den gesamten HTML-Link, sondern nur dessen Textinnhalt:"
+ "However, we don’t want the entire HTML link, just its text content:"
]
},
{
@@ -142,7 +141,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "## Siehe auch:\n",
+ "## See also:\n",
"\n",
"* [Beautiful Soup Documentation](https://www.crummy.com/software/BeautifulSoup/bs4/doc/)"
]
diff --git a/docs/data-rw/glossary.rst b/docs/data-rw/glossary.rst
index 845e0b21..836bd09e 100644
--- a/docs/data-rw/glossary.rst
+++ b/docs/data-rw/glossary.rst
@@ -1,106 +1,100 @@
-Glossar
-=======
+Glossary
+========
.. glossary::
ACID
- ACID ist ein Akronym für **A**\tomicity **C**\onsistency **I**\solation
- **D**\urability. Sie gelten als Voraussetzung für die Verlässlichkeit
- von Datenbanktransaktionen.
-
- Atomarität
- Eine Transaktion ist eine Folge von Datenbankoperationen, die
- entweder vollständig oder gar nicht ausgeführt werden.
- Konsistenz
- Transaktion, die nach Beendigung einen konsistenten Zustand
- hinterlässt. Dabei werden vor Abschluss der Transaktion die im
- Datenbankschema definierten Integritätsbedingungen überprüft.
+ ACID is an acronym for **A**\tomicity **C**\onsistency **I**\solation
+ **D**\urability. They are a prerequisite for the reliability of database
+ transactions.
+
+ Atomicity
+ A transaction is a series of database operations that are either
+ carried out completely or not at all.
+ Consistency
+ Transaction that leaves a consistent state after completion. The
+ integrity conditions defined in the database schema are checked
+ before the transaction is completed.
Isolation
- Nebenläufige Transaktionen dürfen sich nicht beeinflussen.
- Realisiert wird dies üblicherweise mit :term:`Locking`, das die
- Nebenläufigkeit einschränkt.
+ Concurrent transactions must not influence each other. This is
+ usually achieved with :term:`Locking`, which restricts the
+ concurrency.
Durability
- Daten müssen nach erfolgreicher Transaktion dauerhaft in der
- Datenbankgespeichert bleiben und kann z.B. durch das Schreiben
- eines Transaktionslogs sichergestellt werden.
+ After a successful transaction, data must be permanently stored in
+ the database and can be secured, for example, by writing a
+ transaction log.
BASE
- BASE ist ein Akronym für **B**\asically **A**\vailable, **S**\oft State,
- **E**\ventually Consistent und als Gegenbegriff zu :term:`ACID`
- entstanden.
+ BASE is an acronym for **B**\asically **A**\vailable, **S**\oft State,
+ **E**\ventually Consistent and originated as the opposite of
+ :term:`ACID`.
- Dabei wird ein sehr optimistischer Konsistenzbegriff verwendet, der ohne
- :term:`Locking` auskommt. Locks sind in mehrerlei Hinsicht
- problematisch, da Zugriffe nicht möglich sind, solange Datensätze durch
- andere Transaktionen gesperrt sind. Zudem ist die Übereinkunft zum
- Setzen eines Locks bereits sehr aufwändig.
+ A very optimistic concept of consistency is used that does not require
+ :term:`Locking`. Locks are problematic in several ways, since access is
+ not possible as long as data records are locked by other transactions.
+ In addition, the agreement to set a lock is already very complex.
- Konsistenz der Daten wird als ein Zustand betrachtet, der irgendwann
- erreicht werden kann. Dies ist die Idee der :term:`Eventual
- Consistency`.
+ Data consistency is seen as a state that can be achieved at some point.
+ This is the idea of :term:`Eventual Consistency`.
- Konkurrierende Zugriffe werden bei BASE durch :term:`MVCC –
- Multiversion Concurrency Control` vermieden. Es gibt jedoch eine große
- Bandbreite von Lösungen für die verschiedenen verteilten
- Datenbanksysteme:
+ With BASE, competing access is avoided through :term:`MVCC –
+ Multiversion Concurrency Control` However, there is a wide range of
+ solutions for the various distributed database systems:
* Causal Consistency
- ist der Konsistenz in :term:`ACID` vergleichbar.
+ is comparable to the consistency in :term:`ACID`.
* Read Your Writes
* Session Consistency
* Monotonic Read Consistency
* Monotonic Write Consistency
- CAP-Theorem
- CAP ist ein Akronym für **C**\onsistency, **A**\vailability
- (Verfügbarkeit) und **P**\artition Tolerance (Ausfalltoleranz). Die
- Erkenntnisse des CAP-Theorems spielen bei der Auswahl eines
- verteilten Datenbanksystems eine zentrale Rolle.
+ CAP theorem
+ CAP is an acronym for **C**\onsistency, **A**\vailability and
+ **P**\artition Tolerance. The findings of the CAP theorem play a central
+ role in the selection of a distributed database system.
- Das CAP-Theorem besagt, dass in verteilen Systemen die drei
- Anforderungen Konsistenz, Verfügbarkeit und Ausfalltoleranz nicht
- vollständig vereinbar und nur maximal zwei von dreien erreichbar sind.
- Für jede Anwendung muss daher individuell entschieden werden, ob eine
- CA-, CP-, AP-Applikation realisiert werden soll.
+ The CAP theorem states that in distributed systems the three
+ requirements of consistency, availability and failure tolerance are not
+ fully compatible and only a maximum of two out of three can be achieved.
+ Therefore it must be decided individually for each application whether a
+ CA, CP or AP application should be implemented.
Cassandra
- Cassandra ist ein :doc:`nosql/column-oriented-db`, und wurde
- ursprünglich von Facebook entwickelt um Suchen im E-Mail-Engang zu
- optimieren. Heute wird es unter dem Dach der `Apache Software Foundation
- `_ weiterentwickelt.
-
- Das Datenmodell von Cassandra hat weder eine logische Struktur noch ein
- Schema. Für die Modellierung wird empfohlen *«First write your queries,
- then model your data»*. Meist wird dann eine *Column Family* für jede
- erwartete Anfrage erstellt. Dabei werden die Daten zwar denormalisiert,
- aber jede *Column Family* antwortet auf eine bestimmte Art von Anfragen.
-
- In Cassandra kann für jede Anfrage die Konsistenz angegeben werden. Das
- ermöglicht, dass spezifische Anfragen sehr konsistent sein können
- während andere die Konsistenz der Geschwindigkeit opfern. Für die
- Schreibkonsistenz gibt es z.B. die folgenden vier Ebenen:
+ Cassandra is a :doc:`nosql/column-oriented-db`, and was originally
+ developed by Facebook to optimise searches in email. Today it is further
+ developed under the umbrella of the `Apache Software Foundation
+ `_.
+
+ Cassandra's data model has neither a logical structure nor a schema. For
+ the modeling it is recommended *«First write your queries then model
+ your data»*. Then usually a *Column Family* is created for each expected
+ request. The data is denormalised, but each column family responds to a
+ specific type of query.
+
+ In Cassandra, the consistency can be specified for each request. This
+ allows specific requests to be very consistent while others sacrifice
+ consistency for speed. There are, for example, the following four levels
+ for write consistency:
ANY
- gewährleistet, dass die Daten in mindestens einem Knoten gespeichert
- sind.
+ ensures that the data is stored in at least one node.
ONE
- gewährleistet, dass die Daten im Commit-Log von mindestens einer
- Replica gespeichert sind.
+ ensures that the data is stored in the commit log of at least one
+ replica.
QUORUM
- gewährleistet, dass die Daten in einen Quorum von Replicas
- gespeichert sind.
+ ensures that the data is stored in a quorum of replicas.
ALL
- gewährleistet, dass die Daten auf alle Replicas gespeichert sind.
+ ensures that the data is saved on all replicas.
- Cassandra stellt zwei verschiedene APIs zur Verfügung: `Thrift
- `_ und `CQL (Cassandra Query Language)
+ Cassandra provides two different APIs: `Thrift
+ `_ and `CQL (Cassandra Query Language)
`_.
Column Family
- Column Families entsprechen Tabellen in relationalen Datenbanken. Sie
- gruppieren Spalten gleichen oder ähnlichen Inhalts, z.B.:
+ Column families correspond to tables in relational databases. They group
+ columns with the same or similar content, e.g.
.. code-block:: javascript
@@ -116,196 +110,186 @@ Glossar
}
}
+ Consistent hash function
+ Consistent hash functions minimise the number of reallocations, since
+ not all keys have to be reallocated when a change occurs, only the size
+ of a hash table is changed.
+
+ Consistency
+ The state of a database is said to be consistent if the stored data
+ meets all requirements for :term:`Semantic integrity`.
+
CouchDB
- CouchDB ein Akronym für **C**\luster **o**\f **u**\nreliable
- **c**\ommodity **h**\ardware **D**\ata **B**\ase. Dabei handelt es sich
- um ein :doc:`nosql/document-oriented-db`.
+ CouchDB an acronym for **C**\luster **o**\f **u**\nreliable
+ **c**\ommodity **h**\ardware **D**\ata **B**\ase. This is a
+ :doc:`nosql/document-oriented-db`.
Eventual Consistency
- *»Konsistenz als Zustandsübergang, der irgendwann erreicht wird.«*
+ *«Consistency as a state transition that is reached at some point.»*
- Der Begriff wurde für :term:`BASE` als Alternative zu :term:`ACID`
- entwickelt.
+ The term was developed for :term:`BASE` as an alternative to
+ :term:`ACID`.
Graph traversal
- Graph traversal wird meist zur Suche von Knoten verwendet. Es gibt
- verschiedene Algorithmen für solche Suchanfragen in einem Graphen, die
- sich grob einteilen lassen in
+ Graph traversal is mostly used to find nodes. There are different
+ algorithms for such search queries in a graph, which can be roughly
+ divided into
- * Breiten- und Tiefensuche (engl: breadth-first search, BFS und
- depth-first search, DFS)
+ * Breadth-first search, BFS and depth-first search, DFS
- Die Breitensuche beginnt mit allen Nachbarknoten des Startknotens.
- Im nächsten Schritt werden dann die Nachbarn der Nachbarn durchsucht.
- Die Pfadlänge erhöht sich mit jeder Iteration.
+ The breadth-first search begins with all neighboring nodes of the start node.
+ In the next step, the neighbors of the neighbors are then searched. The path
+ length increases with each iteration.
- Die Tiefensuche verfolgt einen Pfad solange, bis ein Knoten ohne
- ausgehende Kanten gefunden wird. Der Pfad wird anschließend
- zurückverfolgt bis zu einem Knoten, der noch weitere ausgehende Kanten
- hat. Dort wird die Suche dann fortgesetzt.
+ The depth-first search follows a path until a node with no outgoing edges is
+ found. The path is then traced back to a node that has further outgoing edges.
+ The search will then continue there.
- * Algorithmische Traversierung
+ * Algorithmic traversal
- Beispiele für die algorithmische Traversierung sind
+ Examples of algorithmic traversal are
- * Hamiltonweg (Traveling Salesman)
- * Eulerweg
- * Dijkstra-Algorithmus
+ * Hamiltonian path (traveling salesman)
+ * Eulerian path
+ * Dijkstra’s algorithm
- * Randomisierte Traversierung
+ * Randomised traversal
- Der Graph wird nicht nach einem bestimmten Schema durchlaufen, sondern
- der nächste Knoten wird zufällig ausgewählt. Dadurch kann vor allem bei
- großen Graphen wesentlich schneller ein Suchergebnis präsentieren, dieses
- ist jedoch nicht immer das beste.
+ The graph is not run through according to a certain scheme, but the next node
+ is selected at random. This allows a search result to be presented much
+ faster, especially with large graphs, but this is not always the best.
- Graphenmodell
- Ein Graph besteht aus einer Menge an Knoten und Kanten. Graphen werden
- genutzt, um eine Vielfalt an Problemen durch Knoten, Kanten und ihren
- Beziehungen darzustellen, z.B. in Navigationssystemen, in denen die Wege
- in Form von Graphen gespeichert werden.
+ Graph model
+ A graph consists of a number of nodes and edges. Graphs are used to
+ represent a variety of problems through nodes, edges and their
+ relationships, for example in navigation systems in which the paths are
+ stored in the form of graphs.
- Graphpartitionierung
- Mit Graphpartitionierung werden Graphen in kleinere Teilgraphen
- unterteilt. Dabei gibt es jedoch keine mathematisch exakte Methode, um
- die Anzahl der durchschnittenen Kanten zu minimieren, sondern nur ein
- paar heuristische Algorithmen, z.B. Clustering-Algorithmen, die stark
- vernetzte Teilgraphen zu abstrakten Knoten zusammenziehen.
+ Graph partitioning
+ With graph partitioning, graphs are divided into smaller subgraphs.
+ However, there is no mathematically exact method to minimise the number
+ of intersected edges, but only a few heuristic algorithms, e.g.
+ clustering algorithms, which combine strongly networked subgraphs to
+ abstract nodes.
- Von sich überlappenden Partitionierung spricht man bei Graphen, die
- nicht komplett geteilt werden können und in mehreren Teilgraphen
- existieren.
+ One speaks of overlapping partitioning in the case of graphs that cannot
+ be completely divided and exist in several subgraphs.
HBase
- HBase ist ein :doc:`nosql/column-oriented-db`, welches auf verteilten
- Dateisystemen aufbaut und für real-time-Zugriffe auf großen
- Datenbeständen konzipiert ist.
+ HBase is a :doc:`nosql/column-oriented-db`, which is based on
+ distributed file systems and is designed for real-time access to large
+ databases.
Hypertable
- Hypertable ist ein :doc:`nosql/column-oriented-db` und auf
- verteilten Dateisystemen basiert. Das Datenmodell ist das einer
- mehrdimensionalen Tabelle, die mit Schlüsseln durchsucht werden
- kann. Die erste Dimension ist der sog. *row-key*, die zweite die
- :term:`Column Family` die dritte Dimension der *Column Qualifier*
- und die vierte Dimension die Zeit.
-
- Konsistente Hashfunktion
- Konsistente Hashfunktionen minimieren die Anzahl der Neuzuordnungen, da
- bei einer Änderung nicht alle Schlüssel neu zugeordnet werden müssen
- sondern nur die Größe einer Hash-Tabelle geändert wird.
-
- Konsistenz
- Der Zustand einer Datenbank wird als konsistent bezeichnet, wenn die
- gespeicherten Daten alle Anforderungen for :term:`Semantische
- Integrität` erfüllen.
+ Hypertable is a :doc:`nosql/column-oriented-db` and is based on
+ distributed file systems. The data model is that of a multi-dimensional
+ table that can be searched using keys. The first dimension is the
+ so-called *row key*, the second is the :term:`Column family`, the third
+ dimension is the *column qualifier* and the fourth dimension is time.
+
+ Key/value pair
+ A value is always assigned to a specific key, which can consist of a
+ structured or arbitrary character string. These keys can be divided into
+ namespaces and databases. In addition to strings, the values can also
+ contain lists, sets or hashes.
Locking
- Als Locking bezeichnet man das Sperren von Daten für nebenläufige
- Transaktionen.
-
- Je nach Art des Zugriffs gibt es unterschiedliche Lock-Verfahren:
-
- Optimistic Concurrency
- Optimistic Concurrency, auch Optimistisches Locking geht davon aus,
- dass wenige schreibende Zugriffe auf der Datenbank stattfinden und
- lesende Zugriffe keine Sperre auslösen. Bei Änderungen wird dann
- zunächst geprüft, ob der Zeitstempel seit dem Lesen der Daten
- unverändert geblieben ist.
- Pessimistic Locking
- Pessimistic Locking geht von vielen Schreibzugriffen auf die
- Datenbank aus. Daher sperren auch lesende Zugriffe die Daten werden
- erst wieder freigegeben, wenn die Änderungen gespeichert sind.
+ Locking is the term used to describe the blocking of data for concurrent
+ transactions.
+
+ There are different lock procedures, depending on the type of access:
+
+ Optimistic concurrency
+ Optimistic concurrency, also called optimistic locking, assumes that
+ there are few write accesses to the database and read accesses do
+ not trigger a lock. In the event of changes, a check is first made
+ to determine whether the time stamp has remained unchanged since the
+ data was read.
+ Pessimistic locking
+ Pessimistic locking assumes a lot of write accesses to the database.
+ Read access is therefore also blocked. The data is only released
+ again when the changes have been saved.
Two-phase locking (2PL)
- Das Zwei-Phasen-Sperrprotokoll unterscheidet zwei Phasen von
- Transaktionen:
+ The two-phase locking protocol distinguishes between two phases of
+ transactions:
- #. Die Wachstumsphase, in welcher Sperren nur gesetzt, aber nicht
- freigegeben werden dürfen.
- #. Die Schrumpfungsphase, in welcher Sperren nur freigegeben, aber
- nicht angefordert werden dürfen.
+ #. The growth phase in which locks can only be set but not released.
+ #. The shrinkage phase, in which locks can only be released but not
+ requested.
- Das Zwei-Phasen-Sperrprotokoll kennt dabei drei Sperrzustände:
+ The two-phase lock protocol knows three lock states:
- SLOCK, Shared Lock oder Read-Lock
- wird bei lesendem Zugriff auf Daten gesetzt
- XLOCK, Exclusive Lock oder Write-Lock
- wird bei schreibendem Zugriff auf Daten gesetzt
+ SLOCK, shared lock or read lock
+ is set with read access to data
+ XLOCK, exclusive lock or write lock
+ is set with write access to data
UNLOCK
- hebt die Sperren SLOCK und XLOCK auf.
+ removes the locks SLOCK and XLOCK.
MapReduce
- MapReduce ist ein von Google Inc. 2004 eingeführtes Framework, das für
- die nebenläufige Berechnungen enorm großer Datenmengen auf
- Computerclustern verwendet wird. Es wurde durch die, in der funktionalen
- Programmierung häufig verwendeten Funktionen *map* und *reduce*
- inspiriert auch wenn die Semantik von diesen etwas abweicht.
+ MapReduce is a framework introduced by Google Inc. in 2004, which is
+ used for the concurrent computations of enormous amounts of data on
+ computer clusters. It was inspired by the *map* and *reduce* functions,
+ which are often used in functional programming, even if the semantics
+ deviate slightly from them.
MongoDB
- MongoDB ist eine schemafrei :doc:`nosql/document-oriented-db`,
- die Dokumente im `BSON `_-Format verwaltet.
+ MongoDB is a schema-free :doc:`nosql/document-oriented-db`,
+ that manages documents in `BSON `_ format.
MVCC – Multiversion Concurrency Control
- MVCC werden kontrolliert konkurrierende Zugriffe auf Datensätze (Lesen,
- Einfügen, Ändern, Löschen) durch verschiedene, unveränderliche Versionen
- dieser Datensätze. Die verschiedenen Versionen werden in eine zeitliche
- Reihenfolge gebracht, indem jede Version auf ihre Vorgängerversion
- verweist. MVCC hat sich gerade bei :doc:`nosql/index` zu einer zentralen
- Basistechnologie entwickelt, die es ermöglicht, konkurrierende Zugriffe
- auch ohne das :term:`Locking` von Datensätzen zu koordinieren.
+ MVCC controls concurrent accesses to data records (read, insert, change,
+ delete) by different, unchangeable versions of these data records. The
+ various versions are arranged in a chronological order, with each
+ version referring to its previous version. MVCC has developed into a
+ central basic technology for NoSQL databases in particular, which makes
+ it possible to coordinate competing accesses even without locking data
+ records.
Paxos
- Paxos ist eine Familie von Protokollen zur Herstellung von Konsens in
- einem Netzwerk unzuverlässiger oder fehlbarer Prozessoren.
+ Paxos is a family of protocols for building consensus on a network of
+ unreliable or fallible processors.
- Property-Graph-Modell (PGM)
- Knoten und Kanten bestehen aus Objekten mit darin eingebetteten
- Eigenschaften (Properties). Es wird nicht nur ein Wert (Label) in einer
- Kante bzw. einem Knoten gespeichert, sondern ein
- :term:`Schlüssel/Wert-Paar`.
+ Property graph model (PGM)
+ Nodes and edges consist of objects with properties embedded in them. Not
+ only a value (label) is stored in an edge or a node, but a
+ :term:`Key/value pair`.
Riak
- Im Wesentlichen ist Riak ein dezentraler :term:`Schlüssel/Wert-Paar` mit
- einer flexiblen :term:`MapReduce`-Engine.
+ In essence, Riak is a decentralised :term:`Key/value pair` with a
+ flexible :term:`MapReduce` engine.
Redis
- Redis ist ein :doc:`nosql/key-value-store`, die üblicherweise alle
- Daten im RAM speichert.
-
- Schlüssel/Wert-Paar
- Ein Wert ist immer einem bestimmten Schlüssel zugeordnet, der aus einer
- strukturierten oder willkürlichen Zeichenkette bestehen kann. Diese
- Schlüssel können in Namensräume und Datenbanken aufgeteilt werden. Die
- Werte können neben Strings auch Listen, Sets oder Hashes enthalten.
-
- Semantische Integrität
- Semantische Integrität ist immer dann gegeben, wenn die Eingaben richtig
- und in sich stimmig sind. Dann wird auch von konsistenten Daten
- gesprochen. Ist dies nicht der Fall, sind die Daten inkonsistent. In SQL
- kann die semantische Integrität mit ``TRIGGER`` und ``CONSTRAINT``
- überprüft werden.
-
- Vektoruhr
- Eine Vektoruhr ist eine Softwarekomponente zum Zuweisen von eindeutigen
- Zeitstempeln an Nachrichten. Sie erlaubt, den Ereignissen in verteilten
- Systemen aufgrund eines Zeitstempels eine Kausalordnung zuzuweisen und
- insbesondere die Nebenläufigkeit von Ereignissen zu ermitteln.
+ Redis is a :doc:`nosql/key-value-store`, that usually stores all data in
+ RAM.
+
+ Semantic integrity
+ Semantic integrity is always given when the entries are correct and
+ consistent. Then we talk of consistent data. If this is not the case,
+ the data is inconsistent. In SQL, the semantic integrity can be checked
+ with ``TRIGGER`` and ``CONSTRAINT``
+
+ Vector clock
+ A vector clock is a software component used to assign unique time stamps
+ to messages. It allows a causal order to be assigned to the events in
+ distributed systems on the basis of a time stamp and, in particular, to
+ determine the concurrency of events.
XPATH
- XPATH verarbeitet die Baumstruktur eines XML-Dokuments und erzeugt dabei
- Ausschnitte aus XML-Dokumenten. Um als Ergebnis vollständige
- XML-Dokumente zu erhalten, müssen diese z.B. mit :term:`XQuery` oder
- :term:`XSLT` erstellt werden. XPATH ist keine vollständige
- Abfragesprache, da sie auf Selektionen und Extraktionen beschränkt
- ist.
+ XPATH processes the tree structure of an XML document and generates
+ extracts from XML documents. In order to receive complete XML documents
+ as a result, these must be created with :term:`XQuery` or :term:`XSLT`,
+ for example. XPATH is not a complete query language as it is limited to
+ selections and extractions.
- XPATH ist ein Bestandteil von :term:`XQuery` seit Version 1.1 und ab
- Version 2.0 wird XPATH durch :term:`XQuery` erweitert.
+ XPATH has been part of :term:`XQuery` since version 1.1 and from version
+ 2.0 onwards, XPATH is extended by :term:`XQuery`.
XQuery
- XQuery steht für *XML Query Language* und ist hauptsächlich eine
- funktionale Sprache, bei der während einer Abfrage auch verschachtelte
- Ausdrücke ausgewertet werden können.
+ XQuery stands for *XML Query Language* and is mainly a functional
+ language in which nested expressions can also be evaluated during a
+ query.
XSLT
- XSLT ist ein Akronym für **E**\xtensible **S**\tylesheet **L**\anguage
- **T**\ransformation. Mit ihr lassen sich XML-Dokumente transformieren.
+ XSLT is an acronym for **E**\xtensible **S**\tylesheet **L**\anguage
+ **T**\ransformation. It can be used to transform XML documents.
diff --git a/docs/data-rw/index.rst b/docs/data-rw/index.rst
index dc814a6f..5e8286e6 100644
--- a/docs/data-rw/index.rst
+++ b/docs/data-rw/index.rst
@@ -1,13 +1,13 @@
-Daten lesen und schreiben
-=========================
+Read and write data
+===================
-Einen Überblick über öffentliche Repositories mit Forschungsdaten erhaltet ihr
-z.B. in der `Registry of research data repositories (re3data)
-`_.
+You can get an overview of public repositories with research data e.g. in the
+`Registry of research data repositories (re3data) `_.
-Neben spezifischen Python-Bibliotheken zum Zugriff auf :ref:`entfernte
-Speichermedien ` und
-:ref:`/data-rw/overview.rst#geodaten` stellen wir Euch vier Werkzeuge genauer vor:
+In addition to specific Python libraries for accessing :ref:`remote storage
+media` and
+:ref:`/data-rw/overview.rst#geodata`, we will introduce you to four tools in
+more detail:
* :doc:`requests/index`
* :doc:`beautifulsoup`
@@ -16,20 +16,19 @@ Speichermedien ` und
.. seealso::
`Scrapy `_
- Framework zum Extrahieren von Daten aus Websites als JSON-, CSV- oder
- XML-Dateien.
+ Framework for extracting data from websites as JSON, CSV or XML files.
`Pattern `_
- Python-Modul zum Data Mining, Verarbeitung natürlicher Sprache, ML und
- Netzwerkanalyse
+ Python module for data mining, natural language processing, ML and
+ network analysis.
`Web Scraping Reference `_
- Übersicht zu Web Scraping mit Python
+ Overview of web scraping with Python.
-Zum Speichern von relationalen Daten, Python-Objekten und Geodaten stellen wir
-Euch :doc:`postgresql/index`, :doc:`postgresql/sqlalchemy` und
-:doc:`postgresql/postgis/index` vor.
+We introduce :doc:`postgresql/index`, :doc:`postgresql/sqlalchemy` and
+:doc:`postgresql/postgis/index` for storing relational data, Python objects and
+geodata.
-Zum Bereinigen und Vorbereiten der Daten stellen wir Euch einige Best Practices
-und hilfreiche Python-Pakete in :doc:`../clean-prep/index` vor.
+To clean up and prepare the data, we present you some best practices and helpful
+Python packages in Data :doc:`../clean-prep/index`.
.. toctree::
:hidden:
diff --git a/docs/data-rw/intake/data-engineers.ipynb b/docs/data-rw/intake/data-engineers.ipynb
index 73408d32..fb94f698 100644
--- a/docs/data-rw/intake/data-engineers.ipynb
+++ b/docs/data-rw/intake/data-engineers.ipynb
@@ -4,9 +4,9 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "# Intake für Dateningenieure\n",
+ "# Intake for data engineers\n",
"\n",
- "Intake unterstützt Dateningenieure beim Bereitstellen von Daten und bei der Spezifikation der Datenquellen, der Verteilung der Daten, der Parametrisierung der Benutzeroptionen etc. Dies erleichtert Datenwissenschaftlern anschließend das einfache Erschließen zu den Daten, da die möglichen Optionen bereits im Katalog angegeben sind."
+ "Intake supports data engineers with the provision of data and with the specification of the data sources, the distribution of the data, the parameterisation of the user options etc. This makes it easier for data scientists to access the data afterwards, as the possible options are already specified in the catalog."
]
},
{
@@ -2765,7 +2765,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "Intake-Datensätze werden mit sog. Treibern geladen, von denen einige schon mit dem Intake-Paket mitkommen, andere jedoch als [Plugin](https://intake.readthedocs.io/en/latest/plugin-directory.html) nachgeladen werden müssen. Die verfügbaren Treiber könnt ihr euch folgendermaßen anzeigen lassen:"
+ "Intake data sets are loaded with so-called drivers, some come with the intake package, but others have to be reloaded as [plug-ins](https://intake.readthedocs.io/en/latest/plugin-directory.html). You can display the available drivers as follows:"
]
},
{
@@ -2799,9 +2799,9 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "Jedem dieser Treiber ist eine `intake.open_*`-Funktion zugeordnet. Es ist auch möglich, auf Treiber mit dem vollständig qualifizierten Namen (z.B. `package.submodule.DriverClass`) zu verweisen. Im folgenden Beispiel konzentrieren wir uns jedoch auf den `csv`-Treiber, der in der Standard-Intake-Installation enthalten ist.\n",
+ "Each of these drivers is assigned an `intake.open_*` function. It is also possible to refer to drivers by the fully qualified name (e.g. `package.submodule.DriverClass`). In the following example, however, we will focus on the csv driver that is included in the standard Intake installation.\n",
"\n",
- "Im Allgemeinen besteht der erste Schritt zum Schreiben eines Katalogeintrags darin, die entsprechende `open_*` Funktion zum Erstellen eines DataSource-Objekts zu verwenden:"
+ "In general, the first step in writing a catalog entry is to use the appropriate `open_*` function to create a DataSource object:"
]
},
{
@@ -2818,7 +2818,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "Die obige Angabe hat nun ein DataSource-Objekt erstellt, aber noch nicht überprüft, ob tatsächlich auf die Daten zugegriffen werden kann. Um zu testen, ob das Laden wirklich erfolgreich war, kann die Quelle selbst erschlossen (`source.discover`) oder gelesen (`source.read`) werden:"
+ "The above specification has now created a DataSource object, but has not yet checked whether the data can actually be accessed. To test whether the loading was really successful, the source itself can be opened (`source.discover`) or read (`source.read`):"
]
},
{
@@ -2934,7 +2934,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "Nachdem wir festgestellt haben, das sich die Daten wie gewünscht laden lassen, wollen wir uns die Daten visuell erschließen:"
+ "After we have determined that the data can be loaded as desired, we want to open up the data visually:"
]
},
{
@@ -3060,7 +3060,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "Wir können nun eine Quelle korrekt laden und erhalten auch eine grafische Ausgabe zur Erschließung der Daten. Dieses Rezept können wir uns nun in der YAML-Syntax ausgeben lassen mit:"
+ "Now we can load a source correctly and also receive a graphic output for opening up the data. We can now display this recipe in the YAML syntax with:"
]
},
{
@@ -3091,7 +3091,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "Schließlich können wir eine YAML-Datei erstellen, die dieses Rezept mit einer zusätzlichen Beschreibung und dem getesteten Diagramm enthält:"
+ "Finally, we can create a YAML file containing this recipe with an additional description and the tested diagram:"
]
},
{
@@ -3129,7 +3129,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "Um zu überprüfen, ob die YAML-Datei auch funktioniert, können wir sie erneut laden und versuchen, damit zu arbeiten:"
+ "To check that the YAML file works too, we can reload it and try to work with it:"
]
},
{
@@ -3263,7 +3263,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "Der Katalog scheint funktionsfähig und kann nun freigegeben werden. Der einfachste Weg, einen Intake-Katalog freizugeben, besteht darin, ihn an einem Ort abzulegen, an dem er von Ihrer Zielgruppe gelesen werden kann. In diesem Tutorial, das in einem Git-Repo gespeichert ist, kann dies die URL der Datei im Repo sein. Alles, was ihr für eure Benutzer freigeben müsst, ist die URL des Katalogs. Ihr könnt dies selbst ausprobieren mit:"
+ "The catalog appears to be functional and can now be released. The easiest way to share an Intake catalog is to put it in a place where it can be read by your target audience. In this tutorial stored in a Git repo, this can be the url of the file in the repo. All you have to share with your users is the URL of the catalog. You can try this yourself with:"
]
},
{
@@ -3366,9 +3366,9 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "> ## Hinweis:\n",
+ "> ## Note:\n",
"> \n",
- "> Dieser Katalog ist auch wieder eine DataSource-Instanz, d.h., dass ihr aus anderen Katalogen darauf verweisen und so eine Hierarchie von Datenquellen aufbauen könnt. Beispielsweise verfügt ihr über einen Stamm- oder Hauptkatalog, der auf mehrere andere Kataloge verweist, die jeweils Einträge eines bestimmten Typs enthalten. und das Ganze kann z.B. mit [Intake-GUI](https://jupyter-tutorial.readthedocs.io/de/latest/gather/intake/gui.html) durchsucht werden. Auf diese Weise hat die Datenerfassung insgesamt eine Struktur, die das Navigieren zum richtigen Datensatz vereinfacht. Ihr könnt sogar separate Hierarchien haben, die auf dieselben Daten verweisen."
+ "> This catalog is also a DataSource instance, i.e. you can refer to it from other catalogs and thus build a hierarchy of data sources. For example, you have a master or main catalog that references several other catalogs, each with entries of a certain type and the whole thing can e.g. be searched with [Intake-GUI](gui.ipynb). In this way, the overall data acquisition structure has a structure that makes it easier to navigate to the correct data set. You can even have separate hierarchies that reference the same data."
]
},
{
diff --git a/docs/data-rw/intake/data-scientists.ipynb b/docs/data-rw/intake/data-scientists.ipynb
index d82d7341..87473609 100644
--- a/docs/data-rw/intake/data-scientists.ipynb
+++ b/docs/data-rw/intake/data-scientists.ipynb
@@ -4,18 +4,18 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "# Intake für Datenwissenschaftler\n",
+ "# Intake for data scientists\n",
"\n",
- "Intake erleichtert das Laden vieler verschiedener Formate und Typen. Um einen vollständigen Überblick zu erhalten, schaut euch das [Plugin Directory](https://intake.readthedocs.io/en/latest/plugin-directory.html) und das [Intake Project Dashboard](https://intake.github.io/status/) an. Intake überführt die Daten dann in übliche Speicherformate wie Pandas DataFrames, Numpy-Arrays oder Python-Listen. Anschließend sind sie leicht durchsuchbar und auch für verteilte Systeme zugänglich. Sollte euch ein Plugin fehlen, könnt ihr auch selbst welche estellen, wie in [Making Drivers](https://intake.readthedocs.io/en/latest/making-plugins.html) beschrieben."
+ "Intake makes it easy to load many different formats and types. For a complete overview, take a look at the [Plugin Directory](https://intake.readthedocs.io/en/latest/plugin-directory.html) and the [Intake Project Dashboard](https://intake.github.io/status/). Intake then transfers the data to common storage formats such as Pandas DataFrames, Numpy arrays or Python lists. They are then easily searchable and also accessible to distributed systems. If you are missing a plugin, you can also order one yourself, as described in [Making Drivers](https://intake.readthedocs.io/en/latest/making-plugins.html)."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "## Laden einer Datenquelle\n",
+ "## Load a data source\n",
"\n",
- "Im Folgenden werden wir zwei csv-Datensätze lesen und in einen Intake-Katalog überführen. "
+ "Hereinafter we will read two csv data records and transfer them to an intake catalog."
]
},
{
@@ -48,24 +48,24 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "### Konfigurieren des Suchpfades für Datenquellen\n",
+ "### Configure the search path for data sources\n",
"\n",
- "Intake überprüft die Intake-Konfigurationsdatei nach `catalog_pat`und die Umgebungsvariable `\"INTAKE_PATH\"` auf eine durch Doppelpunkte getrennte Liste von Pfaden bzw. Semikolon in Windows, um nach Katalogdateien zu suchen. Beim Import `intake` werden alle Einträge aus allen Katalogen angezeigt, auf die als Teil eines globalen Katalogs von `intake.cat` referenziert werden."
+ "Intake checks the Intake configuration file for `catalog_path` and the environment variable `\"INTAKE_PATH\"` for a colon-separated list of paths or semicolons in Windows to look for catalog files. When importing `intake`, all entries from all catalogs that are referenced by `intake.cat` as part of a global catalog are displayed."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "## Daten lesen\n",
+ "## Read data\n",
"\n",
- "Intake liest Daten in Container verschiedener Formate:\n",
+ "Intake reads data in containers of various formats:\n",
"\n",
- "* Tabellen in Pandas DataFrames\n",
- "* Mehrdimensionale Array in Numpy Arrays\n",
- "* Semistrukturierte Daten in Python-Listen von Objekten, üblicherweise Dictionaries\n",
+ "* Tables in Pandas DataFrames\n",
+ "* Multi-dimensional arrays in numpy arrays\n",
+ "* Semi-structured data in Python lists of objects, usually dictionaries\n",
"\n",
- "Um herauszufinden, in welchem Containerformat Intake die Daten vorhält, könnt ihr das `container`-Attribut verwenden:"
+ "To find out in which container format Intake holds the data, you can use the `container` attribute:"
]
},
{
@@ -92,7 +92,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "Neben `dataframe` kann das Ergebnis auch `ndarray` oder `python` sein."
+ "In addition to `dataframe`, the result can also be `ndarray` or `python`."
]
},
{
diff --git a/docs/data-rw/intake/gui.ipynb b/docs/data-rw/intake/gui.ipynb
index bc29f0ce..acb39f40 100644
--- a/docs/data-rw/intake/gui.ipynb
+++ b/docs/data-rw/intake/gui.ipynb
@@ -4,17 +4,17 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "# Intake-GUI : Erkunden von Daten in einer grafischen Oberfläche\n",
+ "# Intake-GUI: Exploring data in a graphical user interface\n",
"\n",
- "Intake-GUI wurde neu implementiert, sodass sie nicht nur in Jupyter-Notebooks, sondern auch in anderen Webanwendungen bereitgestellt werden kann. Er zeigt den Inhalt aller installierten Kataloge an und ermöglicht die Auswahl lokaler und entfernter Kataloge sowie das Durchsuchen und Auswählen von Einträgen aus diesen.\n",
+ "Intake GUI has been re-implemented so that it can be made available not only in Jupyter notebooks, but also in other web applications. It displays the contents of all installed catalogs and enables local and remote catalogs to be selected and to be searched and selected from.\n",
"\n",
- "Intake unterstützt die Arbeitsteilung zwischen Daten-Ingenieuren, die Daten kuratieren, verwaltet und verbreitet, und Daten-Wissenschaftlern, die Daten analysieren und visualisieren ohne wissen zu müssen, wie sie gespeichert sind.\n",
+ "Intake supports the division of labor between data engineers who curate, manage, and deploy data, and data scientists who analyse and visualise data without having to know how it’s stored.\n",
"\n",
- "Das Intake-GUI basiert auf [Panel](https://jupyter-tutorial.readthedocs.io/de/latest/web/dashboards/panel/index.html) wobei das Bedienfeld eine zusammensetzbare Dashboard-Lösung für die Anzeige von Plots, Bildern, Tabellen, Texten sowie Widgets bietet. Panel funktioniert sowohl in einem Jupyter-Notebook als auch in einer eigenständigen Tornado-Anwendung.\n",
+ "The Intake GUI is based on [Panel](../../web/dashboards/panel/index.rst), with the control panel offering a composite dashboard solution for displaying plots, images, tables, texts and widgets. Panel works both in a Jupyter notebook and in a standalone Tornado application.\n",
"\n",
- "Aus Sicht des Dateningenieurs bedeutet dies, dass Sie die Aufnahme-GUI an einem Endpunkt bereitstellen und als Datenexplorationswerkzeug für Ihre Datenbenutzer verwenden können. Dies bedeutet auch, dass es einfach ist, die GUI anzupassen und neu zu organisieren, um Ihr eigenes Logo einzufügen, Teile davon in Ihren eigenen Anwendungen wiederzuverwenden oder neue Funktionen hinzuzufügen.\n",
+ "From a data engineer’s point of view, this means that you can deploy the recording GUI at an endpoint and use it as a data exploration tool for your data users. This also means that it’s easy to adapt and reorganise the GUI in order to insert your own logo, reuse parts of it in your own applications or add new functions.\n",
"\n",
- "Zukünftig soll Intake-GUI auch die Eingabe von Benutzerparametern erlauben sowie das Bearbeiten und Speichern von Katalogen."
+ "In the future, Intake-GUI should also allow the input of user parameters as well as the editing and saving of catalogs."
]
},
{
@@ -1530,22 +1530,22 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "Das GUI enthält drei Hauptbereiche:\n",
+ "The GUI contains three main areas:\n",
"\n",
- "1. eine Liste von Katalogen. Der standardmäßig angezeigte *builtin*-Katalog enthält im System installierte Datensätze, genau wie `intake.cat`.\n",
- "2. eine Liste der Quellen im aktuell ausgewählten Katalog.\n",
- "3. eine Beschreibung der aktuell ausgewählten Quelle."
+ "1. a list of catalogs. The *builtin* catalog shown by defaul tcontains data records installed in the system, just like `intake.cat`.\n",
+ "2. a list of the sources in the currently selected catalog.\n",
+ "3. a description of the currently selected source."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "### Ad 1: Kataloge\n",
+ "### Ad 1: Catalogs\n",
"\n",
- "Aktuell wird in der Liste der Kataloge kein Katalog angezeigt. Unter den drei Hauptbereichen befinden sich jedoch drei Schaltflächen, mit denen Kataloge hinzugefügt, entfernt oder durchsucht werden können. \n",
+ "No catalog is currently displayed in the list of catalogs. However, under the three main areas there are three buttons that can be used to add, remove, or search catalogs. \n",
"\n",
- "Die Schaltflächen sind auch über die API verfügbar, z.B. für *Add Catalog* mit:"
+ "The buttons are also available through the API, e.g. for Add Catalog with:"
]
},
{
@@ -1561,7 +1561,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "Remote-Kataloge sind z.B. verfügbar unter\n",
+ "Remote catalogs are e.g. available under\n",
"\n",
"* https://s3.amazonaws.com/earth-data/UCMerced_LandUse/catalog.yml\n",
"* https://raw.githubusercontent.com/ContinuumIO/anaconda-package-data/master/catalog/anaconda_package_data.yaml\n",
@@ -1572,11 +1572,11 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "### Ad 2. Quellen\n",
+ "### Ad 2. Sources\n",
"\n",
- "Durch die Auswahl einer Quelle aus der Liste wird der Beschreibungstext auf der linken Seite der Benutzeroberfläche aktualisiert.\n",
+ "Selecting a source from the list updates the descriptive text on the left side of the user interface.\n",
"\n",
- "Auch dieser ist über die API verfügbar:"
+ "This is also available via the API:"
]
},
{
@@ -1622,7 +1622,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "Dieser besteht aus einer Liste regulärer Intake-Datenquelleinträge. Um uns die ersten Einträge anzuschauen, können wir folgendes eingeben:"
+ "This consists of a list of regular Intake data source entries. To look at the first entries, we can enter the following:"
]
},
{
@@ -5114,9 +5114,9 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "### Ad 3. Quellansicht\n",
+ "### Ad 3. Source view\n",
"\n",
- "Sobald Kataloge geladen sind und die gewünschten Quellen ausgewählt wurden, sind diese unter dem Attribut `intake.gui.sources` verfügbar. Jeder Quelleneintrag verfügt über Methoden und kann wie jeder Katalogeintrag als Datenquelle geöffnet werden. Für *Source: UCMerced_LandUse_by_landuse* sieht der Eintrag beispielsweise so aus:\n",
+ "As soon as catalogs are loaded and the desired sources have been selected, they are available under the attribute `intake.gui.sources`. Each source entry has methods and can be opened as a data source like any catalog entry. For *Source: UCMerced_LandUse_by_landuse*, the entry looks like this:\n",
"\n",
"```\n",
"name: UCMerced_LandUse_by_landuse\n",
@@ -5139,14 +5139,14 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "Unter der Liste der Quellen befindet sich eine Reihe von Schaltflächen zum Erschließen der ausgewählten Datenquelle: Dabei öffnet **Plot** ein Unterfenster zum Anzeigen der vordefinierten (d.h. der in yaml angegebenen) Plots für die ausgewählte Quelle."
+ "Below the list of sources there is a series of buttons for opening up the selected data source: **Plot** opens a sub-window to display the predefined (i.e. the ones specified in yaml) plots for the selected source."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "> ## Siehe auch:\n",
+ "> ## See also:\n",
"> \n",
"> * [GUI](https://intake.readthedocs.io/en/latest/gui.html)"
]
diff --git a/docs/data-rw/intake/index.rst b/docs/data-rw/intake/index.rst
index a7a49a3a..49aaef57 100644
--- a/docs/data-rw/intake/index.rst
+++ b/docs/data-rw/intake/index.rst
@@ -1,9 +1,9 @@
Intake
======
-Intake erleichtert das Auffinden, Untersuchen, Laden und Verbreiten von Daten.
-Es ist damit nicht nur für Datenwissenschaftler und -ingenieure interessant,
-sondern auch für Datenanbieter.
+Intake makes it easy to find, explore, load, and distribute data. Therefore it
+is not only interesting for data scientists and engineers, but also for data
+providers.
.. seealso::
* `Docs `_
diff --git a/docs/data-rw/intake/install.rst b/docs/data-rw/intake/install.rst
index 022fa279..7474a630 100644
--- a/docs/data-rw/intake/install.rst
+++ b/docs/data-rw/intake/install.rst
@@ -1,26 +1,25 @@
-Intake installieren
-===================
+Install Intake
+==============
-Anforderungen
--------------
+Requirements
+------------
-Für die Verwendung von `intake.gui` müssen aktuelle Versionen von
-Bokeh≥2.0 und Panel verfügbar sein.
+Current versions of Bokeh≥2.0 and Panel must be available in order to use
+`intake.gui`.
Installation
------------
-Intake lässt sich einfach für euren Jupyter-Kernel installieren mit:
+Intake can be easily installed for your Jupyter kernel with:
.. code-block:: console
$ pipenv install intake
-Katalog mit Beispieldaten erstellen
------------------------------------
+Create a catalog with sample data
+---------------------------------
-Für die nachfolgenden Beispiele benötigen wir einige Datensätze, die wir
-erstellen mit:
+For the following examples we need some data sets that we create with:
.. code-block:: console
diff --git a/docs/data-rw/nosql/column-oriented-db.rst b/docs/data-rw/nosql/column-oriented-db.rst
index c758c34f..cd0d4e13 100644
--- a/docs/data-rw/nosql/column-oriented-db.rst
+++ b/docs/data-rw/nosql/column-oriented-db.rst
@@ -1,16 +1,15 @@
-Spaltenorientierte Datenbanksysteme
-===================================
+Column-oriented database systems
+================================
-Spaltenorientierte Datenbanken, auch Wide Column Stores genannt, speichern Daten
-mehrerer Einträge zusammen mit einem Zeitstempel in Spalten. Spalten mit
-ähnlichen oder verwandten Inhalten können in einer :term:`Column Family`
-zusammengefasst werden.
+Column-oriented databases, also known as wide column stores, store data from
+several entries together with a time stamp in columns. Columns with similar or
+related content can be combined in a :term:`Column family`.
-Datenbanksysteme
+Database systems
----------------
-Beispiele für spaltenorientierte Datenbanksysteme sind
-:term:`Cassandra`, :term:`Hypertable` und :term:`HBase`.
+Examples of column-oriented database systems are :term:`Cassandra`,
+:term:`Hypertable` and :term:`HBase`.
+------------------------+--------------------------------+--------------------------------+--------------------------------+
| **Home** | `Cassandra`_ | `Hypertable`_ | `HBase`_ |
@@ -19,39 +18,36 @@ Beispiele für spaltenorientierte Datenbanksysteme sind
+------------------------+--------------------------------+--------------------------------+--------------------------------+
| **Docs** | `cassandra.apache.org/doc/`_ | `hypertable.com/documentation`_| `hbase.apache.org/book.html`_ |
+------------------------+--------------------------------+--------------------------------+--------------------------------+
-| **Anwendungsgebiete** | Georedundanz, hohe | Das Bigtable-Design von | IoT, fraud detection, |
-| | Schreibgeschwindigkeit, | Hypertable löst horizontale | recommendation engines |
-| | demokratische Peer-to-peer | Skalierungsprobleme durch ein | |
-| | (P2P)-Architektur, Daten mit | verteiltes Speichersystem für | |
-| | definierter Lebenszeit | strukturierte Daten. | |
-| | | | |
+| **Application areas** | Georedundancy, high writing | Hypertable's Bigtable design | IoT, fraud detection, |
+| | speed, democratic peer-to-peer | solves horizontal scaling | recommendation engines |
+| | (P2P) architecture, data with | problems through a distributed | |
+| | a defined lifetime | storage system for structured | |
+| | | data. | |
+------------------------+--------------------------------+--------------------------------+--------------------------------+
-| **Entwicklungssprache**| Java | C++ | Java |
+| **Development | Java | C++ | Java |
+| language** | | | |
+------------------------+--------------------------------+--------------------------------+--------------------------------+
-| **Lizenzen** | Apache License 2.0 | GPL-3.0 License | Apache-2.0 License |
+| **Licenses** | Apache License 2.0 | GPL-3.0 License | Apache-2.0 License |
+------------------------+--------------------------------+--------------------------------+--------------------------------+
-| **Datenmodell** | :term:`Column Family` | Zuordnungstabellen | In Regionen unterteilte |
-| | entsprechen Tabellen, | (engl. Associative arrays) | Tabellen |
-| | *Keyspaces* Datenbanken; keine | | |
-| | logische Struktur, kein Schema | | |
-| | | | |
+| **Data model** | :term:`Column Family` | Associative arrays | Tables divided into regions |
+| | correspond to tables, | | |
+| | *Keyspaces* databases; no | | |
+| | logical structure, no scheme | | |
+------------------------+--------------------------------+--------------------------------+--------------------------------+
-| **Query-Langauge** | `Cassandra Query Language | `Hypertable Query Language | Java Client API, Thrift/REST |
+| **Query langauge** | `Cassandra Query Language | `Hypertable Query Language | Java Client API, Thrift/REST |
| | (CQL)`_ | (HQL)`_ | API |
-| | | | |
+------------------------+--------------------------------+--------------------------------+--------------------------------+
-| **Transaktionen, | :term:`Eventual Consistency` | :term:`MVCC – Multiversion | :term:`ACID` je Zeile, |
-| Nebenläufigkeit** | | Concurrency Control` | :term:`MVCC – Multiversion |
+| **Transactions, | :term:`Eventual Consistency` | :term:`MVCC – Multiversion | :term:`ACID` per line, |
+| concurrency** | | Concurrency Control` | :term:`MVCC – Multiversion |
| | | | Concurrency Control` |
+------------------------+--------------------------------+--------------------------------+--------------------------------+
-| **Replikation, | SimpleStrategy, | Replikation auf Dateisystem- | Master-Slave-Replikation |
-| Skalierung** | NetworkTopologyStrategy und | Ebene | |
+| **Replication, | SimpleStrategy, | File system level replication | Master-Slave-Replikation |
+| skaling** | NetworkTopologyStrategy and | | |
| | OldNetworkTopologyStrategy | | |
-| | | | |
+------------------------+--------------------------------+--------------------------------+--------------------------------+
-| **Anmerkungen** | | basiert auf verteilten | |
-| | | Dateisystemen wie Apache | |
-| | | Hadoop, DFS oder GlusterFS | |
+| **Remarks** | | is based on distributed file | |
+| | | systems such as Apache Hadoop, | |
+| | | DFS or GlusterFS | |
+------------------------+--------------------------------+--------------------------------+--------------------------------+
.. _`Cassandra`: https://cassandra.apache.org/
diff --git a/docs/data-rw/nosql/document-oriented-db.rst b/docs/data-rw/nosql/document-oriented-db.rst
index bfe0a90c..084b03d1 100644
--- a/docs/data-rw/nosql/document-oriented-db.rst
+++ b/docs/data-rw/nosql/document-oriented-db.rst
@@ -1,16 +1,14 @@
-Dokumentenorientierte Datenbanksysteme
-======================================
+Document-oriented database systems
+==================================
-Ein Dokument in diesem Zusammenhang ist eine strukturierte Zusammenstellung
-bestimmter Daten. Die Daten eines Dokumente werden als
-:term:`Schlüssel/Wert-Paar` gespeichert, wobei der Wert auch eine Liste oder ein
-Array sein kann.
+A document in this context is a structured compilation of certain data. The data
+of a document is stored as a :term:`Key/value pair`, whereby the value can also
+be a list or an array.
-Datenbanksysteme
+Database systems
----------------
-
-Dokumentenorientierte Datenbanksysteme sind z.B. MongoDB, CouchDB, Riak,
-OrientDB und ArangoDB.
+Document-oriented database systems are, for example, MongoDB, CouchDB, Riak,
+OrientDB and ArangoDB.
+------------------------+--------------------------------+--------------------------------+--------------------------------+--------------------------------+--------------------------------+
| **Home** | `MongoDB`_ | `CouchDB`_ | `Riak`_ | `OrientDB`_ | `ArangoDB`_ |
@@ -19,34 +17,35 @@ OrientDB und ArangoDB.
+------------------------+--------------------------------+--------------------------------+--------------------------------+--------------------------------+--------------------------------+
| **Docs** | `docs.mongodb.com`_ | `docs.couchdb.org`_ | `docs.riak.com`_ | `www.orientdb.com/docs`_ | `arangodb.com/documentation/`_ |
+------------------------+--------------------------------+--------------------------------+--------------------------------+--------------------------------+--------------------------------+
-| **Anwendungsgebiete** | IoT, Mobile apps, CMS, | Mobile, CRM, CMS, … | Session storage, Log data, | Stammdatenverwaltung, soziale | Fraud Detection, IoT, |
-| | `einfache Geodaten`_, … | | Sensor data, CMS | Netzwerke, `Time Series`_, | Identitätsmanagement, |
-| | | | | `Key Value`_, `Chat`_, | E-Commerce, Netzwerk, Logistik,|
-| | | | | Verkehrsmanagement | CMS |
+| **Application areas** | IoT, Mobile apps, CMS, | Mobile, CRM, CMS, … | Session storage, Log data, | Master data management, social | Fraud Detection, IoT, |
+| | `simple geospatial data`_, … | | Sensor data, CMS | networks, `Time Series`_, | identity management, |
+| | | | | `Key Value`_, `Chat`_, | e-commerce, network, logistics,|
+| | | | | traffic management | CMS |
+------------------------+--------------------------------+--------------------------------+--------------------------------+--------------------------------+--------------------------------+
-| **Entwicklungssprache**| C++ | Erlang | Erlang | Java | C++, JavaScript |
+| **Development | C++ | Erlang | Erlang | Java | C++, JavaScript |
+| language** | | | | | |
+------------------------+--------------------------------+--------------------------------+--------------------------------+--------------------------------+--------------------------------+
-| **Lizenzen** | Server Side Public License | Apache License 2.0 | Apache License 2.0 | Apache License 2.0 | Apache License 2.0 |
+| **Licenses** | Server Side Public License | Apache License 2.0 | Apache License 2.0 | Apache License 2.0 | Apache License 2.0 |
+------------------------+--------------------------------+--------------------------------+--------------------------------+--------------------------------+--------------------------------+
-| **Datenmodell** | Flexibles Schema mit | Flexibles Schema | Im Wesentlichen | Multi-Model | Multi-Model: Dokumente, Graphen|
-| | denormalisiertem Modell | | :term:`Schlüssel/Wert-Paar` | | und :term:`Schlüssel/Wert-Paar`|
+| **Data model** | Flexible scheme with | Flexible scheme | Essentially | Multi-Model | Multi-model: documents, graphs |
+| | denormalised model | | :term:`Key/Value pair` | | and :term:`Key/value pair` |
+------------------------+--------------------------------+--------------------------------+--------------------------------+--------------------------------+--------------------------------+
-| **Query-Langauge** | jQuery, :term:`MapReduce` | REST, :term:`MapReduce` | Keyfilter, :term:`MapReduce`, | `Extended SQL`_, `Gremlin`_ |`ArangoDB Query Language (AQL)`_|
-| | | | Link-Walking, keine Ad-hoc | | |
-| | | | Queries möglich | | |
+| **Query langauge** | jQuery, :term:`MapReduce` | REST, :term:`MapReduce` | Key filter, :term:`MapReduce`, | `Extended SQL`_, `Gremlin`_ |`ArangoDB Query Language (AQL)`_|
+| | | | link walking, no ad-hoc | | |
+| | | | queries possible | | |
+------------------------+--------------------------------+--------------------------------+--------------------------------+--------------------------------+--------------------------------+
-| **Transaktionen, | :term:`Two-phase locking (2PL)`| * :term:`Two-phase locking | :term:`ACID` | :term:`ACID` | :term:`ACID`, |
-| Nebenläufigkeit** | | (2PL)`, | | | :term:`MVCC – Multiversion |
-| | | * einzelner Server: | | | Concurrency Control` |
-| | | :term:`ACID`, | | | |
-| | | * verteilte Systeme: | | | |
-| | | :term:`BASE` | | | |
+| **Transactions, | :term:`Two-phase locking (2PL)`|* :term:`Two-phase locking (2PL)| :term:`ACID` | :term:`ACID` | :term:`ACID`, |
+| concurrency** | | (2PL)`, | | | :term:`MVCC – Multiversion |
+| | |* single server: | | | Concurrency Control` |
+| | | :term:`ACID`, | | | |
+| | |* distributed systems: | | | |
+| | | :term:`BASE` | | | |
+------------------------+--------------------------------+--------------------------------+--------------------------------+--------------------------------+--------------------------------+
-| **Replikation, | Master-Slave-Replikation, | Master-Master-Replikation | Multi-Master-Replikation | Multi-Master-Replikation, | Master-Slave-Replikation, |
-| Skalierung** | Auto-Sharding | | | Sharding | Sharding |
+| **Replication, | Master-Slave replikation, | Master-master replication | Multi-master replication | Multi-Master-Replikation, | Master-slave replication, |
+| skaling** | Auto-Sharding | | | Sharding | sharding |
+------------------------+--------------------------------+--------------------------------+--------------------------------+--------------------------------+--------------------------------+
-| **Anmerkungen** | `BSON` mit einre maximalen | | | | |
-| | Dokumentengröße von 16 MB. | | | | |
+| **Remarks** | `BSON` with a maximum | | | | |
+| | document size of 16 MB. | | | | |
+------------------------+--------------------------------+--------------------------------+--------------------------------+--------------------------------+--------------------------------+
.. _`MongoDB`: https://www.mongodb.com/
@@ -70,5 +69,5 @@ OrientDB und ArangoDB.
.. _`Extended SQL`: https://orientdb.org/docs/2.2.x/SQL.html
.. _`Gremlin`: https://github.com/tinkerpop/gremlin/wiki
.. _`ArangoDB Query Language (AQL)`: https://www.arangodb.com/docs/stable/aql/
-.. _`einfache Geodaten`: https://docs.mongodb.com/manual/core/geospatial-indexes/
+.. _`simple geospatial data`: https://docs.mongodb.com/manual/core/geospatial-indexes/
.. _`BSON`: http://www.bsonspec.org/
diff --git a/docs/data-rw/nosql/graph-db.rst b/docs/data-rw/nosql/graph-db.rst
index 7332ac11..ec00517b 100644
--- a/docs/data-rw/nosql/graph-db.rst
+++ b/docs/data-rw/nosql/graph-db.rst
@@ -1,55 +1,50 @@
-Graphdatenbanksysteme
-=====================
+Graph database systems
+======================
-Graphdatenbanken sind spezialisiert auf vernetzte Informationen und
-möglichst einfache und effiziente :term:`Graph traversal`.
+Graph databases specialise in networked information and the simplest and most
+efficient possible :term:`Graph traversal`.
-Graphenmodell
--------------
+Graph model
+-----------
-Ein Graph besteht aus einer Menge an Knoten und Kanten. Graphen werden genutzt,
-um eine Vielfalt an Problemen durch Knoten, Kanten und ihren Beziehungen
-darzustellen, z.B. in Navigationssystemen, in denen die Wege in Form von Graphen
-gespeichert werden.
+A graph consists of a number of nodes and edges. Graphs are used to represent a
+variety of problems through nodes, edges and their relationships, for example
+in navigation systems in which the paths are stored in the form of graphs.
Graph traversal
---------------
-Graph traversal wird meist zur Suche von Knoten verwendet. Es gibt verschiedene
-Algorithmen für solche Suchanfragen in einem Graphen, die sich grob einteilen
-lassen in
+Graph traversal is mostly used to find nodes. There are different algorithms for
+such search queries in a graph, which can be roughly divided into
-* Breiten- und Tiefensuche (engl: breadth-first search, BFS und
- depth-first search, DFS)
+* Breadth-first search, BFS and depth-first search, DFS
- Die Breitensuche beginnt mit allen Nachbarknoten des Startknotens.
- Im nächsten Schritt werden dann die Nachbarn der Nachbarn durchsucht.
- Die Pfadlänge erhöht sich mit jeder Iteration.
+ The breadth-first search begins with all neighboring nodes of the start node.
+ In the next step, the neighbors of the neighbors are then searched. The path
+ length increases with each iteration.
- Die Tiefensuche verfolgt einen Pfad solange, bis ein Knoten ohne
- ausgehende Kanten gefunden wird. Der Pfad wird anschließend
- zurückverfolgt bis zu einem Knoten, der noch weitere ausgehende Kanten
- hat. Dort wird die Suche dann fortgesetzt.
+ The depth-first search follows a path until a node with no outgoing edges is
+ found. The path is then traced back to a node that has further outgoing edges.
+ The search will then continue there.
-* Algorithmische Traversierung
+* Algorithmic traversal
- Beispiele für die algorithmische Traversierung sind
+ Examples of algorithmic traversal are
- * Hamiltonweg (Traveling Salesman)
- * Eulerweg
- * Dijkstra-Algorithmus
+ * Hamiltonian path (traveling salesman)
+ * Eulerian path
+ * Dijkstra’s algorithm
-* Randomisierte Traversierung
+* Randomised traversal
- Der Graph wird nicht nach einem bestimmten Schema durchlaufen, sondern
- der nächste Knoten wird zufällig ausgewählt. Dadurch kann vor allem bei
- großen Graphen wesentlich schneller ein Suchergebnis präsentieren, dieses
- ist jedoch nicht immer das beste.
+ The graph is not run through according to a certain scheme, but the next node
+ is selected at random. This allows a search result to be presented much
+ faster, especially with large graphs, but this is not always the best.
-Datenbanksysteme
+Database systems
----------------
-Typische Graphdatenbanken sind Neo4j, OrientDB InfiniteGraph und ArangoDB.
+Typical graph databases are Neo4j, OrientDB InfiniteGraph and ArangoDB.
+------------------------+--------------------------------+--------------------------------+--------------------------------+--------------------------------+
| **Home** | `Neo4j`_ | `OrientDB`_ | `InfiniteGraph`_ | `ArangoDB`_ |
@@ -58,41 +53,41 @@ Typische Graphdatenbanken sind Neo4j, OrientDB InfiniteGraph und ArangoDB.
+------------------------+--------------------------------+--------------------------------+--------------------------------+--------------------------------+
| **Docs** | `neo4j.com/docs/`_ | `orientdb.org/docs/`_ | `InfiniteGraph Tutorials`_ | `arangodb.com/documentation/`_ |
+------------------------+--------------------------------+--------------------------------+--------------------------------+--------------------------------+
-| **Anwendungsgebiete** | CMS, Soziale Netzwerke, | Stammdatenverwaltung, soziale | Erweiterung von | Fraud Detection, IoT, |
-| | GIS-Systeme, ERP, … | Netzwerke, `Time Series`_, | Objectivity/DB-Installationen | Identitätsmanagement, |
-| | | `Key Value`_, | | E-Commerce, Netzwerk, Logistik,|
-| | | Verkehrsmanagement | | CMS |
+| **Application areas** | CMS, social networks, | Master data management, social | Extension of | Fraud Detection, IoT, |
+| | GIS systems, ERP, … | networks, `time series`_, | Objectivity/DB installations | identity management,, |
+| | | `key value`_, | | e-commerce, network, logistics,|
+| | | traffic management | | CMS |
+------------------------+--------------------------------+--------------------------------+--------------------------------+--------------------------------+
-| **Entwicklungssprache**| Java | Java | Java | C++, JavaScript |
+| **Development | Java | Java | Java | C++, JavaScript |
+| language** | | | | |
+------------------------+--------------------------------+--------------------------------+--------------------------------+--------------------------------+
-| **Lizenzen** | AGPL u. kommerziell | Apache License 2.0 | kommerziell | Apache License 2.0 |
+| **Licenses** | AGPL and commercially | Apache License 2.0 | commercially | Apache License 2.0 |
+------------------------+--------------------------------+--------------------------------+--------------------------------+--------------------------------+
-| **Datenmodell** | :term:`Property-Graph-Modell | Multi-Model | :term:`Property-Graph-Modell | Multi-Model: Dokumente, Graphen|
-| | (PGM)` | | (PGM)` | und :term:`Schlüssel/Wert-Paar`|
+| **Data model** | :term:`Property graph model | Multi-Model | :term:`Property graph model | Multi-model: documents, graphs |
+| | (PGM)` | | (PGM)` | and :term:`Key/value pair` |
+------------------------+--------------------------------+--------------------------------+--------------------------------+--------------------------------+
-| **Query-Langauge** | REST, `Cypher`_, `Gremlin`_ | `Extended SQL`_, `Gremlin`_ | Traverser API, PQL |`ArangoDB Query Language (AQL)`_|
+| **Query langauge** | REST, `Cypher`_, `Gremlin`_ | `Extended SQL`_, `Gremlin`_ | Traverser API, PQL |`ArangoDB Query Language (AQL)`_|
+------------------------+--------------------------------+--------------------------------+--------------------------------+--------------------------------+
-| **Transaktionen, | * :term:`Two-phase locking | :term:`ACID` | :term:`ACID` | :term:`ACID`, |
-| Nebenläufigkeit** | (2PL)`, | | | :term:`MVCC – Multiversion |
-| | * einzelner Server: | | | Concurrency Control` |
-| | :term:`ACID`, | | | |
-| | * verteilte Systeme: | | | |
-| | :term:`BASE` | | | |
+| **Transactions, |* :term:`Two-phase locking(2PL)`| :term:`ACID` | :term:`ACID` | :term:`ACID`, |
+| concurrency** | | | | :term:`MVCC – Multiversion |
+| |* single Server: | | | Concurrency Control` |
+| | :term:`ACID` | | | |
+| |* distributed systems: | | | |
+| | :term:`BASE` | | | |
+------------------------+--------------------------------+--------------------------------+--------------------------------+--------------------------------+
-| **Replikation, | Master-Slave mit Master | Multi-Master-Replikation, | Objectivity/DB, | Master-Slave-Replikation, |
-| Skalierung** | Failover | Sharding | keine | Sharding |
-| | | | :term:`Graphpartitionierung` | |
+| **Replication, | Master-slave with master | Multi-master replication, | Objectivity/DB, | Master-slave replication, |
+| skaling** | failover | Sharding | no | sharding |
+| | | | :term:`Graph partitioning` | |
+------------------------+--------------------------------+--------------------------------+--------------------------------+--------------------------------+
-| **Anmerkungen** | | | InfiniteGraph ist eine, auf | |
-| | | | dem :doc:`object-db` | |
-| | | | Objectivity/DB aufsetzende | |
-| | | | Graphdatenbank, wobei die | |
-| | | | Objekte durch Kanten verbunden | |
-| | | | werden. Hierbei sind auch | |
-| | | | mehrfache und bidirektionale | |
-| | | | Kanten erlaubt. | |
+| **Remarks** | | | InfiniteGraph is a graph | |
+| | | | database on top of the | |
+| | | | :doc:`object-db` | |
+| | | | Objectivity/DB, whereby the | |
+| | | | objects are connected by edges.| |
+| | | | Multiple and bidirectional | |
+| | | | edges are also allowed here. | |
| | | | | |
-| | | | Iteratoren entsprechen dem | |
+| | | | Iterators correspond to the | |
| | | | :term:`Graph traversal`. | |
+------------------------+--------------------------------+--------------------------------+--------------------------------+--------------------------------+
@@ -103,8 +98,8 @@ Typische Graphdatenbanken sind Neo4j, OrientDB InfiniteGraph und ArangoDB.
.. _`ArangoDB`: https://www.arangodb.com/
.. _`orientechnologies/orientdb`: https://github.com/orientechnologies/orientdb
.. _`arangodb/arangodb`: https://github.com/arangodb/arangodb
-.. _`Time Series`: https://orientdb.org/docs//2.0/orientdb.wiki/Time-series-use-case.html
-.. _`Key Value`: https://orientdb.org/docs//2.0/orientdb.wiki/Key-Value-use-case.html
+.. _`time series`: https://orientdb.org/docs//2.0/orientdb.wiki/Time-series-use-case.html
+.. _`key value`: https://orientdb.org/docs//2.0/orientdb.wiki/Key-Value-use-case.html
.. _`neo4j.com/docs/`: https://neo4j.com/docs/
.. _`orientdb.org/docs/`: https://orientdb.org/docs/
.. _`InfiniteGraph Tutorials`:
diff --git a/docs/data-rw/nosql/index.rst b/docs/data-rw/nosql/index.rst
index 16d0193d..3df58b92 100644
--- a/docs/data-rw/nosql/index.rst
+++ b/docs/data-rw/nosql/index.rst
@@ -1,17 +1,17 @@
-NoSQL-Datenbanken
-=================
+NoSQL databases
+===============
-Bisher gibt es keine einheitliche Definition von NoSQL, die meisten
-NoSQL-Datenbanksysteme haben jedoch meist folgendes gemeinsam:
+So far there is no uniform definition of NoSQL, but most NoSQL database systems
+usually have the following in common:
-* kein relationales Datenmodell
-* verteilte und horizontale Skalierbarkeit
-* keine oder schwache Schemarestriktionen
-* einfache API
-* kein :term:`ACID`, sondern :term:`Eventual Consistency` oder :term:`BASE` als
- Konsistenzmodell
+* no relational data model
+* distributed and horizontal scalability
+* no or weak schema restrictions
+* simple API
+* no :term:`ACID`, but :term:`Eventual consistency` or :term:`BASE` as the
+ consistency model
-NoSQL-Datenbanken lassen sich untergliedern in
+NoSQL databases can be divided into
.. toctree::
:titlesonly:
@@ -24,12 +24,12 @@ NoSQL-Datenbanken lassen sich untergliedern in
object-db
xml-db
-Bedeutende Konzepte und Technologien von NoSQL-Datenbanken sind
+Major concepts and technologies of NoSQL databases are
* :term:`MapReduce`
-* :term:`CAP-Theorem`
-* :term:`Eventual Consistency` und :term:`BASE`
-* :term:`Konsistente Hashfunktion`
-* :term:`MVCC – Multiversion Concurrency Control`
-* :term:`Vektoruhr`
+* :term:`CAP theorem`
+* :term:`Eventual consistency` and :term:`BASE`
+* :term:`Consistent hash function`
+* :term:`MVCC – Multiversion RCncurrency Control`
+* :term:`Vector clock`
* :term:`Paxos`
diff --git a/docs/data-rw/nosql/key-value-store.rst b/docs/data-rw/nosql/key-value-store.rst
index be584044..f3726372 100644
--- a/docs/data-rw/nosql/key-value-store.rst
+++ b/docs/data-rw/nosql/key-value-store.rst
@@ -1,13 +1,13 @@
-Schlüssel-Werte-Datenbanksysteme
-================================
+Key-value database systems
+==========================
-Schlüssel-Werte-Datenbanken, auch Key Value Stores genannt, speichern
-:term:`Schlüssel/Wert-Paare `.
+Key-value databases, also known as key value stores, store :term:`key/value
+pairs `.
-Datenbanksysteme
+Database systems
----------------
-Schlüssel/Wert-Datenbanksysteme sind z.B. Riak, Cassandra, Redis und MongoDB.
+Key/value database systems are e.g. Riak, Cassandra, Redis and MongoDB.
+------------------------+--------------------------------+--------------------------------+--------------------------------+--------------------------------+
| **Home** | `Riak`_ | `Cassandra`_ | `Redis`_ | `MongoDB`_ |
@@ -16,38 +16,35 @@ Schlüssel/Wert-Datenbanksysteme sind z.B. Riak, Cassandra, Redis und MongoDB.
+------------------------+--------------------------------+--------------------------------+--------------------------------+--------------------------------+
| **Docs** | `docs.riak.com`_ | `cassandra.apache.org/doc/`_ | `redis.io/documentation`_ | `docs.mongodb.com`_ |
+------------------------+--------------------------------+--------------------------------+--------------------------------+--------------------------------+
-| **Anwendungsgebiete** | Session storage, Log data, | Georedundanz, hohe | Session Cache, Full Page | IoT, Mobile apps, CMS, |
-| | Sensor data, CMS | Schreibgeschwindigkeit, | Cache (FPC), Queues, Pub/Sub | `einfache Geodaten`_, … |
-| | | demokratische Peer-to-peer | | |
-| | | (P2P)-Architektur, Daten mit | | |
-| | | definierter Lebenszeit | | |
-| | | | | |
+| **Application areas** | Session storage, Log data, | Georedundancy, high writing | Session Cache, Full Page | IoT, Mobile apps, CMS, |
+| | Sensor data, CMS | speed, democratic peer-to-peer | Cache (FPC), Queues, Pub/Sub | `simple geospatial data`_, … |
+| | | (P2P) architecture, data with | | |
+| | | a defined lifetime | | |
+------------------------+--------------------------------+--------------------------------+--------------------------------+--------------------------------+
-| **Entwicklungssprache**| Erlang | Java | ANSI C | C++ |
+| **Development | Erlang | Java | ANSI C | C++ |
+| language** | | | | |
+------------------------+--------------------------------+--------------------------------+--------------------------------+--------------------------------+
-| **Lizenzen** | Apache License 2.0 | Apache License 2.0 | BSD-3-Clause License | Server Side Public License |
+| **Licenses** | Apache License 2.0 | Apache License 2.0 | BSD-3-Clause License | Server Side Public License |
+------------------------+--------------------------------+--------------------------------+--------------------------------+--------------------------------+
-| **Datenmodell** | Im Wesentlichen | :term:`Column Family` | Schlüssel werden als | Flexibles Schema mit |
-| | :term:`Schlüssel/Wert-Paar` | entsprechen Tabellen, | Zeichenkette gespeichert, | denormalisiertem Modell |
-| | | *Keyspaces* Datenbanken; keine | Werte als Zeichenkette, Hashes,| |
-| | | logische Struktur, kein Schema | Listen, Sets und sortierten | |
-| | | | Sets | |
+| **Data model** | Essentially | :term:`Column Family` | Keys are stored as strings, | Flexible scheme with |
+| | :term:`Key/value pair` | correspond to tables, keyspaces| values as strings, hashes, | denormalised model |
+| | | to databases; no logical | lists, sets and sorted sets | |
+| | | structure, no scheme | | |
+------------------------+--------------------------------+--------------------------------+--------------------------------+--------------------------------+
-| **Query-Langauge** | Keyfilter, :term:`MapReduce`, | `Cassandra Query Language | | jQuery, :term:`MapReduce` |
-| | Link-Walking, keine Ad-hoc | (CQL)`_ | | |
-| | Queries möglich | | | |
+| **Query langauge** | Keyfilter, :term:`MapReduce`, | `Cassandra Query Language | | jQuery, :term:`MapReduce` |
+| | Link walking, no ad hoc queries| (CQL)`_ | | |
+| | possible | | | |
+------------------------+--------------------------------+--------------------------------+--------------------------------+--------------------------------+
-| **Transaktionen, | :term:`ACID` | :term:`Eventual Consistency` | in-memory, asynchron on disc | :term:`Two-phase locking (2PL)`|
-| Nebenläufigkeit** | | | mit *Append Only File Mode* | |
+| **Transactions, | :term:`ACID` | :term:`Eventual Consistency` | in-memory, asynchronous on disc| :term:`Two-phase locking (2PL)`|
+| concurrency** | | | with *Append Only File Mode* | |
+------------------------+--------------------------------+--------------------------------+--------------------------------+--------------------------------+
-| **Replikation, | Multi-Master-Replikation | SimpleStrategy, | Master-N-Slaves-Replikation, | Master-Slave-Replikation, |
-| Skalierung** | | NetworkTopologyStrategy und | Sharding mittels | Auto-Sharding |
-| | | OldNetworkTopologyStrategy | :term:`consistent hashing | |
-| | | | ` | |
+| **Replication, | Multi-master replikation | SimpleStrategy, |Master-N-Slaves replikation, | Master-Slave replikation, |
+| skaling** | | NetworkTopologyStrategy and |Sharding using | Auto-Sharding |
+| | | OldNetworkTopologyStrategy |:term:`Consistent hash function`| |
+------------------------+--------------------------------+--------------------------------+--------------------------------+--------------------------------+
-| **Anmerkungen** | | Siehe auch `Scylla`_, eine | Siehe auch `KeyDB`_, ein Fork | `BSON` mit einre maximalen |
-| | | Cassandra-kompatible | von Redis mit Multithreading. | Dokumentengröße von 16 MB. |
-| | | Reimplementierung in C. | | |
+| **Remarks** | | See also `Scylla`_, a | See also `KeyDB`_, a fork | `BSON` with a maximum |
+| | | Cassandra-compatible | from Redis with multithreading.| document size of 16 MB. |
+| | | reimplementation in C. | | |
+------------------------+--------------------------------+--------------------------------+--------------------------------+--------------------------------+
.. _`Riak`: https://riak.com/
@@ -62,7 +59,7 @@ Schlüssel/Wert-Datenbanksysteme sind z.B. Riak, Cassandra, Redis und MongoDB.
.. _`cassandra.apache.org/doc/`: https://cassandra.apache.org/doc/latest/
.. _`redis.io/documentation`: https://redis.io/documentation
.. _`docs.mongodb.com`: https://docs.mongodb.com/
-.. _`einfache Geodaten`: https://docs.mongodb.com/manual/core/geospatial-indexes/
+.. _`simple geospatial data`: https://docs.mongodb.com/manual/core/geospatial-indexes/
.. _`Cassandra Query Language (CQL)`: https://cassandra.apache.org/doc/latest/cql/
.. _`Scylla`: https://www.scylladb.com/
.. _`KeyDB`: https://github.com/JohnSully/KeyDB
diff --git a/docs/data-rw/nosql/object-db.rst b/docs/data-rw/nosql/object-db.rst
index a04c1320..b0c367ce 100644
--- a/docs/data-rw/nosql/object-db.rst
+++ b/docs/data-rw/nosql/object-db.rst
@@ -1,56 +1,52 @@
-Objektdatenbanksysteme
-======================
+Object database systems
+=======================
-Viele Programmiersprachen legen eine objektorientierte Programmierung nahe und
-daher erscheint die Speicherung dieser Objekte natürlich. Daher liegt nahe, den
-kompletten Prozess von der Implementierung bis zur Speicherung einheitlich und
-einfach zu gestalten. Im Einzelnen sind die Vorteile:
+Many programming languages suggest object-oriented programming, so storing these
+objects seems natural. It therefore makes sense to design the entire process
+from implementation to storage uniformly and simply. In detail, the advantages
+are:
-Natürliche Modellierung und Repräsentation von Problemen
- Probleme lassen sich auf eine Weise modellieren, die der menschlichen
- Denkweise sehr nahe kommen.
-Übersichtlicher, lesbarer und verständlicher
- Die Daten und die auf diesen operierenden Funktionen werden zu einer Einheit
- zusammengefasst, wodurch die Programme übersichtlicher, lesbarer und
- verständlicher werden.
-Modular und wiederverwendbar
- Programmteile lassen sich einfach und flexibel wiederverwenden.
-Erweiterbar
- Programme lassen sich einfach erweitern und an geänderte Anforderungen
- anpassen.
+Natural modeling and representation of problems
+ Problems can be modeled in ways that are very close to the human way of
+ thinking.
+Clearer, more readable and more understandable
+ The data and the functions operating on them are combined into one unit,
+ making the programs clearer, more readable and easier to understand.
+Modular and reusable
+ Program parts can be easily and flexibly reused.
+Expandable
+ Programs can be easily expanded and adapted to changed requirements.
Object-relational impedance mismatch
------------------------------------
-Objektorientierte Programmierung und relationale Datenhaltung sind aus
-verschiedenen Gründen problematisch. So ist ein wichtiges Konzept der OOP zur
-Umsetzung komplexer Modelle die Vererbung. Im relationalen Paradigma gibt es
-jedoch nichts vergleichbares. Zur Umwandlung entsprechender Klassenhierarchien
-in ein relationales Modell wurden objekt-relationale Mapper, ORM entwickelt, wie
-z.B. :doc:`../postgresql/sqlalchemy`. Prinzipiell gibt es zwei verschiedene
-Ansätze für ein ORM, wobei in beiden Fällen eine Tabelle für eine Klasse
-angelegt wird:
+Object-oriented programming and relational data storage are problematic for
+various reasons. Inheritance is an important concept in OOP for implementing
+complex models. In the relational paradigm, however, there is nothing like it.
+Object-relational mappers, ORM, such as :doc:`../postgresql/sqlalchemy`, were
+developed to convert corresponding class hierarchies into a relational model. In
+principle there are two different approaches for an ORM, whereby in both cases a
+table is created for a class:
-Vertikale Partitionierung
- Die Tabelle enthält nur die Attribute der entsprechenden Klasse sowie einen
- Fremdschlüssel für die Tabelle der Oberklasse. Für jedes Objekt wird ein dann
- ein Eintrag in der zur Klasse gehörenden Tabelle sowie in den Tabellen aller
- Oberklassen angelegt. Beim Zugriff müssen die Tabellen mit Joins verbunden
- werden, wodurch es bei komplexen Modellen zu erheblichen
- Performance-Verlusten kommen kann.
-Horizontale Partitionierung
- Jede Tabelle enthält die Attribute der zugehörigen Klasse sowie aller
- Oberklassen. Bei einer Änderung der Oberklasse müssen dann jedoch die
- Tabellen aller abgeleiteten Klassen ebenfalls aktualisiert werden.
+Vertical partitioning
+ The table only contains the attributes of the corresponding class and a
+ foreign key for the table of the superclass. An entry is then created for
+ each object in the table belonging to the class and in the tables of all
+ superclasses. When accessing the tables, joins must be used, which can
+ lead to significant performance losses in complex models.
+Horizontal partitioning
+ Each table contains the attributes of the associated class and all
+ superclasses. If the superclass is changed, however, the tables of all
+ derived classes must also be updated.
-Grundsätzlich müssen bei der Kombination von OOP und relationaler Datenhaltung
-immer zwei Datenmodelle erstellt werden. Dies macht diese Architektur deutlich
-komplexer, fehleranfälliger und in der Wartung aufwändiger.
+Basically, when combining OOP and relational data management, two data models
+must always be created. This makes this architecture significantly more complex,
+more error-prone and more time-consuming to maintain.
-Datenbanksysteme
+Database systems
----------------
-Beispiele für Objektdatenbanksysteme sind ZODB und Objectivity/DB.
+Examples of object database systems are ZODB and Objectivity/DB.
+------------------------+----------------------------------------+----------------------------------------+
| **Home** | `ZODB`_ | `Objectivity/DB`_ |
@@ -59,24 +55,26 @@ Beispiele für Objektdatenbanksysteme sind ZODB und Objectivity/DB.
+------------------------+----------------------------------------+----------------------------------------+
| **Docs** | `www.zodb.org/en/latest/tutorial.html`_| `Objectivity/DB Basics Tutorial`_ |
+------------------------+----------------------------------------+----------------------------------------+
-| **Anwendungsgebiete** | Plone, Pyramid, BTrees, volatile Daten | IoT, Telekommunikation, Netzwerktechnik|
+| **Application areas** | Plone, Pyramid, BTrees, volatile data | IoT, telecommunications, network |
+| | | technology |
+------------------------+----------------------------------------+----------------------------------------+
-| **Entwicklungssprache**| Python | Java |
+| **Development | Python | Java |
+| language** | | |
+------------------------+----------------------------------------+----------------------------------------+
-| **Lizenzen** | Zope Public License (ZPL) 2.1 | kommerziell |
+| **Licenses** | Zope Public License (ZPL) 2.1 | commercially |
+------------------------+----------------------------------------+----------------------------------------+
-| **Datenmodell** | PersistentList, PersistentMapping, | Objects, References, Relationships, |
-| | BTree | Indexes, Trees und Collections |
+| **Data model** | PersistentList, PersistentMapping, | Objects, References, Relationships, |
+| | BTree | Indexes, Trees and Collections |
+------------------------+----------------------------------------+----------------------------------------+
-| **Query-Langauge** | | Objectivity/DB predicate query language|
+| **Query langauge** | | Objectivity/DB predicate query language|
+------------------------+----------------------------------------+----------------------------------------+
-| **Transaktionen, | :term:`ACID` | :term:`ACID` |
-| Nebenläufigkeit** | | |
+| **Transactions, | :term:`ACID` | :term:`ACID` |
+| concurrency** | | |
+------------------------+----------------------------------------+----------------------------------------+
-| **Replikation, | `ZODB Replication Services (ZRS)`_ | Quorum basierte synchrone Replikation |
-| Skalierung** | | |
+| **Replication, | `ZODB Replication Services (ZRS)`_ | Quorum based synchronous replication |
+| skaling** | | |
+------------------------+----------------------------------------+----------------------------------------+
-| **Anmerkungen** | | |
+| **Remarks** | | |
+------------------------+----------------------------------------+----------------------------------------+
.. _`ZODB`: hhttp://www.zodb.org/
diff --git a/docs/data-rw/nosql/xml-db.rst b/docs/data-rw/nosql/xml-db.rst
index 30afc8f7..dbc648ad 100644
--- a/docs/data-rw/nosql/xml-db.rst
+++ b/docs/data-rw/nosql/xml-db.rst
@@ -1,14 +1,14 @@
-XML-Datenbanksysteme
+XML database systems
====================
-XML-Datenbanken sind in der Lage, XML-Dokumente gegen ein XML-Schema oder eine
-DTD zu validieren. Darüberhinaus unterstützen sie mindestens :term:`XPATH`,
-:term:`XQuery` und :term:`XSLT`.
+XML databases are able to validate XML documents against an XML schema or a DTD.
+In addition, they support at least :term:`XPATH`, :term:`XQuery` and
+:term:`XSLT`.
-Datenbanksysteme
+Database systems
----------------
-Beispiele für XML-Datenbanksysteme sind eXist und MonetDB.
+Examples of XML database systems are eXist and MonetDB.
+------------------------+------------------------------------------------+------------------------------------------------+------------------------------------------------+
| **Home** | `eXist`_ | `MonetDB`_ | `BaseX`_ |
@@ -17,24 +17,25 @@ Beispiele für XML-Datenbanksysteme sind eXist und MonetDB.
+------------------------+------------------------------------------------+------------------------------------------------+------------------------------------------------+
| **Docs** | `exist-db.org/exist/apps/doc/documentation`_ | `www.monetdb.org/Documentation`_ | `docs.basex.org`_ |
+------------------------+------------------------------------------------+------------------------------------------------+------------------------------------------------+
-| **Anwendungsgebiete** | CMS | CMS, Date-Warehouse, Data mining | CMS |
+| **Application areas** | CMS | CMS, Date-Warehouse, Data mining | CMS |
+------------------------+------------------------------------------------+------------------------------------------------+------------------------------------------------+
-| **Entwicklungssprache**| Java | C | Java |
+| **Development | Java | C | Java |
+| language** | | | |
+------------------------+------------------------------------------------+------------------------------------------------+------------------------------------------------+
-| **Lizenzen** | LGPL-2.1 License | Mozilla Public License 2.0 | BSD-3-Clause License |
+| **Licenses** | LGPL-2.1 License | Mozilla Public License 2.0 | BSD-3-Clause License |
+------------------------+------------------------------------------------+------------------------------------------------+------------------------------------------------+
-| **Datenmodell** | XML | XML, Spaltenorientierte Datenstruktur | XML, `Geo-Daten`_ |
+| **Data model** | XML | XML, column-oriented data structure | XML, `geographic data`_ |
+------------------------+------------------------------------------------+------------------------------------------------+------------------------------------------------+
-| **Query-Langauge** | :term:`XQuery`, :term:`XPATH` | SQL | :term:`XQuery`, :term:`XPATH` |
+| **Query langauge** | :term:`XQuery`, :term:`XPATH` | SQL | :term:`XQuery`, :term:`XPATH` |
+------------------------+------------------------------------------------+------------------------------------------------+------------------------------------------------+
-| **Transaktionen, | | :term:`Optimistic Concurrency ` | :term:`ACID`, XQuery Locks |
-| Nebenläufigkeit** | | | |
+| **Transactions, | | :term:`Optimistic Concurrency ` | :term:`ACID`, XQuery Locks |
+| concurrency** | | | |
+------------------------+------------------------------------------------+------------------------------------------------+------------------------------------------------+
-| **Replikation, | Master-Slave-Replikation | Transaktionsreplikation | |
-| Skalierung** | | | |
+| **Replication, | Master-slave replication | Transaction replication | |
+| skaling** | | | |
+------------------------+------------------------------------------------+------------------------------------------------+------------------------------------------------+
-| **Anmerkungen** | | Mit R können Analysen direkt auf Datenbankebene| |
-| | | durchgeführt werden. | |
+| **Remarks** | | With R, analyzes can be carried out directly | |
+| | | at the database level. | |
+------------------------+------------------------------------------------+------------------------------------------------+------------------------------------------------+
.. _`eXist`: http://exist-db.org/
@@ -46,4 +47,4 @@ Beispiele für XML-Datenbanksysteme sind eXist und MonetDB.
.. _`exist-db.org/exist/apps/doc/documentation`: https://exist-db.org/exist/apps/doc/documentation
.. _`www.monetdb.org/Documentation`: https://www.monetdb.org/Documentation
.. _`docs.basex.org`: https://docs.basex.org/wiki/Main_Page
-.. _`Geo-Daten`: https://docs.basex.org/wiki/Geo_Module
+.. _`geographic data`: https://docs.basex.org/wiki/Geo_Module
diff --git a/docs/data-rw/overview.rst b/docs/data-rw/overview.rst
index 26996cb9..42f5ee2d 100644
--- a/docs/data-rw/overview.rst
+++ b/docs/data-rw/overview.rst
@@ -1,8 +1,8 @@
-Überblick
-=========
+Overview
+========
-Entfernte Speichermedien
-------------------------
+Remote storage media
+--------------------
`boto3 `_
S3
@@ -16,26 +16,25 @@ Entfernte Speichermedien
`PyArrow `_
HDFS
-Geodaten
---------
+Geodata
+-------
`Rasterio `_
- liest und schreibt GeoTIFF und andere Formen von Raster-Datasets
+ reads and writes GeoTIFF and other forms of raster datasets.
`Geospatial Data Abstraction Library (GDAL) `_
- bietet eine Low-Level-, aber leistungsfähigere API zum Lesen und Schreiben
- hunderter Datenformate.
+ provides a low-level but more powerful API for reading and writing hundreds
+ of data formats.
`satpy `_
- Einfach zu verwendende API für Satellitenbildformate von Sensoren wie
- `MODIS `_, `Sentinel-2
+ Easy to use API for sensors of satellite images like `MODIS
+ `_, `Sentinel-2
`_ etc.
`sentinelsat `_
- Suchen und Herunterladen von Copernicus Sentinel-Satellitenbildern über
- Befehlszeile oder Python.
+ Find and download Copernicus Sentinel satellite imagery using command line
+ or Python.
`fiona `_
- liest und schreibt ``*shp``- und ``*json``-Daten und viele weitere Formate.
+ reads and writes ``*shp``- and ``*json`` data and many other formats.
`pyproj `_
- Python-Schnittstelle zu `PROJ `_, einer Bibliothek für
- kartografische Projektionen und Koordinatentransformationen.
+ Python interface to `PROJ `_, a library for cartographic
+ projections and coordinate transformations.
`pyModis `_
- Sammlung von Python-Skripten zum Herunterladen und Mosaizieren von
- MODIS-Daten.
+ Collection of Python scripts for downloading and mosaicking MODIS data.
diff --git a/docs/data-rw/postgresql/alembic.rst b/docs/data-rw/postgresql/alembic.rst
index 5bd73e8c..8677976e 100644
--- a/docs/data-rw/postgresql/alembic.rst
+++ b/docs/data-rw/postgresql/alembic.rst
@@ -1,21 +1,21 @@
Alembic
=======
-`Alembic `_ basiert auf SQLAlchemy und dient als
-Datenbankmigrationswerkzeug mit den folgenden Funktionen:
+`Alembic `_ is based on SQLAlchemy and serves
+as a database migration tool with the following functions:
-* ``ALTER``-Anweisungen an eine Datenbank ausgeben um die Strukturen von
- Tabellen und anderen Konstrukten zu ändern
-* System zum Erstellen von Migrationsskripten. Optional kann auch die
- Reihenfolge der Schritte für das Downgrade angegeben werden.
-* Die Skripte werden in einer bestimmten Reihenfolge ausgeführt.
+* ``ALTER`` statements to a database to change the structure of tables and other
+ constructs
+* System for creating migration scripts. Optionally, the sequence of steps for
+ the downgrade can also be specified.
+* The scripts are executed in a specific order.
-Migrationsumgebung erstellen
+Create migration environment
----------------------------
-Das Migration Environment ist ein Verzeichnis, das für eine bestimmte Anwendung
-spezifisch ist. Sie wird mit dem ``ini``-Befehl von Alembic erstellt und
-anschließend zusammen mit dem Quellcode der Anwendung verwaltet.
+The Migration Environment is a directory that is specific to a particular
+application. It is created with the Alembic ``ini`` command and then managed
+along with the application’s source code.
::
@@ -30,10 +30,7 @@ anschließend zusammen mit dem Quellcode der Anwendung verwaltet.
Please edit configuration/connection/logging settings in
'/path/to/myproject/alembic.ini' before proceeding.
-Die Struktur eines solchen Migrationsumgebung kann später dann z.B. so
-aussehen:
-
-::
+The structure of such a migration environment can e.g. look like this::
myproject/
└── alembic
@@ -46,11 +43,9 @@ aussehen:
├── 3512b954651e_add_account.py
└── 3adcc9a56557_rename_username_field.py
-Vorlagen
---------
-
-Alembic erhält eine Reihe von Vorlagen, die mit ``list`` angezeigt werden
-können::
+Templates
+---------
+Alembic includes a number of templates that can be displayed with list::
$ alembic list_templates
Available templates:
@@ -63,10 +58,10 @@ können::
alembic init --template pylons ./scripts
-ini-Datei konfigurieren
------------------------
+Configure ``ini`` file
+----------------------
-Die mit der ``generic``-Vorlage erstellte Datei sieht folgendermaßen aus::
+The file created with the ``generic`` template looks like this::
# A generic, single database configuration.
@@ -143,27 +138,27 @@ Die mit der ``generic``-Vorlage erstellte Datei sieht folgendermaßen aus::
datefmt = %H:%M:%S
``%(here)s``
- Ersetzungsvariable zum Erstellen absoluter Pfade
+ Replacement variable for creating absolute paths
``file_template``
- Dies ist das Namensschema, das zum Generieren neuer Migrationsdateien
- verwendet wird. Zu den verfügbaren Variablen gehören:
+ This is the naming scheme used to generate new migration files. The
+ available variables include:
``%%(rev)s``
- Revision-ID
+ Revision ID
``%%(slug)s``
- Verkürzte Revisionsnachricht
+ Abbreviated revision message
``%%(year)d, %%(month).2d, %%(day).2d, %%(hour).2d, %%(minute).2d, %%(second).2d``
- Erstellungszeitpunkt
+ Creation time
-Erstellen eines Migrationsskripts
----------------------------------
+Create a migration script
+-------------------------
-Eine neue Revision kann erstellt werden mit::
+A new revision can be created with::
$ alembic revision -m "create account table"
Generating /path/to/yourproject/alembic/versions/1975ea83b712_create_account_table.py...done
-Die Datei ``1975ea83b712_create_account_table.py`` sieht dann folgendermaßen aus::
+Then the file ``1975ea83b712_create_account_table.py`` looks like this::
"""create account table
@@ -188,15 +183,15 @@ Die Datei ``1975ea83b712_create_account_table.py`` sieht dann folgendermaßen au
pass
``down_revision``
- Variable, die Alembic mitteilt, in welcher Reihenfolge die Migrationen
- ausgeführt werden sollen, z.B.::
+ Variable that tells Alembic in which order the migrations should be carried
+ out, e.g.::
# revision identifiers, used by Alembic.
revision = 'ae1027a6acf'
down_revision = '1975ea83b712'
``upgrade``, ``downgrade``
- z.B.::
+ e.g.::
def upgrade():
op.create_table(
@@ -209,49 +204,47 @@ Die Datei ``1975ea83b712_create_account_table.py`` sieht dann folgendermaßen au
def downgrade():
op.drop_table('account')
- ``create_table()`` und ``drop_table()`` sind Alembic-Direktiven. Einen
- Überblick über alle Alembic-Direktiven erhaltet ihr in der `Operation Reference
+ ``create_table()`` and ``drop_table()`` are Alembic directives. You can get
+ an overview of all Alembic directives in the `Operation Reference
`_.
-Ausführen von Migration
------------------------
+Run migration
+-------------
-Erste Migration::
+First migration::
$ alembic upgrade head
INFO [alembic.context] Context class PostgresqlContext.
INFO [alembic.context] Will assume transactional DDL.
INFO [alembic.context] Running upgrade None -> 1975ea83b712
-Wir können auch direkt auf Revisionsnummern verweisen::
+We can also refer directly to revision numbers::
$ alembic upgrade ae1
-Auch relative Migrationen können angestoßen werden::
+Relative migrations can also be initiated::
$ alembic upgrade +2
-oder::
+or::
$ alembic downgrade -1
-oder::
+or::
$ alembic upgrade ae10+2
-Informationen anzeigen
-----------------------
+Display Information
+-------------------
-Aktuelle Version
- ::
+Current version::
$ alembic current
INFO [alembic.context] Context class PostgresqlContext.
INFO [alembic.context] Will assume transactional DDL.
Current revision for postgresql://scott:XXXXX@localhost/test: 1975ea83b712 -> ae1027a6acf (head), Add a column
-Historie
- ::
+History::
$ alembic history --verbose
@@ -275,15 +268,15 @@ Historie
Revises:
Create Date: 2014-11-20 13:02:46.257104
- Die Historie kann auch spezifischer angezeigt werden::
+ The history can also be displayed more specifically::
$ alembic history -r1975ea:ae1027
- oder::
+ or::
$ alembic history -r-3:current
- oder::
+ or::
$ alembic history -r1975ea:
diff --git a/docs/data-rw/postgresql/db-api.rst b/docs/data-rw/postgresql/db-api.rst
index 816009d6..1794964f 100644
--- a/docs/data-rw/postgresql/db-api.rst
+++ b/docs/data-rw/postgresql/db-api.rst
@@ -1,27 +1,27 @@
DB-API 2.0
==========
-Die Python-API für Datenbank-Konnektoren ist einfach zu bedienen und zu
-verstehen. Die beiden wesentlichen Konzepte sind:
+The Python API for database connectors is easy to use and understand. The two
+main concepts are:
Connection
`Connection Objects
- `_ erlauben
- die folgenden Methoden:
+ `_ allow the
+ following methods:
``connect(parameters…)``
- öffnet die Verbindung zur Datenbank
+ opens the connection to the database
``.close()``
- schließt die Verbindung zur Datenbank
+ closes the connection to the database
``.commit()``
- überträgt die ausstehende Transaktion zur Datenbank
+ transfers the outstanding transaction to the database
``.rollback()``
- Diese Methode ist optional da nicht alle Datenbanken das Zurückrollen
- von Transaktionen erlauben.
+ This method is optional as not all databases allow transactions to be
+ rolled back.
``.cursor ()``
- Rückgabe eines neuen Corsor-Objekts über die Verbindung
+ Return of a new cursor object via the connection.
- Beispiel::
+ Example::
import driver
@@ -38,16 +38,16 @@ Connection
conn.close()
Cursor
- `Cursorobjekte `_
- werden zum Verwalten des Kontexts einer ``.fetch*()``-Methode verwendet.
+ `Cursor objects `_
+ are used to manage the context of a ``.fetch*()`` method.
- Dabei sind Cursor, die in derselben *Connection* erstellt werden, nicht
- isoliert voneinander.
+ Cursors that are created in the same connection are not isolated from one
+ another.
- Es gibt zwei Attribute für Cursor-Objekte:
+ There are two attributes for cursor objects:
``.description``
- enthält die folgenden sieben Elemente:
+ contains the following seven elements:
#. ``name``
#. ``type_code``
@@ -57,17 +57,15 @@ Cursor
#. ``scale``
#. ``null_ok``
- Die ersten beiden Elemente (``name`` und ``type_code``) sind
- obligatorisch, die anderen fünf sind optional und werden auf
- ``None`` gesetzt, wenn keine sinnvollen Werte angegeben
- werden können.
+ The first two elements (``name`` and ``type_code``) are mandatory, the
+ other five are optional and are set to ``None`` if no meaningful values
+ can be specified.
``.rowcount``
- gibt die Anzahl der Zeilen an, die der letzte Aufruf von
- `` .execute*()`` mit ``SELECT``, ``UPDATE`` oder ``INSERT``
- ergab.
+ indicates the number of lines that the last call of ``.execute*()`` with
+ ``SELECT``, ``UPDATE`` or ``INSERT`` resulted in.
- Beispiel::
+ Example::
cursor = conn.cursor()
cursor.execute("""
diff --git a/docs/data-rw/postgresql/fdw.rst b/docs/data-rw/postgresql/fdw.rst
index 66d350f1..8517ca5d 100644
--- a/docs/data-rw/postgresql/fdw.rst
+++ b/docs/data-rw/postgresql/fdw.rst
@@ -1,46 +1,45 @@
Foreign Data Wrappers (FDW)
===========================
-2003 wurde SQL erweitert um SQL/MED (*SQL Management of External Data*).
-PostgreSQL 9.1 unterstützte dies *read-only*, 9.3 dann auch schreibend.
-Seitdem sind eine Reihe von Foreign Data Wrappers (FDW) für PostgreSQL
-entwickelt worden.
+In 2003, SQL was expanded to include SQL/MED (SQL Management of External
+Data). PostgreSQL 9.1 supports this read-only, 9.3 then also write. Since then,
+a number of Foreign Data Wrappers (FDW) have been developed for PostgreSQL.
-Im Folgenden nur eine kleine Auswahl der bekanntesten FDW:
+The following is just a small selection of the best-known FDWs:
.. note::
- Beachtet bitte, dass die meisten dieser Wrapper nicht offiziell von der
- PostgreSQL Global Development Group (PGDG) unterstützt werden.
+ Please note that most of these wrappers are not officially supported by the
+ PostgreSQL Global Development Group (PGDG).
-Generische SQL-Wrapper
-----------------------
+Generic SQL wrappers
+--------------------
ODBC
- Nativer ODBC FDW für PostgreSQL ≥9.5
+ Native ODBC FDW for PostgreSQL ≥9.5
* `GitHub `_
Multicorn
- `Multicorn `_ erleichtert die Entwicklung von FDWs.
- So verwendet z.B. `SQLAlchemy `_ `Multicorn
- `_ um seine Daten in PostgreSQL zu speichern.
+ `Multicorn `_ makes it easy to develop FDWs. For
+ example, `SQLAlchemy `_ uses Multicorn to save
+ your data in PostgreSQL.
* `GitHub `_
* `PGXN `_
* `Docs `_
VirtDB
- Nativer Zugang zu VirtDB (SAP ERP, Oracle RDBMS)
+ Native access to VirtDB (SAP ERP, Oracle RDBMS)
* `GitHub `_
-Spezifische SQL-Wrapper
------------------------
+Specific SQL wrappers
+---------------------
postgres_fdw
- Mit `postgres_fdw
- `_ kann auf Daten
- aus anderen PostgreSQL-Servern zugegriffen werden.
+ With `postgres_fdw
+ `_ data from
+ other PostgreSQL servers can be accessed.
* `Git
`_
@@ -48,114 +47,114 @@ postgres_fdw
* `Docs `_
Oracle
- FDW für Oracle-Datenbanken
+ FDW for Oracle databases
* `GitHub `_
* `PGXN `_
* `Docs `_
MySQL
- FDW für MySQL ab PostgrSQL≥9.3
+ FDW for MySQL from PostgreSQL≥9.3
* `GitHub `_
* `PGXN `_
SQLite
- FDW für SQLite3
+ FDW for SQLite3
* `GitHub `_
* `PGXN `_
* `Docs `_
-NoSQL-Database-Wrappers
+NoSQL database wrappers
-----------------------
Cassandra
- FDW für `Cassandra `_
+ FDW for `Cassandra `_
* `GitHub `_
* `rankactive `_
Neo4j
- FWD für `Neo4j `_, die auch eine Cypher-Funktion für
- PostgreSQL bereitstellt
+ FWD for `Neo4j `_, which also provides a cypher
+ function for PostgreSQL
* `GitHub `_
* `Docs `_
Redis
- FDW für `Redis `_
+ FDW for `Redis `_
* `GitHub `_
Riak
- FDW für `Riak `_
+ FDW for `Riak `_
* `GitHub `_
-File-Wrappers
+File wrappers
-------------
CSV
- Offizielle Erweiterung für PostgreSQL 9.1
+ Official extension for PostgreSQL 9.1
* `Git `_
* `Docs `_
JSON
- FDW für JSON-Dateien
+ FDW for JSON files
* `GitHub `_
- * `Beispiel `_
+ * `Example `_
XML
- FDW für XML-Dateien
+ FDW for XML files
* `GitHub `_
* `PGXN `_
-Geo Wrappers
+Geo wrappers
------------
GDAL/OGR
- FDW für den `GDAL/OGR `_-Treiber einschließlich
- Datenbanken wie Oracle und SQLite sowie Dateiformate wie MapInfo, CSV,
- Excel, OpenOffice, OpenStreetMap PBF und XML.
+ FDW for the `GDAL/OGR `_ driver including databases
+ like Oracle and SQLite as well as file formats like MapInfo, CSV, Excel,
+ OpenOffice, OpenStreetMap PBF and XML.
* `GitHub `_
Geocode/GeoJSON
- Eine Sammlung von FDWs für PostGIS
+ A collection of FDWs for PostGIS
* `GitHub `_
Open Street Map PBF
- FDW für `Open Street Map PBF
+ FDW for `Open Street Map PBF
`_
* `GitHub `_
-Generische Web-Wrappers
------------------------
+Generic web wrappers
+--------------------
ICAL
- FDW für ICAL
+ FDW for ICAL
* `GitHub `_
* `Docs `_
IMAP
- FDW für das *Internet Message Access Protocol (IMAP)*
+ FDW for the Internet Message Access Protocol (IMAP)
* `Docs `_
RSS
- FDQ für RSS-Feeds
+ FDQ for RSS feeds
* `Docs `_
.. seealso::
- * `PostgreSQL Wiki
+ * `PostgreSQL wiki
`_
- * `PGXN-Website `_
+ * `PGXN website `_
diff --git a/docs/data-rw/postgresql/index.rst b/docs/data-rw/postgresql/index.rst
index 17b18d70..193860b1 100644
--- a/docs/data-rw/postgresql/index.rst
+++ b/docs/data-rw/postgresql/index.rst
@@ -1,39 +1,39 @@
PostgreSQL
==========
-Grundfunktionen
----------------
+Basic funtions
+--------------
-ACID-konform
- ACID (**A** tomicity, **C** onsistency, **I** solation, **D** urability) ist
- eine Reihe von Eigenschaften, die Datenbanktransaktionen erfüllen sollten
- um auch im Störungsfall weiterhin die Gültigkeit der Daten gewährleisten
- zu können.
+ACID compliant
+ ACID (**A** tomicity, **C** onsistency, **I** solation, **D** urability) is
+ a series of properties that database transactions should fulfill to
+ guarantee the validity of the data even in the event of a fault.
SQL:2011
- Mit `temporal_tables `_ wird
- auch der SQL-Standard ISO/IEC 9075:2011 erfüllt, u.a. durch:
+ Ttemporal_tables `_ also meet
+ the SQL standard ISO/IEC 9075:2011, including:
- * Time Period definitions
+ * Time period definitions
* Valid time tables
* Transaction time tables (system-versioned tables) with time-sliced and
sequenced queries
-Datentypen
- Folgende Datentypen werden out of the box unterstützt:
+Data types
+ The following data types are supported out of the box:
- * primitiven Datentypen: Integer, Numeric, String, Boolean
- * Strukturierte Datentypen: Date/Time, Array, Range, UUID
- * Dokumenttypen: JSON/JSONB, XML, Key-value (`Hstore
- `_)
- * Geometrische Datentypen: Point, Line, Circle, Polygon
- * Anpassungen: Composite, Custom Types
+ * primitive data types: Integer, Numeric, String, Boolean
-Transactional Data Definition Language (DDL)
- Transactional DDL wird via `Write-Ahead Logging
- `_ realisiert.
- Dabei sind auch große Änderungen möglich, nicht jedoch *add* und *drop* von
- Datenbanken und Tabellen::
+ * structured data types: Date/Time, Array, Range, UUID
+
+ * document types: JSON/JSONB, XML, key-value (`Hstore
+ `_)
+ * geometric data types: point, line, circle, polygon
+ * adjustments: composite, custom Types
+ * transactional data definition language (DDL)
+
+ Transactional DDL is implemented via `write-ahead logging
+ `_. Big changes
+ are also possible, but not adding and dropping databases and tables::
$ psql mydb
mydb=# DROP TABLE IF EXISTS foo;
@@ -51,25 +51,25 @@ Transactional Data Definition Language (DDL)
ERROR: relation "foo" does not exist
Concurrent Index
- PostgreSQL kann Indizes erstellen ohne Schreibzugriffe auf Tabellen sperren
- zu müssen.
+ PPostgreSQL can create indexes without having to lock write access to
+ tables.
.. seealso::
`Building Indexes Concurrently
`_
-Erweiterungen
- PostgreSQL kann einfach erweitert werden. Das mit dem Quellcode gelieferte
- `contrib/ `_-Verzeichnis
- enthält verschiedene Erweiterungen, die in `Appendix F
- `_ beschrieben sind.
- Andere Erweiterungen sind unabhängig entwickelt worden, wie z.B. `PostGIS
- `_ oder `Slony-I `_.
+Extensions
+ PostgreSQL can easily be extended. The `contrib/
+ `_ directory
+ supplied with the source code contains various extensions that are described
+ in `Appendix F `_. Other
+ extensions have been developed independently, such as :doc:`postgis/index`
+ or `Slony-I `_.
Common Table Expression
`WITH Queries (Common Table Expressions)
- `_ unterteilt
- komplexe Anfragen in einfachere Anfragen, z.B.::
+ `_ divides
+ complex queries into simpler queries, e.g .::
WITH regional_insolation AS (
SELECT region, SUM(amount) AS total_insolation
@@ -81,9 +81,9 @@ Common Table Expression
WHERE total_insolation > (SELECT SUM(total_insolation)/10 FROM regional_insolation)
)
- Zudem gibt es auch noch einen ``RECURSIVE``-Modifier, der die
- ``WITH``-Abfrage auf seine eigene Ausgabe verweist. Im folgenden ein
- Beispiel zum Summieren der Zahlen von 1 bis 100::
+ There is also a ``RECURSIVE`` modifier that refers the ``WITH`` query to its
+ own output. The following is an example of how to sum the numbers from 1 to
+ 100::
WITH RECURSIVE t (n) AS (
WERTE (1)
@@ -94,23 +94,23 @@ Common Table Expression
Multi-Version Concurrency Control (MVCC)
`Multi-Version Concurrency Control
- `_ erlaubt, dass zwei
- oder mehr Sessions gleicheitig auf dieselben Daten zugreifen ohne dabei die
- Integrität der Daten zu gefährden.
+ `_ allows two or more
+ sessions to access the same data at the same time without compromising the
+ integrity of the data.
-Cross Platform
- PostgreSQL läuft auf gängigen CPU-Architekturen wie ``x86``, ``PowerPC``,
- ``Sparc``, ``ARM``, ``MIPS`` oder ``PA-RISC``. Auch die meisten
- Betriebssysteme werden unterstützt: ``Linux``, ``Windows``, ``FreeBSD``,
- ``OpenBSD``, ``NetBSD``, ``Mac OS``, ``AIX``, ``HP/UX`` und ``Solaris``.
+Cross platform
+ PostgreSQL runs on common CPU architectures such as ``x86``, ``PowerPC``,
+ ``Sparc``, ``ARM``, ``MIPS`` or `PA-RISC```. Most operating systems are also
+ supported: ``Linux``, ``Windows``, ``FreeBSD``, ``OpenBSD``, ``NetBSD``,
+ ``Mac OS``, ``AIX``, ``HP/UX`` and ``Solaris``.
.. seealso::
`explain.depesz.com `_
- Web-App, die PostgreSQLs `EXPLAIN
- `_- und
+ Web app that visualises PostgreSQL’s `EXPLAIN
+ `_ and
`ANALYZE `_
- -Anweisungen visualisiert.
+ statements.
.. toctree::
:hidden:
diff --git a/docs/data-rw/postgresql/orm.rst b/docs/data-rw/postgresql/orm.rst
index b16a536e..1c8547f3 100644
--- a/docs/data-rw/postgresql/orm.rst
+++ b/docs/data-rw/postgresql/orm.rst
@@ -1,28 +1,27 @@
-Objektrelationale Abbildung
-===========================
+Object-relational mapping
+=========================
- «Objektrelationale Abbildung (englisch object-relational mapping, ORM) ist
- eine Technik der Softwareentwicklung, mit der ein in einer
- objektorientierten Programmiersprache geschriebenes Anwendungsprogramm seine
- Objekte in einer relationalen Datenbank ablegen kann.»[#]_
+ «Object-relational mapping (…) in computer science is a programming
+ technique for converting data between incompatible type systems using
+ object-oriented programming languages.»[#]_
-.. [#] `Wikipedia: Objektrelationale Abbildung
- `_
+.. [#] `Wikipedia: relational mapping
+ `_
-Im einfachsten Fall werden Klassen auf Tabellen abgebildet, wobei jedes Objekt einer
-Tabellenzeile entspricht und jedem Attribut eine Tabellenspalte.
+In the simplest case, classes are mapped to tables, with each object
+corresponding to a table row and each attribute to a table column.
-Um Vererbungshierarchien abzubilden gibt es im Wesentlichen drei verschiedene
-Verfahren:
+There are essentially three different methods of mapping inheritance
+hierarchies:
*Single Table*
- Dabei wird eine Tabelle pro Vererbungshierarchie angelegt, wobei alle
- Attribute der Basisklasse und aller davon abgeleiteten Klassen in einer
- gemeinsamen Tabelle gespeichert wird.
+ One table is created for each inheritance hierarchy, with all attributes of
+ the base class and all classes derived from it being stored in a common
+ table.
*Joined Table* oder *Class Table*
- Dabei wird eine Tabelle je Unterklasse angelegt und für jede davon
- abgeleitete Unterklasse eine weitere Tabelle.
-*Table per Class* oder *Concrete Table*
- Dabei werden die Attribute der abstrakten Basisklasse in die Tabellen für
- die konkreten Unterklassen mit aufgenommen. Hierbei ist es jedoch nicht
- möglich, mit einer Abfrage Instanzen verschiedener Klassen zu ermitteln.
+ A table is created for each subclass and a further table for each subclass
+ derived from it.
+*Table per Class* or *Concrete Table*
+ The attributes of the abstract base class are included in the tables for the
+ specific subclasses. However, it is not possible to determine instances of
+ different classes with one query.
diff --git a/docs/data-rw/postgresql/plang.rst b/docs/data-rw/postgresql/plang.rst
index a535e539..5e8a30f8 100644
--- a/docs/data-rw/postgresql/plang.rst
+++ b/docs/data-rw/postgresql/plang.rst
@@ -1,19 +1,19 @@
-Prozedurale Programmiersprachen
-===============================
+Procedural programming languages
+================================
-Mit PostgreSQL können benutzerdefinierte Funktionen außer in SQL und C auch in
-anderen Sprachen geschrieben werden.
+With PostgreSQL, user-defined functions can be written in languages other than
+SQL and C.
-In der Standarddistribution von PostgreSQL stehen derzeit vier prozedurale
-Sprachen zur Verfügung:
+There are currently four procedural languages available in the standard
+PostgreSQL distribution:
* `PL/pgSQL `_
* `PL/Tcl `_
* `PL/Perl `_
* `PL/Python `_
-Es sind zusätzliche prozedurale Programmiersprachen verfügbar, die jedoch nicht
-in der Kerndistribution enthalten sind:
+Additional procedural programming languages are available but are not included
+in the core distribution:
* `PL/Java `_
* `PL/Lua `_
@@ -25,5 +25,5 @@ in der Kerndistribution enthalten sind:
`External Procedural Languages
`_
-Zusätzlich können andere Sprachen definiert werden, s. `Writing A Procedural
+In addition, other languages can be defined, see also `Writing A Procedural
Language Handler `_.
diff --git a/docs/data-rw/postgresql/postgis/index.rst b/docs/data-rw/postgresql/postgis/index.rst
index b9f3fbff..b6f82085 100644
--- a/docs/data-rw/postgresql/postgis/index.rst
+++ b/docs/data-rw/postgresql/postgis/index.rst
@@ -1,29 +1,28 @@
PostGIS
=======
-`PostGIS `_ ist eine Erweiterung für PostgreSQL, die
-geografische Objekte und Funktionen umfasst. Die Erweiterung implementiert u.a.
-die `Simple-Feature-Access `_-Spezifikation
-des `Open Geospatial Consortium `_. Obwohl PostgreSQL
-bereits Geometrietypen unterstützt, sind diese jedoch für geographische Aufgaben
-ungenügend. Daher erstellt PostGIS eigene Datentypen, die besser für
-geographische Aufgaben geeignet sind. Im Einzelnen werden folgende
-Geometrietypen unterstützt:
+`PostGIS `_ is an extension for PostgreSQL that includes
+geographic objects and functions. The extension implements i.a. the `Simple
+Feature Access `_ specification of the `Open
+Geospatial Consortium `_. Although PostgreSQL already
+supports geometry types, these are insufficient for geographic tasks. Therefore,
+PostGIS creates its own data types that are better suited for geographic tasks.
+The following geometry types are supported:
-* OpenGIS mit Well-Known Text und Well-Known Binary
-* Extended Well-Known Text und Extended Well-Known Binary zusätzlich mit
- Höheninformationen und/oder Messwerten
-* SQL/MM mit Circularstring, Compoundcurve, Curvepolygon, Multicurve und
+* OpenGIS with well-known text and well-known binary
+* Extended Well-Known Text and Extended Well-Known Binary also with height
+ information and/or measured values
+* SQL/MM with Circularstring, Compoundcurve, Curvepolygon, Multicurve und
Multisurface
-`GEOS `_ hingegen enthält die zahlreichen
-räumlichen Funktionen und Operatoren für geographische Daten.
+`GEOS `_, on the other hand, contains the numerous
+spatial functions and operators for geographic data.
-`pgRouting `_ schließlich enthält Routing-Funktionen
-auf Basis von PostGIS.
+Finally, `pgRouting `_ contains routing functions based
+on PostGIS.
-Im `OpenStreetMap `_-Projekt wird PostGIS zum
-Rendern von Karten mit `Mapnik `_ verwendet.
+In the `OpenStreetMap `_ project, PostGIS is
+used to render maps with `Mapnik `_.
.. toctree::
:hidden:
diff --git a/docs/data-rw/postgresql/postgis/install.rst b/docs/data-rw/postgresql/postgis/install.rst
index 3f3b60e8..a4b2f23f 100644
--- a/docs/data-rw/postgresql/postgis/install.rst
+++ b/docs/data-rw/postgresql/postgis/install.rst
@@ -1,43 +1,43 @@
-PostGIS installieren
-====================
+Install PostGIS
+===============
-Für Ubuntu 20.04 und 18.04 sowie Debian 10 könnt Ihr PostGIS einfach
-installieren mit:
+For Ubuntu 20.04 and 18.04 as well as Debian 10 you can simply install PostGIS
+with:
-code-block:: console
+.. code-block:: console
$ sudo apt install postgis postgresql-12-postgis-3
-Anschließend könnt Ihr PostGIS aktivieren.
+Then you can activate PostGIS.
-#. Wechseln zum PostgreSQL-User:
+#. Switch to the PostgreSQL user:
.. code-block:: console
$ sudo -i -u postgres
-#. Testuser und Datenbank erstellen:
+#. Create test user and database:
.. code-block:: console
$ createuser postgis
$ createdb postgis_db -O postgis
-#. Verbindung zur Datenbank herstellen:
+#. Establish a connection to the database:
.. code-block:: console
$ psql -d postgis_db
psql (11.5 (Debian 11.5-3.pgdg100 + 1))
-#. Aktivieren der PostGIS-Erweiterung in der Datenbank:
+#. Activate the PostGIS extension in the database:
.. code-block:: console
ppostgis_db = # CREATE EXTENSION postgis;
CREATE EXTENSION
-#. Überprüfen, ob PostGIS funktioniert:
+#. Check that PostGIS is working:
.. code-block:: console
diff --git a/docs/data-rw/postgresql/postgis/load.rst b/docs/data-rw/postgresql/postgis/load.rst
index 608dde44..8a134975 100644
--- a/docs/data-rw/postgresql/postgis/load.rst
+++ b/docs/data-rw/postgresql/postgis/load.rst
@@ -1,25 +1,25 @@
-Laden von Geodaten
-==================
+Loading geospatial data
+=======================
-Nun Laden wir einige Geodaten in unsere Datenbank, damit wir uns mit den Tools
-und Prozessen zum Abrufen dieser Daten vertraut machen können.
+Now let`s load some geospatial data into our database so that we can familiarise
+ourselves with the tools and processes used to retrieve that data.
-`Natural Earth `_ bietet eine großartige
-Quelle für Basisdaten für die ganze Welt in verschiedenen Maßstäben. Und sas
-Beste ist, dass diese Daten gemeinfrei sind:
+`Natural Earth `_ provides a great source of
+basic data for the whole world on various scales. And the best thing is that
+this data is in the public domain:
-#. Herunterladen der Daten
+#. Download the data
-.. code-block:: console
+ .. code-block:: console
$ mkdir nedata
$ cd !$
cd nedata
$ wget http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/110m/cultural/ne_110m_admin_0_countries.zip
-#. Entpacken der Datei
+#. Unzip the file
-.. code-block:: console
+ .. code-block:: console
$ sudo apt install unzip
$ unzip ne_110m_admin_0_countries.zip
@@ -32,30 +32,29 @@ Beste ist, dass diese Daten gemeinfrei sind:
inflating: ne_110m_admin_0_countries.shp
inflating: ne_110m_admin_0_countries.shx
-#. Laden in unsere ``postgis_db``-Datenbank
+#. Load into our ``postgis_db`` database
- Die Dateien ``.dbf``, ``.prj``, ``.shp`` und ``.shp`` bilden ein sog.
- ShapeFile, ein beliebtes Geodaten-Datenformat, das von der GIS-Software
- verwendet wird. Um dies in unsere Datenbank zu laden, benötigen wir
- zusätzlich `GDAL `_, die *Geospatial Data Abstraction
- Library*. Wenn wir GDAL installieren, erhalten wir auch OGR, *OpenGIS Simple
- Features Reference Implementation*, eine Vektordaten-Übersetzungsbibliothek,
- mit der wir das Shapefile in Daten übersetzen können.
+ The files ``.dbf``, ``.prj``, ``.shp`` and ``.shp`` form a so-called
+ ShapeFile, a popular geospatial data format that is used by GIS software. To
+ load this into our database, we also need `GDAL `_, the
+ *Geospatial Data Abstraction Library*. When we install GDAL we also get OGR,
+ *OpenGIS Simple Features Reference Implementation*, a vector data translation
+ library that we can use to translate the shapefile into data.
- #. GDAL kann un einfach mit dem Paketmanager installiert werden:
+ #. GDAL can be easily installed with the package manager:
.. code-block:: console
$ sudo apt install gdal-bin
- #. Anschließend wechseln wir in den ``postgresql``-User:
+ #. Then we switch to the ``postgresql`` user:
.. code-block:: console
$ sudo -i -u postgres
- #. Nun konvertieren wir das Shapefile mit ``ogr2ogr`` und importieren es in
- unsere Datenbank:
+ #. Now we convert the shapefile with ``ogr2ogr`` and import it into our
+ database:
.. code-block:: console
@@ -64,27 +63,27 @@ Beste ist, dass diese Daten gemeinfrei sind:
/home/veit/nedata/ne_110m_admin_0_countries.shp
``-f PostgreSQL``
- gibt an, dass das Ziel eine PostgreSQL-Datenbank ist
+ iindicates that the target is a PostgreSQL database
``PG:dbname=postgis_db``
- gibt den PostgreSQL-Datenbanknamen an.
- Neben dem Namen können so auch weitere Optionen angegeben werden, allgemein:
+ specifies the PostgreSQL database name. In addition to the name, other
+ options can also be specified, in general:
.. code-block::
PG:"dbname='db_ename' host='addr' port='5432' user='x' password='y'"
``-progress``
- gibt einen Fortschrittsbalken aus
+ outputs a progress bar
``-nlt PROMOTE_TO_MULTI``
- gibt an, dass alle Objekttypen als Multipolygone in die Datenbank
- geladen werden sollen
+ indicates that all object types should be loaded into the database as
+ multipolygons
``/home/veit/nedata/ne_110m_admin_0_countries.shp``
- gibt den Pfad zur Eingabedatei an
+ specifies the path to the input file
.. seealso::
* `ogr2ogr `_
- #. Überprüfen des Imports mit ``ogrinfo``
+ #. Check the import with ``ogrinfo``
.. code-block:: console
@@ -98,7 +97,7 @@ Beste ist, dass diese Daten gemeinfrei sind:
Feature Count: 177
…
- #. Alternativ können wir uns auch einzelne Tabellen auflisten lassen:
+ #. Alternatively, we can also list individual tables:
.. code-block:: console
@@ -111,7 +110,7 @@ Beste ist, dass diese Daten gemeinfrei sind:
public | spatial_ref_sys | table | postgres
(2 rows)
- #. Schließlich können wir uns bei der Datenbank abmelden mit
+ #. Finally, we can log out of the database with
.. code-block:: console
diff --git a/docs/data-rw/postgresql/postgis/optimising.rst b/docs/data-rw/postgresql/postgis/optimising.rst
index 98998275..63450530 100644
--- a/docs/data-rw/postgresql/postgis/optimising.rst
+++ b/docs/data-rw/postgresql/postgis/optimising.rst
@@ -1,44 +1,44 @@
-Optimieren von PostgreSQL für GIS-Datenbankobjekte
-==================================================
+Optimising PostgreSQL for GIS database objects
+==============================================
-In der Standardinstallation ist PostgreSQL sehr zurückhaltend konfiguriert um
-auf möglichst vielen Systemen lauffähig zu sein. GIS-Datenbankobjekte sind
-jedoch im Vergleich zu Textdaten groß. Daher sollte PostgreSQL so konfiguriert
-werden, dass sie mit diesen Objekten besser funktioniert. Hierfür konfigurieren
-wir die Datei ``/etc/postgresql/9.3/main/postgresql.conf`` folgendermaßen:
+In the standard installation, PostgreSQL is configured very cautiously so that
+it can run on as many systems as possible. However, GIS database objects are
+large compared to text data. Therefore, PostgreSQL should be configured to work
+better with these objects. To do this, we configure the
+``/etc/postgresql/9.3/main/postgresql.conf`` file as follows:
-#. ``shared_buffer`` sollte auf ca. 75% des gesamten Arbeitsspeichers geändert
- werden, jedoch 128 kB nie unterschreiten:
+#. ``shared_buffer`` should be changed to approx. 75% of the total working
+ memory, but never fall below 128 kB:
.. code-block::
shared_buffers = 768MB
-#. ``work_mem`` sollte auf mindestens 16MB erhöht werden:
+#. ``work_mem`` should be increased to at least 16MB:
.. code-block::
work_mem = 16MB
-#. ``maintenance_work_mem`` sollte auf 128MB erhöht werden:
+#. ``maintenance_work_mem`` should be increased to 128MB:
.. code-block::
maintenance_work_mem = 128MB
-#. ``checkpoint_segments`` sollte auf ``6`` gesetzt werden:
+#. ``checkpoint_segments`` should be set to ``6``:
.. code-block::
checkpoint_segments = 6
-#. Schließlich sollte noch ``random_page_cost`` auf ``2.0`` gesetzt werden.
+#. Finally, ``random_page_cost`` should be set to ``2.0``.
.. code-block::
random_page_cost = 2.0
-Damit die Änderungen übernommen werden, sollte PostgreSQL neu gestartet werden:
+PostgreSQL should be restarted for the changes to take effect:
.. code-block:: console
diff --git a/docs/data-rw/postgresql/psycopg2.rst b/docs/data-rw/postgresql/psycopg2.rst
index 000ef142..4069e6fd 100644
--- a/docs/data-rw/postgresql/psycopg2.rst
+++ b/docs/data-rw/postgresql/psycopg2.rst
@@ -1,18 +1,18 @@
Psycopg
=======
-`Pycopg `_ ist ein PostgreSQL-Adapter, der auf der
-C-Bibliothek für PostgreSQL `libpq
-`_ basiert. Er bietet u.a.:
+`Pycopg `_ is a PostgreSQL adapter based on the C
+library for PostgreSQL `libpq
+`_. Among other things, it
+offers:
-* DB-API-2.0-rKkompatibilität
-* Multithreading bei Thread Safety
+* DB API 2.0 compatibility
+* Multithreading with thread safety
* `Connections pooling `_
- um einen Cache von bestehenden Datenbankverbindungen für Anfragen verwenden
- zu können.
+ to be able to use a cache of existing database connections for queries.
* `Asynchronous
- `_ und
+ `_ and
`Coroutines support
`_
-* `Adaptation der Python Typen in SQL
+* `Adaptation of the Python types in SQL
`_
diff --git a/docs/data-rw/postgresql/sec.rst b/docs/data-rw/postgresql/sec.rst
index 13fbb59d..76c6c576 100644
--- a/docs/data-rw/postgresql/sec.rst
+++ b/docs/data-rw/postgresql/sec.rst
@@ -1,16 +1,14 @@
-Datenbank-Sicherheit
-====================
+Database security
+=================
-Datenbank-Berechtigungen
-------------------------
+Database permissions
+--------------------
-Das PostgreSQL-Login per Superuser ``postgres`` sollte immer nur über
-Unix-Domain-Sockets und über ``localhost`` erlaubt sein. Der Zugang mit
-`Peer-Authentifizierung
-`_ in der
-`pg_hba.conf
-`_-Datei kann
-hingegen gewährt werden:
+The PostgreSQL login via superuser ``postgres`` should only ever be allowed via
+Unix domain sockets and via ``localhost``. Access with `peer authentication
+`_ in the
+`pg_hba.conf `_,
+however, can be granted:
.. code-block::
@@ -18,34 +16,33 @@ hingegen gewährt werden:
local all postgres peer
host all all 10.23.42.1/24 scram-sha-256
-Die Datenbank sollte vom Datenbankadministrator angelegt und anschließend so
-konfiguriert werden, dass sich nicht jeder ``(PUBLIC)`` damit verbinden kann:
+The database should be created by the database administrator and then configured
+in such a way that not everyone ``(PUBLIC)`` can connect to it:
.. code-block:: postgresql
CREATE DATABASE myapp;
REVOKE ALL ON myapp FROM PUBLIC;
-Damit kann sich nur noch der Superuser mit der Datenbank ``myapp`` verbinden.
+This means that only the superuser can connect to the ``myapp`` database.
-Passwörter speichern
---------------------
+Save passwords
+--------------
-Passwörter sollten niemals im Klartext, also z.B. auch nicht in einer
-``.env``-Datei gespeichert werden. Beim Speichern und Übermitteln von
-Passwörtern sollte dies immer mit `Salts
-`_ versehen sein. Für
-PostgreSQL gibt es hierfür die Erweiterung `pgcrypto
-`_, die
-einfach aktiviert werden kann mit
+Passwords should never be in plain text, e.g. also not be saved in an ``.env``
+file. When saving and transmitting passwords, this should always be `salted
+`_. For PostgreSQL there is
+the extension `pgcrypto
+`_, which can be
+easily activated with
.. code-block:: postgresql
CREATE EXTENSION pgcrypto;
-Daher sollten bereits beim Anlegen sichere Passwörter vergeben werden, die
-anschließend z.B. in `Vault `_ o.ä.
-gespeichert werden:
+For this reason, secure passwords should be assigned when they are created,
+which can then get saved e.g. in `Vault `_ or
+similar:
.. code-block:: postgresql
@@ -53,9 +50,8 @@ gespeichert werden:
CREATE USER myapp_reader IN ROLE users PASSWORD '…';
CREATE USER myapp_writer IN ROLE users PASSWORD '…';
-Anschließend erhalten dann User mit der Rolle ``myapp_users`` zunächst
-``CONNECT``-Rechte und dann ``myapp_reader`` Leserechte und ``myapp_writer``
-Schreibrechte:
+Then users with the role ``myapp_users`` first get ``CONNECT`` rights and then
+ ``myapp_reader`` read rights and ``myapp_writer`` write rights:
.. code-block:: postgresql
@@ -63,8 +59,8 @@ Schreibrechte:
GRANT SELECT ON diagnosis_key TO myapp_reader;
GRANT INSERT ON diagnosis_key TO myapp_writer;
-Der User ``myapp_reader`` kann damit jedoch alle Daten auf einmal lesen. Auch
-dies ist ein Angriffspunkt, der besser durch eine Funktion beschnitten wird:
+The user ``myapp_reader`` can, however, read all data at once. This is also a
+point of attack that is better cut by a function:
.. code-block:: postgresql
@@ -73,9 +69,9 @@ dies ist ein Angriffspunkt, der besser durch eine Funktion beschnitten wird:
AS 'SELECT key_data FROM diagnosis_key WHERE id = in_id;'
LANGUAGE sql SECURITY DEFINER SET search_path = :schema, pg_temp;
-Anschließend wird die Funktion ``myapp_owner`` zugewiesen, ``myapp_reader`` und
-``myapp_writer`` die Berechtigungen entzogen und schließlich die Ausführung der
-Funktion ``myapp_reader`` erlaubt:
+Then the function ``myapp_owner`` is assigned, the authorisations for
+``myapp_reader`` and ``myapp_writer`` are revoked and finally the execution of
+the function ``myapp_reader`` is allowed:
.. code-block:: postgresql
@@ -83,18 +79,17 @@ Funktion ``myapp_reader`` erlaubt:
REVOKE ALL ON FUNCTION get_key_dataUUID) FROM PUBLIC;
GRANT EXECUTE ON FUNCTION get_key_data(UUID) TO myapp_reader;
-Damit kann ``myapp_reader`` also nur noch einen einzelnen Datensatz lesen.
+This means that ``myapp_reader`` can only read a single data record.
id
--
-Die ``id`` sollte nicht als ``serial``, ``bigserial`` o.ä. realisiert werden.
-Hochzählende Zahlen könnten von Angreifern leicht erraten werden. Daher ist der
-UUIDv4-Datentyp deutlich besser geeignet. In PostgreSQL könnt Ihr UUIDv4
-generieren mit der `uuid-ossp
-`_-Erweiterung oder für
-PostgreSQL≥9.4 auch der `pgcrypto
-`_-Erweiterung:
+The ``id`` shouldn`t be written as ``serial``, ``bigserial`` or similar.
+Counting numbers could be easily guessed by attackers. Therefore the UUIDv4 data
+type is much more suitable. In PostgreSQL you can generate UUIDv4 with the
+`uuid-ossp `_ extension
+or for PostgreSQL≥9.4 also the `pgcrypto
+`_ extension:
.. code-block:: postgresql
@@ -104,7 +99,7 @@ PostgreSQL≥9.4 auch der `pgcrypto
…
);
-oder
+or
.. code-block:: postgresql
@@ -114,28 +109,27 @@ oder
…
);
-Zeitstempel
------------
+Time stamp
+----------
-Gelegentlich werden Datum und Zeit als ``bigint``, also als Zahl, gespeichert,
-und dies obwohl es auch einen ``TIMESTAMP``-Datentyp gibt. Dies hätte den
-Vorteil, dass dann auch einfach mit ihnen gerechnet werden kann, also z.B.:
+Occasionally, the date and time are stored as ``bigint``, i.e. as a number, even
+though there is also a ``TIMESTAMP`` data type. This would have the advantage
+that you can easily count on them, for example:
.. code-block:: postgresql
SELECT age(submission_timestamp);
SELECT submission_timestamp - '1 day'::interval;
-Außerdem könnten die Daten nach einer bestimmten Zeit gelöscht werden, z.B. nach
-dreißig Tagen mit:
+In addition, the data could be deleted after a certain period of time, e.g.
+after thirty days with:
.. code-block:: postgresql
DELETE FROM diagnosis_key WHERE age(submission_timestamp) > 30;
-Das Löschen kann noch beschleunigt werden, wenn für jeden Tag mit der
-PostgreSQL-Erweiterung `pg_partman `_ eine eigene
-`Partition `_ erstellt wird.
+Deletion can be accelerated if a separate partition is created for each day with
+the PostgreSQL extension `pg_partman `_.
.. seealso::
* `PostgreSQL Secure Monitoring (Posemo)
diff --git a/docs/data-rw/postgresql/sqlalchemy.rst b/docs/data-rw/postgresql/sqlalchemy.rst
index 4a27427f..9c277c24 100644
--- a/docs/data-rw/postgresql/sqlalchemy.rst
+++ b/docs/data-rw/postgresql/sqlalchemy.rst
@@ -1,19 +1,19 @@
SQLAlchemy
==========
-`SQLAlchemy `_ ist ein Python-SQL-Toolit und
-objektrelationaler Mapper.
+`SQLAlchemy `_ is a Python-SQL-Toolkit and
+object-relational mapper.
-SQLAlchemy ist bekannt für sein ORM, wobei es verschiedene Muster für das
-objektrelationale Mapping bereitstellt, wobei Klassen auf verschiedene Weise auf
-die Datenbank abgebildet werden können. Das Objektmodell und das Datenbankschema
-sind von Anfang an sauber entkoppelt.
+SQLAlchemy is known for its ORM, whereby it provides different patterns for
+object-relational mapping, whereby classes can be mapped to the database in
+different ways. The object model and the database schema are cleanly decoupled
+from the start.
-SQLAlchemy unterscheidet sich grundlegend von anderen ORMs, da SQL und Details
-der Objekt-Relation nicht wegabstrahiert werden: alle Prozesse werden als eine
-Zusammenstellung einzelner Tools dargestellt.
+SQLAlchemy differs fundamentally from other ORMs, as SQL and details of the
+object relation are not abstracted away: all processes are represented as a
+collection of individual tools.
-Datenbankverbindung
+Database connection
-------------------
::
@@ -21,8 +21,8 @@ Datenbankverbindung
from sqlalchemy import create_engine
engine = create_engine('postgresql:///example', echo=True)
-Datenmodell
------------
+Data model
+----------
::
@@ -51,8 +51,8 @@ Datenmodell
address_id = Column(Integer, ForeignKey(Address.id), nullable=False)
address = relationship('Address')
-Tabellen erstellen
-------------------
+Create tables
+-------------
::
diff --git a/docs/data-rw/requests/index.rst b/docs/data-rw/requests/index.rst
index b121b422..81d8c686 100644
--- a/docs/data-rw/requests/index.rst
+++ b/docs/data-rw/requests/index.rst
@@ -1,9 +1,9 @@
Requests
========
-`Requests `_ vereinfacht HTML-Anfragen
-gegenüber der Python-Standardbibliothek
-`urllib.request `_.
+`Requests `_ simplifies HTML requests
+compared to the Python standard library `urllib.request
+`_.
.. toctree::
:hidden:
diff --git a/docs/data-rw/requests/module.ipynb b/docs/data-rw/requests/module.ipynb
index e418c8b5..185e39fc 100644
--- a/docs/data-rw/requests/module.ipynb
+++ b/docs/data-rw/requests/module.ipynb
@@ -4,13 +4,13 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "# Modul erstellen\n",
+ "# Create module\n",
"\n",
- "Es ist nicht sehr praktisch, Jupyter jedes Mal zu starten und alle Zellen des [request-Notebooks](requests.html) zu durchlaufen, nur um die Funktionen verwenden zu können. Stattdessen sollten wir unsere Funktionen in einem separaten Modul speichern, wie in [nominatim.py](nominatim.py):\n",
+ "It is not very practical to start Jupyter every time and go through all the cells of the [request notebook](requests.rst) just to be able to use the functions. Instead, we should store our functions in a separate module, like in [nominatim.py](nominatim.py):\n",
"\n",
- "1. Hierfür habe ich in Jupyter an derselben Stelle, wie diese Notebooks eine neue Textdatei erstellt, ihr den Namen `nominatim.py` gegeben.\n",
- "2. Anschließend habe ich die Importe, die Methode `nominatim_search` und deren Decorator `lru_cache` hineinkopiert und die Datei gespeichert.\n",
- "3. Nun können wir zu unserem Notebook zurückkehren und den Code aus dieser Datei importieren und unsere Suchen ausführen:"
+ "1. For this I have created a new text file in Jupyter in the same place as these notebooks, and named it `nominatim.py`.\n",
+ "2. Then I copied the imports, the method `nominatim_search` and its decorator `lru_cache` and saved the file.\n",
+ "3. Now we can go back to our notebook and import the code from this file and do our searches:"
]
},
{
@@ -87,9 +87,9 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "Das Auslagern des Codes von Notebooks in Module erleichtert nicht nur dessen Wiederverwendbarkeit, es macht auch die Notebooks lesbarer.\n",
+ "The outsourcing of the notebook’s code to modules makes it easier to reuse it, and also makes the notebooks more readable.\n",
"\n",
- "Damit der Code jedoch funktioniert, muss sich geocode.py im selben Ordner wie ein Jupyter-Notizbuch befinden. Wenn Sie dieses Modul von einer anderen Stelle aus aufrufen möchten, müsste die Pfadangabe im `import`geändert werden. In diesem Fall sollte besser ein eigenes Paket erstellt werden, wie dies in [Packetierung](../productive/packaging/index.html) beschrieben ist."
+ "However, for the code to work, geocode.py needs to be in the same folder as a Jupyter notebook. If you want to call this module from another location, the path specification in the import would have to be changed. In this case it is better to create your own package, as described in [Packing](../../productive/packaging/index.rst)."
]
}
],
diff --git a/docs/data-rw/requests/requests.ipynb b/docs/data-rw/requests/requests.ipynb
index 26f0300e..a8ff9c73 100644
--- a/docs/data-rw/requests/requests.ipynb
+++ b/docs/data-rw/requests/requests.ipynb
@@ -4,7 +4,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "# Requests Installation und Beispielanwendung"
+ "# Requests installation and sample application"
]
},
{
@@ -13,14 +13,14 @@
"source": [
"## Installation\n",
"\n",
- "Für die Kommunikation mit solchen REST-APIs ist die [requests](https://requests.readthedocs.io/)-Bibliothek hilfreich. Mit [Spack](https://jupyter-tutorial.readthedocs.io/de/latest/productive/envs/spack/index.html) könnt ihr requests in eurem Kernel bereitstellen:\n",
+ "The requests library is useful for communicating with REST APIs. With [Spack](../../productive/envs/spack/index.rst) you can provide requests in your kernel:\n",
"\n",
"``` bash\n",
"$ spack env activate python-374\n",
"$ spack install py-requests ^python@3.7.4%gcc@9.1.0\n",
"```\n",
"\n",
- "Alternativ könnt ihr requests auch mit anderen Paketmanagern installieren, z.B.\n",
+ "Alternatively, you can install requests with other package managers, e.g.\n",
"\n",
"``` bash\n",
"$ pipenv install requests\n",
@@ -31,19 +31,18 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "## Beispiel OSM Nomination API\n",
+ "## Example OSM Nomination API\n",
"\n",
- "In diesem Beispiel holen wir unsere Daten von der [OpenStreetMap Nomination API](https://nominatim.org/release-docs/develop/api/Overview/#nominatim-api). Diese ist erreichbar über die URL `https://nominatim.openstreetmap.org/search?`. Um z.B. Informationen über das Berlin Congress Center in Berlin im JSON-Format zu erhalten, sollte die URL `https://nominatim.openstreetmap.org/search.php?q=Alexanderplatz+Berlin&format=json` angegeben werden, und wenn ihr euch den entsprechenden Kartenausschnitt anzeigen\n",
- "lassen wollt, so müsst ihr einfach nur `&format=json` weglassen\n",
+ "In this example we get our data from the [OpenStreetMap Nomination API](https://nominatim.org/release-docs/develop/api/Overview/#nominatim-api). This can be reached via the URL `https://nominatim.openstreetmap.org/search?`. To e.g. receive information about the Berlin Congress Center in Berlin in JSON format, the URL `https://nominatim.openstreetmap.org/search.php?q=Alexanderplatz+Berlin&format=json` should be given, and if you want to display the corresponding map section you just have to leave out `&format=json`.\n",
"\n",
- "Anschließend definieren wir die Basis-URL und die Parameter. Nominatim erwartet mindestens die folgenden beiden Parameter\n",
+ "Then we define the base URL and the parameters. Nominatim expects at least the following two parameters\n",
"\n",
- "| Schlüssel | Werte |\n",
+ "| Key | Value |\n",
"| --------- | ------------------------------------ |\n",
- "| `q` | Adressabfrage, die folgende Spezifikationen erlaubt: `street`, `city`, `county`, `state`, `country` und `postalcode`. |\n",
- "| `format` | Format, in dem die Daten zurückgegeben werden. Möglich Werte sind `html`, `xml`, `json`, `jsonv2`, `geojson` und `geocodejson`. |\n",
+ "| `q` | Address query that allows the following specifications: `street`, `city`, `county`, `state`, `country` and `postalcode`. |\n",
+ "| `format` | Format in which the data is returned. Possible values are `html`, `xml`, `json`, `jsonv2`, `geojson` and `geocodejson`. |\n",
"\n",
- "Die Abfrage kann dann gestellt werden mit:"
+ "The query can then be made with:"
]
},
{
@@ -142,7 +141,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "Es werden drei verschiedene Orte gefunden, der Platz, eine Bushaltestelle und ein Hotel. Um nun weiter filtern zu können, können wir uns nur den bedeutendsten Ort anzeigen lassen:"
+ "Three different locations are found, the square, a bus stop and a hotel. In order to be able to filter further, we can only display the most important location:"
]
},
{
@@ -192,14 +191,14 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "Nachdem wir nun wissen, dass der Code funktioniert, wollen wir alles in eine saubere und flexible Funktion umwandeln. "
+ "Now that we know the code works, let’s turn everything into a clean and flexible function."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "Um sicherzustellen, dass die Interaktion erfolgreich war, verwenden wir die Methode `raise_for_status` von `requests`, die eine Exception auslöst, wenn der HTTP-Statuscode nicht `200 OK` ist:"
+ "To ensure that the interaction was successful, we use the `raise_for_status` method of `requests`, which throws an exception if the HTTP status code isn’t `200 OK`:"
]
},
{
@@ -215,7 +214,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "Da wir die Lastgrenzen der Nomination-API nicht überschreiten möchten, werden wir unsere Anforderungen mit der Funktion `time.sleep` verzögern:"
+ "Since we don't want to exceed the load limits of the Nomination API, we will delay our requests with the `time.sleep` function:"
]
},
{
@@ -255,7 +254,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "Als nächstes deklarieren wir die Funktion selbst. Als Argumente benötigen wir die Adresse, das Format, das Limit der zurückzugebenden Objekte mit dem Standardwert `1` und weitere `kwargs` (**k**ey**w**ord **arg**ument**s**), die als Parameter übergeben werden:"
+ "Next we declare the function itself. As arguments we need the address, the format, the limit of the objects to be returned with the default value `1` and further `kwargs` (**k**ey**w**ord **arg**ument**s**) that are passed as parameters:"
]
},
{
@@ -283,7 +282,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "Nun können wir die Funktion ausprobieren, z.B. mit"
+ "Now we can try out the function, e.g. with"
]
},
{
@@ -320,7 +319,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "Ihr könnt jedoch neben `address` noch weitere Parameter verwenden. Eine Übersicht erhaltet ihr in den [Nominatim Docs](https://nominatim.org/release-docs/develop/api/Search/#parameters)."
+ "However, you can use other parameters besides `address`. You can get an overview in the [Nominatim Docs](https://nominatim.org/release-docs/develop/api/Search/#parameters)."
]
},
{
@@ -360,7 +359,7 @@
"source": [
"## Caching\n",
"\n",
- "Falls innerhalb einer Session immer wieder dieselben Abfragen gestellt werden sollen,ist es sinnvoll, diese Daten nur einmal abzurufen und wiederzuverwenden. In Python können wir `lru_cache` aus der `functools`-Standardbibliothek von Python verwenden. `lru_cache` speichert die N letzten Anfragen (**L**east **R**ecent **U**sed) und sobald das Limit überschritten wird, werden die ältesten Werte verworfen. Um dies für die Methode `nominatim_search` zu verwenden, müsst ihr lediglich einen Import und einen *Decorator* defnieren:"
+ "If the same queries are to be asked over and over again within a session, it makes sense to call up this data only once and use it again. In Python we can use `lru_cache` from Python’s standard `functools` library. `lru_cache` saves the last `N` requests (**L**east **R**ecent **U**sed) and as soon as the limit is exceeded, the oldest values are discarded. To use this for the `nominatim_search` method, all you have to do is define an import and a decorator:"
]
},
{
@@ -381,7 +380,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "`lru_cache` speichert die Ergebnisse jedoch nur während einer Session. Wenn ein Skript wegen einem Timeout oder einer Exception beendet wird, sind die Ergebnisse verloren. Sollen die Daten dauerhafter gespeichert werden, können Tools wie [joblib](https://joblib.readthedocs.io/) oder [python-diskcache](http://www.grantjenks.com/docs/diskcache/) verwendet werden."
+ "However, `lru_cache` only saves the results during a session. If a script terminates because of a timeout or an exception, the results are lost. If the data is to be saved more permanently, tools such as [joblib](https://joblib.readthedocs.io/) or [python-diskcache](http://www.grantjenks.com/docs/diskcache/) can be used."
]
}
],
diff --git a/docs/first-steps/create-notebook.rst b/docs/first-steps/create-notebook.rst
index c6f385c0..358bcb99 100644
--- a/docs/first-steps/create-notebook.rst
+++ b/docs/first-steps/create-notebook.rst
@@ -1,63 +1,61 @@
-Notebook erstellen
-==================
+Create notebook
+===============
-Nachdem der Notebook-Server gestartet wurde, können wir unser erstes Notebook
-erstellen.
+After the notebook server has started, we can create our first notebook.
-Erstellen eines Notebooks
--------------------------
+Create a notebook
+-----------------
-In eurem Standard-Browser solltet ihr das Notebook-Dashboard mit dem Menü *New*
-auf der rechten Seite sehen. In diesem Menü werden alle Notebook-Kernel
-aufgeführt, initial jedoch vermutlich nur *Python 3*.
+In your standard browser you should see the notebook dashboard with the *New*
+menu on the right. All notebook kernels are listed in this menu, but initially
+probably only *Python 3*.
-Nachdem ihr :menuselection:`New --> Python 3` ausgewählt habt, wird ein neues
-Notebook ``Untitled.ipynb`` erstellt und in einem neuen Reiter angezeigt:
+After you have selected :menuselection:`New --> Python 3`, a new notebook
+ ``Untitled.ipynb`` will be created and displayed in a new tab:
.. image:: initial-notebook.png
-Umbenennen des Notebooks
-------------------------
+Renaming the notebook
+---------------------
-Als nächstes solltet Ihr dieses Notebook umbenennen indem ihr auf den Titel
-*Untitled* klickt:
+Next you should rename this notebook by clicking on the title *Untitled*:
.. image:: rename-notebook.png
-Die Notebook-Oberfläche
------------------------
+The notebook user interface
+---------------------------
-Es gibt zwei wichtige Begriffe, um Jupyter Notebooks zu beschreiben: *Zelle* und
-*Kernel*:
+There are two important terms used to describe Jupyter Notebooks: *cell* and
+*kernel*:
.. glossary::
- *Notebook-Kernel*
- *Rechenmaschine*, die den in einem Notebook enthaltenen Code ausführt.
+ *Notebook kernel*
+ *Computational engine* that executes the code contained in a notebook.
- *Notebook-Zelle*
- Container für Text, der in einem Notebook angezeigt werden soll oder für
- Code, der vom Kernel des Notebooks ausgeführt werden soll.
+ *Notebook cell*
+ Container for text to be displayed in a notebook or for code to be
+ executed by the notebook’s kernel.
*Code*
- enthält Code, der im Kernel ausgeführt werden soll und dessen Ausgabe
- unterhalb angezeigt wird.
+ contains code to be executed in the kernel, and the output which is
+ shown below.
*Markdown*
- enthält mit `Markdown
- `_ formatierten
- Text, der interpretiert wird sobald :menuselection:`Run` gedrückt wird.
+ contains text formatted with `Markdown
+ `_, which is
+ interpreted as soon as :menuselection:`Run` is pressed.
-.. _was-ist-eine-ipynb-datei:
+.. _whats-an-ipynb-file:
-Was ist eine ``ipynb``-Datei?
-------------------------------
+What’s an ``ipynb`` file?
+-------------------------
-Diese Datei beschreibt ein Notebook im `JSON
-`_-Format. Jede Zelle
-und ihr Inhalt einschließlich Bildern werden dort zusammen mit einigen Metadaten
-aufgelistet. Ihr könnt euch diese anschauen wenn ihr im Dashboard das Notebook
-auswählt und dann auf :menuselection:`edit` klickt. So sieht z.B. die JSON-Datei
-für `my-first-notebook.ipynb `_ folgendermaßen aus:
+This file describes a notebook in `JSON `_
+format. Each cell and its contents including pictures are listed there along
+with some metadata. You can have a look at them if you select the notebook in
+the dashboard and then click on :menuselection:`edit`. E.g. the JSON file for
+`my-first-notebook.ipynb `_
+looks like this:
.. code-block:: json
@@ -111,35 +109,30 @@ für `my-first-notebook.ipynb `_ folgendermaßen aus:
"nbformat_minor": 2
}
-Speichern und Checkpoints
--------------------------
-
-Beim Klick auf :menuselection:`Save and Checkpoint` wird eure ``ipynb``-Datei
-gespeichert. Aber was hat es mit dem *Checkpoint* auf sich?
-
-Jedesmal, wenn ihr ein neues Notebook anlegt, wird auch eine Datei angelegt,
-die üblicherweise alle 120 Sekunden automatisch eure Änderungen speichert.
-Dieser Checkpoint findet sich üblicherweise in einem versteckten Verzeichnis
-namens ``.ipynb_checkpoints/``. Diese Checkpoint-Datei ermöglicht euch daher,
-eure nicht gespeicherten Daten im Falle eines unerwarteten Problems
-wiederherzustellen. Ihr könnt in :menuselection:`File --> Revert to Checkpoint`
-zu einer der letzten Checkpoints zurückgehen.
-
-Tipps & Tricks
---------------
-
-#. Gebt dem Notebook einen Titel (``# My title``) und ein aussagekräftiges
- Vorwort um den Inhalt und Zweck des Notebooks zu beschreiben.
-#. Erstellt Überschriften und Dokumentationen in Markdown-Zellen um euer
- Notebook zu strukturieren und eure Workflow-Schritte zu erläutern. Dabei ist
- vollkommen egal, ob ihr das für eure Kollegen oder für euer zukünftig selbst
- macht.
-#. Verwendet *Table of Contents (2)* aus der
- :doc:`/workspace/jupyter/nbextensions/list`, um ein Inhaltsverzeichnis
- zu erstellen.
-#. Verwendet die Notebook-Erweiterung :ref:`setup
+Save and checkpoints
+--------------------
+
+When you click on :menuselection:`Save and Checkpoint`, your ``ipynb`` file will
+be saved. But what is the checkpoint all about?
+
+Every time you create a new notebook, a file is also created, which usually
+automatically saves your changes every 120 seconds. This checkpoint is usually
+located in a hidden directory called ``.ipynb_checkpoints/``. This checkpoint
+file therefore enables you to restore your unsaved data in the event of an
+unexpected problem. You can go back to one of the last checkpoints in
+:menuselection:`File --> Revert to Checkpoint`.
+
+Tips and tricks
+---------------
+
+#. Give the notebook a title (``# My title``) and a meaningful foreword to
+ describe the content and purpose of the notebook.
+#. Create headings and documentation in Markdown cells to structure your
+ notebook and explain your workflow steps. It doesn’t matter whether you do
+ this for your colleagues or for yourself in the future.
+#. Use *Table of Contents (2)* from the
+ :doc:`/workspace/jupyter/nbextensions/list` to create a table of contents.
+#. Use the notebook extension :ref:`setup
`.
-#. Verwendet *Snippets* aus der
- :doc:`/workspace/jupyter/nbextensions/list`, um weitere, häufig
- benötigte Code-Blöcke, z.B. typische Importanweisungen, bequem einfügen zu
- können.
+#. Use snippets from the list of extensions to add more frequently used code
+ blocks, e.g. typical import instructions, easy to insert.
diff --git a/docs/first-steps/example.ipynb b/docs/first-steps/example.ipynb
index 9eb9379a..01db91db 100644
--- a/docs/first-steps/example.ipynb
+++ b/docs/first-steps/example.ipynb
@@ -4,14 +4,14 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "# Beispiel"
+ "# Example"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "Üblicherweise werden zunächst die erforderlichen Bibliotheken importiert:"
+ "Usually the required libraries are imported first:"
]
},
{
@@ -28,9 +28,9 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "## Beispieldaten herunterladen\n",
+ "## Download sample data\n",
"\n",
- "Anschließend laden wir die Beispieldaten herunter. Hierfür können wir innerhalb von iPython Shell-Befehle verwenden, indem wir ``!`` voranstellen. "
+ "Then we download the sample data. We can use shell commands within iPython for this by prefixing ``!``."
]
},
{
@@ -56,9 +56,9 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "## Beispieldaten einlesen\n",
+ "## Read in sample data\n",
"\n",
- "Anschließend lesen wir die csv-Daten in Pandas als DataFrame ein:"
+ "Then we read the csv data into pandas as a DataFrame:"
]
},
{
@@ -74,7 +74,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "## Daten untersuchen"
+ "## Examine data"
]
},
{
@@ -280,9 +280,9 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "### Umbenennen der Spalten\n",
+ "### Renaming the columns\n",
"\n",
- "Dies erleichtert uns später, auf die Spalten zu verweisen:"
+ "This will make it easier for us to refer to the columns later:"
]
},
{
@@ -386,7 +386,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "### Überprüfen der Anzahl der Datensätze"
+ "### Check the number of records"
]
},
{
@@ -413,14 +413,14 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "Das entspricht 500 Zeilen pro Jahr von 1955 bis einschließlich 2005."
+ "This corresponds to 500 lines per year from 1955 up to 2005."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "### Überprüfen der Datentypen"
+ "### Check the data types"
]
},
{
@@ -452,7 +452,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "Die Spalte `profit` sollte vom Datentyp `float64` sein; das ist hier nicht der Fall. Dies weist darauf hin, dass die Spalte wahrscheinlich einige Werte enthält, die keine Zahlen sind. Überprüfen wir dies mit einem regulären Ausdruck:"
+ "The column `profit` should be of the data type` float64`; that is not the case here. This indicates that the column is likely to have some values that are not numbers. Let's check this with a regular expression:"
]
},
{
@@ -557,7 +557,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "Ob es neben `N.A.` noch andere nichtnumerische Werte gibt, überprüfen wir mit"
+ "We also check whether there are other non-numerical values besides `N.A.`:"
]
},
{
@@ -584,7 +584,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "Als nächstes untersuchen wir, wie viele Datensätze davon betroffen sind:"
+ "Next, let’s examine how many records are affected:"
]
},
{
@@ -611,7 +611,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "… und wie sie sich über die Jahre verteilen:"
+ "… and how they are distributed over the years:"
]
},
{
@@ -640,7 +640,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "Hier können wir sehen, dass die problematischen Datenpunkte in einem Jahr 24 nicht überschreiten und bei 500 Datenpunkte pro Jahr würde das Entfernen dieser Werte weniger als 5% der Daten für dieses Jahr ausmachen. Nehmen wir an, dass es für uns akzeptabel ist, dass die problematischen Daten entfernt werden können:"
+ "Here we can see that the problematic data points will not exceed 24 in a year, and with 500 data points per year, removing these values would be less than 5% of the data for that year. Let’s assume that it is acceptable to us that the problematic data can be removed:"
]
},
{
@@ -657,7 +657,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "Wir sollten nun `25500 - 369` Datensätze haben:"
+ "We should now have `25500 - 369` records:"
]
},
{
@@ -684,7 +684,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "… und für die Spalte `profit` sollte der Datentyp nun `float64` sein:"
+ "… and for the column `profit` the data type should now be` float64`:"
]
},
{
diff --git a/docs/first-steps/index.rst b/docs/first-steps/index.rst
index 55d56ae7..f46db842 100644
--- a/docs/first-steps/index.rst
+++ b/docs/first-steps/index.rst
@@ -1,6 +1,6 @@
-==============
-Erste Schritte
-==============
+===========
+First steps
+===========
.. toctree::
:hidden:
diff --git a/docs/first-steps/install.rst b/docs/first-steps/install.rst
index b34a4f2c..9a73c5ad 100644
--- a/docs/first-steps/install.rst
+++ b/docs/first-steps/install.rst
@@ -1,17 +1,16 @@
-Jupyter Notebook installieren
-=============================
+Install Jupyter Notebook
+========================
.. _pipenv-installieren:
-Pipenv installieren
--------------------
+Install Pipenv
+--------------
-:term:`pipenv` ist ein Abhängigkeitsmanager für Python-Projekte. Er nutzt
-:term:`Pip` zum Installieren von Python-Paketen, er vereinfacht jedoch die
-Verwaltung von Abhängigkeiten. Pip kann zum Installieren von Pipenv verwendet
-werden, es sollte jedoch das ``--user``-Flag verwendet werden, damit es nur
-für diesen Nutzer bereitsteht. Dadurch soll verhindert werden, dass
-versehentlich systemweite Pakete überschrieben werden:
+:term:`pipenv` is a dependency manager for Python projects. It uses Pip to
+install Python packages, but it simplifies dependency management. Pip can be
+used to install Pipenv, but the ``--user`` flag should be used so that it is
+only available to that user. This is to prevent system-wide packets from
+being accidentally overwritten:
.. code-block:: console
@@ -25,46 +24,45 @@ versehentlich systemweite Pakete überschrieben werden:
.. note::
- Wenn Pipenv nach der Installation nicht in der Shell verfügbar ist, muss
- ggf. das ``USER_BASE/bin``-Verzeichnis in ``PATH`` angegeben werden.
+ If Pipenv is not available in the shell after installation, the
+ ``USER_BASE/bin`` directory may have to be specified in ``PATH``.
- * Unter Linux und MacOS lässt sich ``USER_BASE`` ermitteln mit:
+ Under Linux and MacOS, ``USER_BASE`` can be determined with:
- .. code-block:: console
+ .. code-block:: console
$ python3 -m site --user-base
/home/veit/.local
- Anschließend muss noch das ``bin``-Verzeichnis angehängt und zu ``PATH``
- hinzugefügt werden. Alternativ kann ``PATH`` dauerhaft gesetzt werden, indem
- ``~/.profile`` oder ``~/.bash_profile`` geändert werden, in meinem Fall also:
+ Then the ``bin`` directory has to be appended and added to the ``PATH``.
+ Alternatively, ``PATH`` can be set permanently by changing ``~/.profile`` or
+ ``~/.bash_profile``, in my case:
- .. code-block:: bash
+ .. code-block:: bash
export PATH=/home/veit/.local/bin:$PATH
- * Unter Windows kann das Verzeichnis ermittelt werden mit
- ``py -m site --user-site`` und anschließend ``site-packages`` durch
- ``Scripts`` ersetzt werden. Dies ergibt dann z.B.:
+ * Under Windows, the directory can be determined with
+ ``py -m site --user-site`` and then ``site-packages`` can be replaced by
+ `` Scripts``. This then results in, for example:
- .. code-block:: console
+ .. code-block:: console
C:\Users\veit\AppData\Roaming\Python36\Scripts
- Um dauerhaft zur Verfügung zu stehen, kann dieser Pfad unter ``PATH``
- im Control Panel eingetragen werden.
+ In order to be permanently available, this path can be entered under
+ ``PATH`` in the control panel.
-Weitere Informationen zur nutzerspezifischen Installation findet ihr in `User
+Further information on user-specific installation can be found in `User
Installs `_.
-Virtuelle Umgebung mit ``jupyter`` erstellen
---------------------------------------------
+Create a virtual environment with ``jupyter``
+---------------------------------------------
-:term:`Virtuelle Python-Umgebungen ` ermöglichen die
-Installation von Python-Paketen an einem isolierten Ort für eine bestimmte
-Anwendung, anstatt sie global zu installieren. Ihr habt also eure eigenen
-Installationsverzeichnisse und teilt keine Bibliotheken mit anderen
-virtuellen Umgebungen:
+`Python virtual environments ` allow Python packages to be
+installed in an isolated location for a specific application, rather than
+installing them globally. So you have your own installation directories and do
+not share libraries with other virtual environments:
.. code-block:: console
@@ -79,8 +77,8 @@ virtuellen Umgebungen:
Installing jupyter...
...
-``jupyter notebook`` starten
-----------------------------
+Start ``jupyter notebook``
+--------------------------
.. code-block:: console
@@ -96,11 +94,11 @@ virtuellen Umgebungen:
Or copy and paste one of these URLs:
http://localhost:8888/?token=53abd45a3002329de77f66886e4ca02539d664c2f5e6072e
-Daraufhin wird euer Standard-Webbrowser mit dieser URL geöffnet.
+Your standard web browser will then open with this URL.
-Wenn das Notebook in eurem Browser geöffnet wird, wird das Notebook-Dashboard
-mit einer Liste der Notebooks, Dateien und Unterverzeichnisse in dem Verzeichnis
-angezeigt, in dem der Notebook-Server gestartet wurde. In den meisten Fällen möchtet
-ihr einen Notebook-Server in eurem Projektverzeichnis starten.
+When the notebook opens in your browser, the notebook dashboard is displayed
+with a list of the notebooks, files and subdirectories in the directory in which
+the notebook server was started. In most cases you want to start a notebook
+server in your project directory.
.. image:: initial-jupyter-dashboard.png
diff --git a/docs/genindex.rst b/docs/genindex.rst
index 4c5dc9e3..19d610cf 100644
--- a/docs/genindex.rst
+++ b/docs/genindex.rst
@@ -1,4 +1,4 @@
.. Workarround for displaying the index in the toc
-Stichwortverzeichnis
-====================
+Index
+=====
diff --git a/docs/index.rst b/docs/index.rst
index aebd7dda..bffc31a1 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -1,14 +1,13 @@
================
-Jupyter-Tutorial
+Jupyter Tutorial
================
-`Jupyter-Notebooks `_ erfreuen sich
-bei Datenwissenschaftlern wachsender Beliebtheit und wurden zum
-De-facto-Standard für schnelles Prototyping und explorative Analysen. Sie
-beflügeln nicht nur Experimente und Innovationen enorm, sie machen auch den
-gesamten Forschungsprozess schneller und zuverlässiger. Zudem entstehen viele
-zusätzliche Komponenten, die die ursprünglichen Grenzen ihrer Nutzung erweitern
-und neue Verwendungsmöglichkeiten ermöglichen.
+`Jupyter notebooks `_ are growing in
+popularity with data scientists and have become the de facto standard for
+rapid prototyping and exploratory analysis. They inspire experiments and
+innovations enormously and as well they make the entire research process faster
+and more reliable. In addition, many additional components are created that
+expand the original limits of their use and enable new uses.
.. toctree::
:hidden:
diff --git a/docs/intro.rst b/docs/intro.rst
index 9e00db3d..8ca21e5d 100644
--- a/docs/intro.rst
+++ b/docs/intro.rst
@@ -1,5 +1,5 @@
-Einführung
-==========
+Introduction
+============
Status
------
@@ -15,110 +15,108 @@ Status
.. |Docs| image:: https://readthedocs.org/projects/jupyter-tutorial/badge/?version=latest
:target: https://jupyter-tutorial.readthedocs.io/de/latest/
-Zielgruppe
-----------
-
-Die Nutzer von Jupyter-Notebooks sind vielfältig von Daten-Wissenschaftlern über
--Ingenieure und -Analysten bis hin zu System-Ingenieuren. Dabei sind ihre
-Fähigkeiten und Arbeitsabläufe sehr unterschiedlich. Eine der großen Stärken von
-Jupyter-Notebooks ist jedoch, dass sie eine enge Zusammenarbeit dieser
-unterschiedlichen Experten in funktionsübergreifenden Teams ermöglichen.
-
-* **Daten-Wissenschaftler** führen Experimente mit verschiedenen Koeffizienten
- durch und fassen die Ergebnisse zusammen.
-* **Daten-Ingenieure** überprüfen die Qualität des Codes und machen ihn robuster,
- effizienter und skalierbar.
-* **Daten-Analysten** führen systematische Untersuchungen der Daten durch, wobei
- sie den von Dateningenieuren bereitgestellten Code verwenden.
-* **System-Ingenieure** erstellen das `Hub `_, die
- Kernel, Erweiterungen etc. und gewährleisten den möglichst reibungslosen
- Betrieb dieser Infrastruktur.
-
-In diesem Tutorial wenden wir uns zunächst vor allem an System-Ingenieure,
-die eine Plattform auf Basis von Jupyter-Notebooks aufbauen und betreiben
-wollen. In der Folge erläutern wir dann, wie diese Plattform effektiv von
-Datenwissenschaftlern, -Ingenieuren und -Analysten genutzt werden kann.
-
-Aufbau des Jupyter-Tutorial
----------------------------
-
-Das Jupyter-Tutorial folgt ab Kapitel 3 dem prototypischen Verlauf eines
-Forschungsprojekts:
-
-3. **Arbeitsbereich einrichten** mit der Installation und Konfiguration von
- :doc:`workspace/ipython/index`, :doc:`workspace/jupyter/index` mit
- :doc:`workspace/jupyter/nbextensions/index` und
+Target group
+------------
+
+The users of Jupyter notebooks are diverse, from data scientists to data
+engineers and analysts to system engineers. Their skills and workflows are very
+different. However, one of the great strengths of Jupyter notebooks is that they
+allow these different experts to work closely together in cross-functional
+teams.
+
+* **Data scientists**
+ conduct experiments with different coefficients and summarise the results.
+
+* **Data engineers**
+ check the quality of the code and make it more robust, efficient and scalable.
+
+* **Data analysts**
+ perform systematic studies of the data using code provided by data engineers.
+
+* **System engineers**
+ create the hub, the kernel, extensions, etc. and ensure that this
+ infrastructure runs as smoothly as possible.
+
+In this tutorial, we primarily address system engineers who want to build and
+operate a platform based on Jupyter notebooks. Then, we explain how this
+platform can be used effectively by data scientists, data engineers, and
+analysts.
+
+Structure of the Jupyter tutorial
+---------------------------------
+
+From Chapter 3, the Jupyter tutorial follows the prototype of a research
+project:
+
+3. **Set up the workspace** with the installation and configuration of
+ :doc:`workspace/ipython/index`,
+ :doc:`workspace/jupyter/index` with
+ :doc:`workspace/jupyter/nbextensions/index` and
:doc:`workspace/jupyter/ipywidgets/index`.
-4. **Daten sammeln**, entweder durch eine :doc:`Rest-API ` oder
- direkt von einer :doc:`HTML-Seite `.
-5. **Daten bereinigen** ist eine wiederkehrende Aufgabe, die u.a. redundante,
- inkonsistente oder falsch formatierte Daten entfernen oder modifizieren soll.
-6. **Erschließen der Daten –** :doc:`viz/index` umfasst expolorative Analysen und
- das Visualisieren von Daten.
-7. **Refactoring** umfasst das Parametrisieren, Validieren und
- Performance-Optimierungen, u.a. durch :doc:`Parallelisierung
+4. **Collect data,** either through a :doc:`REST API ` or directly
+ from an HTML page.
+5. **Cleaning up data** is a recurring task that includes Remove or modify
+ redundant, inconsistent, or incorrectly formatted data.
+6. **Analyse data** through exploratory analysis and :doc:`visualising data
+ `.
-8. **Produkt erstellen** umfasst das :doc:`productive/testing/index`,
- :doc:`productive/logging` und :doc:`productive/documenting/index` der
- Methoden und Funktionen sowie das :doc:`Erstellen von Paketen
- `.
-9. **Web-Anwendungen** können entweder aus Jupyter-Notebooks
- :doc:`web/dashboards/index` generieren oder umfassendere
- Applikationslogik benötigen, wie z.B. in
- :doc:`pyviz:bokeh/embedding-export/flask` demonstriert, oder Daten über eine
- `RESTful API
- `_
- bereitstellen.
-
-Warum Jupyter?
---------------
-
-Wie können nun diese vielfältigen Aufgaben vereinfacht werden? Es wird sich
-kaum ein Werkzeug finden, das all diese Aufgaben abdeckt und selbst für einzelne
-Aufgaben sind häufig mehrere Werkzeuge notwendig. Daher suchen wir auf einer
-abstrakteren Ebene allgemeinere Muster für Tools und Sprachen, mit denen Daten
-analysiert und visualisiert sowie ein Projekt dokumentiert und präsentiert
-werden kann. Genau dies wir mit dem `Project Jupyter `_
-angestrebt.
-
-Das Projekt Jupyter startete 2014 mit dem Ziel, ein konsistentes Set von
-Open-Source-Tools für wissenschaftliche Forschung, reproduzierbare Workflows,
-`Computational Narratives
+8. **Creating a product**
+ includes :doc:`productive/testing/index`, :doc:`productive/logging` and
+ :doc:`productive/documenting/index` the methods and functions as well
+ as :doc:`creating packages `.
+9. **Web applications**
+ can either generate dashboards from Jupyter notebooks or require more
+ comprehensive application logic, such as demonstrated in
+ :doc:`pyviz:bokeh/embedding-export/flask`, or provide data via a `RESTful API
+ `_.
+
+Why Jupyter?
+------------
+
+How can these diverse tasks be simplified? You will hardly find a tool that
+covers all of these tasks, and several tools are often required even for
+individual tasks. Therefore, on a more abstract level, we are looking for more
+general patterns for tools and languages with which data can be analysed and
+visualised and a project can be documented and presented. This is exactly what
+we are aiming for with `Project Jupyter `_.
+
+The Jupyter project started in 2014 with the aim of creating a consistent set of
+open source tools for scientific research, reproducible workflows,
+`computational narratives
`_
-und Datenanalyse zu erstellen. Bereits 2017 wurde Jupyter dann mit dem `ACM
-Software Systems Award
+and data analysis. In 2017, Jupyter received the `ACM Software Systems Award
`_
-ausgezeichnet - eine prestigeträchtige Auszeichnung, die es u.a. mit Unix und
-dem Web teilt.
+– a prestigious award which, among other things, shares with Unix and the web.
-Um zu verstehen, warum Jupyter-Notebooks so erfolgreich sind, schauen wir uns
-die Kernfunktionen einmal genauer an:
+To understand why Jupyter notebooks are so successful, let’s take a closer look
+at the core functions:
`Jupyter Notebook Format `_
- Jupyter Notebooks sind ein offenes, auf JSON basierendes Dokumentenformat
- mit vollständigen Aufzeichnungen der Sitzungen des Benutzers und des
- enthalten Code.
+ Jupyter Notebooks are an open, JSON-based document format with full records
+ of the user’s sessions and the code they contain.
Interactive Computing Protocol
- Das Notebook kommuniziert mit Rechenkernel über das *Interactive Computing
- Protocol*, einem offenen Netzwerkprotokoll basierend auf JSON-Daten über
- `ZMQ `_ und `WebSockets
+ The notebook communicates with the computing kernel via the *Interactive
+ Computing Protocol*, an open network protocol based on JSON data via `ZMQ
+ `_ and `WebSockets
`_.
:doc:`workspace/jupyter/kernels/index`
- Kernel sind Prozesse, die interaktiven Code in einer bestimmten
- Programmiersprache ausführen und die Ausgabe an den Benutzer zurückgeben.
+ Kernels are processes that execute interactive code in a specific
+ programming language and return the output to the user.
-Jupyter-Infrastruktur
----------------------
+Jupyter infrastructure
+----------------------
-Eine Plattform für die oben genannten Use Cases erfordert eine umfangreiche
-Infrastruktur, die nicht nur die Bereitstellung der Kernel sowie die
-Parametrisierung, Zeitsteuerung und Parallelisierung von Notebooks erlaubt,
-sondern darüberhinaus auch die gleichmäßige Bereitstellung der Ressourcen.
+A platform for the above-mentioned use cases requires an extensive
+infrastructure that not only allows the provision of the kernel and the
+parameterization, time control and parallelisation of notebooks, but also the
+uniform provision of resources.
-Mit diesem Tutorial wird eine Plattform bereitgestellt, die über Jupyter
-Notebooks hinaus schnelle, flexible und umfassende Datenanalysen ermöglicht.
-Aktuell gehen wir jedoch noch nicht darauf ein, wie sie sich um *Streaming
-Pipelines* und *Domain Driven Data Stores* erweitern lässt.
+This tutorial provides a platform that enables fast, flexible and comprehensive
+data analysis beyond Jupyter notebooks. At the moment, however, we are not yet
+going into how it can be expanded to include streaming pipelines and
+domain-driven data stores.
-Die Beispiele des Jupyter-Tutorials könnt Ihr jedoch auch lokal erstellen und
-ausführen.
+However, you can also create and run the examples in the Jupyter tutorial
+locally.
diff --git a/docs/productive/documenting/docstrings.rst b/docs/productive/documenting/docstrings.rst
index 91b8d0aa..a599f367 100644
--- a/docs/productive/documenting/docstrings.rst
+++ b/docs/productive/documenting/docstrings.rst
@@ -1,23 +1,23 @@
Docstrings
==========
-Mit der Sphinx-Erweiterung `sphinx.ext.autodoc
-`_ lassen
-sich auch Docstrings in die Dokumentation übernehmen. Dabei lassen sich die
-folgenden drei Direktiven angeben:
+With the Sphinx extension `sphinx.ext.autodoc
+`_,
+docstrings can also be included in the documentation. The following three
+directives can be specified:
.. rst:directive:: automodule
autoclass
autoexception
-Diese dokumentieren ein Modul, eine Klasse oder eine Exception anhand des
-Docstrings des jeweiligen Objekts.
+These document a module, a class or an exception using the docstring of the
+respective object.
Installation
------------
-Üblicherweise ist ``sphinx.ext.autodoc`` bereits in der
-Sphinx-Konfigurationsdatei ``docs/conf.py`` angegeben:
+``sphinx.ext.autodoc`` is usually already specified in the Sphinx configuration
+file ``docs/conf.py``:
.. code-block:: python
@@ -26,34 +26,34 @@ Sphinx-Konfigurationsdatei ``docs/conf.py`` angegeben:
…
]
-Wenn euer Paket und die zugehörige Dokumentation Teil des gleichen Repository
-sind, haben sie immer die gleiche relative Position im Dateisystem. In diesem
-Fall könnt ihr die Sphinx-Konfiguration einfach so bearbeiten, dass ``sys.path``
-den relativen Pfad zum Paket angibt, also:
+If your package and its documentation are part of the same repository, they will
+always have the same relative position in the filesystem. In this case you can
+simply edit the Sphinx configuration for ``sys.path`` to indicate the relative
+path to the package, so:
.. code-block:: python
sys.path.insert(0, os.path.abspath('..'))
import requests
-Wen ihr eure Sphinx-Dokumentation in einer virtuellen Umgebung installiert
-habt, könnt ihr dort auch euer Paket installieren mit:
+If you have installed your Sphinx documentation in a virtual environment, you
+can also install your package there with:
-.. code-block:: python
+.. code-block:: console
$ pipenv install my.package
-bzw., wenn ihr auch das Paket weiterentwickeln wollt mit:
+or, if you want to develop the package further with:
.. code-block:: console
$ pipenv install -e https://github.com/veit/my.package.git
-Beispiele
----------
+Examples
+--------
-Hier einige Beispiele aus der API-Dokumentation des `requests
-`_-Modul:
+Here are some examples from the API documentation for the `requests
+`_ module:
.. code-block:: rest
@@ -78,7 +78,8 @@ Hier einige Beispiele aus der API-Dokumentation des `requests
.. autoclass:: Session
:inherited-members:
-Dies führt zu :doc:`docstrings-example`, generiert aus den folgenden Docstrings:
+This leads to the :doc:`docstrings-example`, generated from the following
+docstrings:
* `requests.head `_
* `requests.RequestException `_
@@ -88,8 +89,7 @@ Dies führt zu :doc:`docstrings-example`, generiert aus den folgenden Docstrings
:inherited-members:
.. note::
- Ihr solltet euch beim Schreiben von Docstrings an die folgenden
- Anleitungen halten:
+ You should follow these guidelines when writing docstrings:
* `Python Style Guide: comments
`_
@@ -99,13 +99,14 @@ Dies führt zu :doc:`docstrings-example`, generiert aus den folgenden Docstrings
``sphinx-autodoc-typehints``
----------------------------
-Mit `PEP 484 `_ wurde eine
-Standardmethode zum Ausdrücken von Typen in Python-Code eingeführt. Damit lassen
-sich auch Typen in Docstrings anders ausdrücken. Dabei bietet die Variante mit
-Typen gemäß PEP 484 den Vorteil, dass Typenprüfer und IDEs zur statischen
-Codeanalyse genutzt werden können.
+With `PEP 484 `_ a standard method
+for expressing types in Python code was introduced. This also allows types to be
+expressed differently in docstrings. The variant with types according to PEP 484
+has the advantage that type testers and IDEs can be used for static code
+analysis.
Python 3 type annotations:
+
.. code-block:: python
def func(arg1: int, arg2: str) -> bool:
@@ -124,6 +125,7 @@ Python 3 type annotations:
return True
Types in Docstrings:
+
.. code-block:: python
def func(arg1, arg2):
@@ -142,17 +144,17 @@ Types in Docstrings:
return True
.. note::
- `Python2/3-kompatible Anmerkungen
+ `Python 2/3 compatible annotations
`_
- werden aktuell nicht von Sphinx unterstützt und erscheinen nicht in der
- generierten Dokumentation.
+ are currently not supported by Sphinx and do not appear in the generated
+ documentation.
``sphinx.ext.napoleon``
-----------------------
-Die Sphinx-Erweiterung `sphinx.ext.napoleon
-`_ erlaubt euch, verschiedene
-Abschnitte in Docstrings zu definieren, u.a.:
+The sphinx extension `sphinx.ext.napoleon
+`_ allows you to define
+different sections in docstrings, including:
* ``Attributes``
* ``Example``
@@ -162,15 +164,16 @@ Abschnitte in Docstrings zu definieren, u.a.:
* ``Warning``
* ``Yield``
-Dabei unterscheidet ``sphinx.ext.napoleon`` zwei Stilen von Docstrings:
+There are two styles of docstrings in ``sphinx.ext.napoleon``:
* `Google `_
* `NumPy `_
-Die wesentlichen Unterschiede sind, dass Google Einrückungen verwendet und NumPy
-Unterstriche:
+The main differences are that Google uses indentations and NumPy uses
+underscores:
Google:
+
.. code-block:: python
def func(arg1, arg2):
@@ -189,6 +192,7 @@ Google:
return True
NumPy:
+
.. code-block:: python
def func(arg1, arg2):
@@ -211,5 +215,5 @@ NumPy:
"""
return True
-Die detailierten Konfigurationsoptionen findet ihr in `sphinxcontrib.napoleon.Config
+You can find the detailed configuration options in `sphinxcontrib.napoleon.Config
`_.
diff --git a/docs/productive/documenting/extensions.rst b/docs/productive/documenting/extensions.rst
index 256b5519..3efd0d66 100644
--- a/docs/productive/documenting/extensions.rst
+++ b/docs/productive/documenting/extensions.rst
@@ -1,74 +1,70 @@
Extensions
==========
-Built-in Extensions
+Built-in extensions
-------------------
`sphinx.ext.autodoc `_
- Dokumentation aus Docstrings integrieren
+ Integrate documentation from docstrings
`sphinx.ext.autosummary `_
- generiert Zusammenfassungen von Funktionen, Methoden und Attributen
- aus Docstrings
+ generates summaries of functions, methods and attributes from docstrings
`sphinx.ext.autosectionlabel `_
- referenziert Abchnitt unter Verwendung des Titels
+ references section using the title
`sphinx.ext.graphviz `_
- Rendering von `Graphviz `_-Graphen
+ Rendering of `Graphviz `_ graphs
`sphinx.ext.ifconfig `_
- schließt Inhalte nur unter bestimmten Bedingungen ein
+ includes content only under certain conditions
`sphinx.ext.intersphinx `_
- erlaubt die Verlinkung von anderen Projekt-Dokumentationen
+ allows the linking of other project documentation
`sphinx.ext.mathjax `_
Rendering via JavaScript
`sphinx.ext.napoleon `_
- Support für NumPy- und Google-Style Docstrings
+ Support for NumPy and Google style docstrings
`sphinx.ext.todo `_
- Unterstützung für ToDo-Items
+ Support for ToDo items
`sphinx.ext.viewcode `_
- fügt Links zum Quellcode der Sphinx-Dokumentation hinzu
+ adds links to the source code of the Sphinx documentation
.. seealso::
- Einen vollständigen Überblick erhaltet ihr unter `Sphinx Extensions
+ You can get a complete overview at `Sphinx Extensions
`_
-Third-party Extensions
+Third-party extensions
----------------------
`nbsphinx `_
Jupyter Notebooks in Sphinx
`jupyter-sphinx `_
- erlaubt das Rendering von Jupyter interactive widgets in Sphinx,
- s.a.
+ allows rendering of Jupyter interactive widgets in Sphinx, see also
`Embedding Widgets in the Sphinx HTML Documentation
`_
`numpydoc `_
- `NumPy `_’s Sphinx-Extension
+ `NumPy `_’s Sphinx extension
`Releases `_
- schreibt eine Changelog-Datei
+ writes a changelog file
`sphinxcontrib-napoleon `_
- Napoleon ist ein Pre-Processor zum Parsen von NumPy- und Google-Style
- Docstrings
+ Napoleon is a pre-processor for parsing NumPy- and Google-style docstrings
`Sphinx-autodoc-typehints `_
- Type hints-Support für die Sphinx autodoc-Extension
+ Type hints support for the Sphinx autodoc extension
`sphinx-git `_
`git `_-Changelog for Sphinx
`sphinx-intl `_
- Sphinx-Erweiterung für Übersetzungen
+ Sphinx extension for translations
`sphinx-autobuild `_
- überwacht ein Sphinx-Repository und erstellt eine neue Dokumentation
- sobald Änderungen gemacht wurden
+ monitors a Sphinx repository and creates new documentation as soon as
+ changes are made
`Sphinxcontrib-mermaid `_
- erlaubt, Mermaid- Grafiken in Ihre Dokumente einbetten.
+ allows you to embed Mermaid graphics in your documents.
-Eigene Extensions
------------------
+Own Extensions
+--------------
-Lokale Erweiterungen in einem Projekt sollten relativ zur Dokumentation
-angegeben werden. Hierfür wird in der Sphinx-Konfigurationsdatei
-``docs/conf.py`` der entsprechende Pfad angegeben. Wenn eure Erweiterung
-im Verzeichnis ``exts`` in der Datei ``foo.py`` liegt, dann wird in der
-``conf.py`` folgendes eingetragen:
+Local extensions in a project should be specified relative to the documentation.
+The appropriate path is specified in the Sphinx configuration ``docs/conf.py``.
+If your extension is in the directory ``exts`` in the file ``foo.py``, then the
+``conf.py`` should look like this:
.. code-block:: python
diff --git a/docs/productive/documenting/index.rst b/docs/productive/documenting/index.rst
index ea245c8f..8c632095 100644
--- a/docs/productive/documenting/index.rst
+++ b/docs/productive/documenting/index.rst
@@ -1,31 +1,29 @@
-Dokumentieren
-=============
+Document
+========
-Damit Euer Produkt sinnvoll genutzt werden kann, sind Dokumentationen sowohl für
-die Zielgruppen Daten-Wissenschaftler und Daten-Ingenieure als auch für
-System-Ingenieure erforderlich:
+So that your product can be used effectively, documentation is required for the
+target groups of data scientists and data engineers as well as for system
+engineers:
-* Daten-Wissenschaftler wollen dokumentiert sehen
+* Data scientists want to see documented
- * welche Probleme Euer Produkt löst und was die Hauptfunktionen und
- Limitationen der Software sind (``README``)
- * wie das Produkt beispielhaft verwendet werden kann
- * welche Veränderungen in aktuelleren Software-Versionen gekommen sind
- (``CHANGELOG``)
+ * which problems your product solves and what the main functions and
+ limitations of the software are (``README``)
+ * how the product can be used
+ * which changes have come in more recent software versions (``CHANGELOG``)
-* Daten-Ingenieure wollen wissen, wie sie mit Fehlerbehebungen zur Verbesserung
- des Produkts beitragen können (``CONTRIBUTING``) und wie sie mit anderen
- kommunizieren (``CODE_OF_CONDUCT``) können
-* System-Ingenieure benötigen eine Installationsanleitung für Euer Produkt
- und der erforderlichen Abhängigkeiten
+* Data engineers want to know how troubleshooting can help improve the product
+ (``CONTRIBUTING``) and how they can communicate with others
+ (``CODE_OF_CONDUCT``)
+* System engineers need installation instructions for your product and the
+ required dependencies
-Alle gemeinsam benötigen Informationen, wie das Produkt lizenziert ist
-(``LICENSE``-Datei oder ``LICENSES``-Ordner) und wie sie bei Bedarf Hilfe
-erhalten können.
+Together, they all need information about how the product is licensed
+(``LICENSE`` file or ``LICENSES`` folder and how they can get help if needed.
-Um schnell einen Überblick übr ein Produkt zu erhalten, sind sog. Badges
-hilfreich. Für das `cookiecutter-namespace-template
-`_ sind dies z.B.:
+Badges are helpful in getting a quick overview of a product. For the
+`cookiecutter-namespace-template
+`_ these are, for example:
|Downloads| |Updates| |Versions| |Contributors| |License| |Docs|
@@ -42,43 +40,37 @@ hilfreich. Für das `cookiecutter-namespace-template
.. |Docs| image:: https://readthedocs.org/projects/cookiecutter-namespace-template/badge/?version=latest
:target: https://cookiecutter-namespace-template.readthedocs.io/en/latest/
-Für umfangreiche Dokuemtationen könnt Ihr z.B. `Sphinx
-`_ verwenden, ein Dokumentationswerkzeug, das
-:doc:`rest`, eine einfache Auszeichnungssprache, in HTML oder auch PDF,
-EPub und Manpages umwandelt. Auch das Jupyter-Tutorial ist mit Sphinx erstellt
-worden. Um einen ersten Eindruck von Sphinx zu erhalten, könnt Ihr Euch den
-Quellcode dieser Seite anschauen indem Ihr am Fuss dieser Seite dem Link
+For extensive documentation you can, for example, use `Sphinx
+`_, a documentation tool that converts :doc:`rest`,
+a simple markup language, into HTML or PDF, EPub and man pages. The Jupyter
+tutorial was also created with Sphinx. To get a first impression of the Sphinx,
+you can have a look at the source code of this page by following the link
`Sources <../../_sources/productive/sphinx/index.rst.txt>`_ folgt.
-Ursprünglich wurde Sphinx für die Dokumentation von Python entwickelt und wird
-heute auch in fast allen Python-Projekten verwendet, u.a. für `NumPy und SciPy
+Originally, Sphinx was developed for the documentation of Python and is now used
+in almost all Python projects, including `NumPy und SciPy
`_, `Matplotlib
`_, `Pandas
-`_ und `SQLAlchemy
+`_ and `SQLAlchemy
`_.
-Zur Verbreitung von Sphinx unter den Python-Entwicklern dürfte auch das Sphinx
-`autodoc
-`_-Feature
-beigetragen haben, mit dem Dokumentationen aus Python :doc:`docstrings`
-erzeugt werden können. Insgesamt erlaubt Sphinx Entwicklern, *in place* eine
-vollständige Dokumentation erstellen zu können. Häufig wird die Dokumentation
-auch im selben :doc:`Git <../git/index>`-Repository gespeichert, sodass das
-Erstellen der jeweils aktuellen Software-Dokumentation einfach bleibt.
-
-Sphinx wird auch in Projekten außerhalb der Python-Community verwendet, z.B. für
-die Dokumentation des Linux Kernels: `Kernel documentation update
+The Sphinx `autodoc
+`_ feature,
+which can be used to create documentation from Python :doc:`docstrings`, may
+also be conducive to the spread of Sphinx among Python developers. Overall,
+Sphinx allows developers to create complete documentation in place. Often the
+documentation is also stored in the same :doc:`Git <../git/index>` repository,
+so that the creation of the latest software documentation remains easy.
+
+Sphinx is also used in projects outside the Python community, e.g. for the
+documentation of the Linux kernel: `Kernel documentation update
`_.
-Um die Erstellung von Dokumentationen weiter zu vereinfachen, wurde
-`Read the Docs `_ entwickelt. Read the Docs
-vereinfacht das Erstellen und Veröffentlichen von Dokumentation nach jedem
-*Commit*.
+`Read the Docs `_ was developed to forther simplify
+documentation. Read the Docs makes it easy to create and publish documentation
+after each commit.
.. seealso::
- * `Christina Czeschik und Matthias Lindhorst: Weniger schlecht über IT
- schreiben
- `_
* `Google developer documentation style guide
`_
* `Google Technical Writing Courses for Engineers
diff --git a/docs/productive/documenting/intersphinx.rst b/docs/productive/documenting/intersphinx.rst
index 08207d8c..a16d6450 100644
--- a/docs/productive/documenting/intersphinx.rst
+++ b/docs/productive/documenting/intersphinx.rst
@@ -3,12 +3,12 @@ Intersphinx
`sphinx.ext.intersphinx
`_
-erlaubt die Verlinkung von anderen Projekt-Dokumentationen.
+allows the linking of other project documentation.
-Konfiguration
+Configuration
-------------
-In ``source/conf.py`` muss Intersphinx als Erweiterung angegeben werden:
+In ``source/conf.py`` Intersphinx must be indicated as an extension:
.. code-block:: python
@@ -17,7 +17,7 @@ In ``source/conf.py`` muss Intersphinx als Erweiterung angegeben werden:
'sphinx.ext.intersphinx',
]
-Anschließend können externe Sphinx-Dokumentationen angegeben werden, z.B. mit:
+External Sphinx documentation can then be specified, e.g. with:
.. code-block:: python
@@ -26,7 +26,7 @@ Anschließend können externe Sphinx-Dokumentationen angegeben werden, z.B. mit:
'bokeh': ('https://bokeh.pydata.org/en/latest/', None)
}
-Für ein Inventar können jedoch auch alternative Dateien angegeben werden, z.B.:
+However, alternative files can also be specified for an inventory, for example:
.. code-block:: python
@@ -35,11 +35,11 @@ Für ein Inventar können jedoch auch alternative Dateien angegeben werden, z.B.
...
}
-Linkziele ermitteln
--------------------
+Determine link targets
+----------------------
-Um die in einem Inventar zur Verfügung stehenden Links zu ermitteln, könnt Ihr
-z.B. folgendes eingeben:
+To determine the links available in an inventory, you can enter the following,
+for example:
.. code-block:: console
@@ -50,11 +50,11 @@ z.B. folgendes eingeben:
PyArg_Parse c-api/arg.html#c.PyArg_Parse
…
-Link erstellen
---------------
+Create a link
+-------------
-Um nun z.B. auf https://docs.python.org/3/c-api/arg.html#c.PyArg_Parse zu
-verlinken, kann eine der folgenden Varianten angegeben werden:
+In order to link to https://docs.python.org/3/c-api/arg.html#c.PyArg_Parse, one
+of the following variants can be specified:
:c:func:`PyArg_Parse`
.. code-block:: rest
@@ -71,22 +71,22 @@ verlinken, kann eine der folgenden Varianten angegeben werden:
:c:func:`Parsing arguments `
-Benutzerdefinierte Links
-------------------------
+Custom links
+------------
-Ihr könnt auch eigene ``intersphinx``-Zuordnungen erstellen, z.B. wenn
-``objects.inv`` Fehler hat wie bei `Beautyfull Soup
-`_.
+You can also create your own ``intersphinx`` assignments, e.g. if
+``objects.inv`` in `Beautyfull Soup
+`_ has errors.
-Der Fehler kann behoben werden mit:
+The error can be corrected with:
-#. Installation von ``sphobjinv``:
+#. Installation of ``sphobjinv``:
.. code-block:: console
$ pipenv install sphobjinv
-#. Anschließend kann die Originaldatei heruntergeladen werden mit:
+#. Then the original file can be downloaded with:
.. code-block:: console
@@ -96,7 +96,7 @@ Der Fehler kann behoben werden mit:
$ curl -O https://www.crummy.com/software/BeautifulSoup/bs4/doc/objects.inv
$ mv objects.inv bs4_objects.inv
-#. Ändern der Sphinx-Konfiguration in ``docs/source/conf.py``:
+#. Change the Sphinx configuration ``docs/source/conf.py``:
.. code-block:: console
@@ -105,15 +105,15 @@ Der Fehler kann behoben werden mit:
'bs4': ('https://www.crummy.com/software/BeautifulSoup/bs4/doc/', "_intersphinx/bs4_objects.inv")
}
-#. Konvertieren in eine Textdatei:
+#. Convert to a text file:
.. code-block:: console
$ pipenv run sphobjinv convert plain bs4_objects.inv bs4_objects.txt
-#. Editieren der Textdatei
+#. Editing the text file
- z.B.:
+ e.g.:
.. code-block:: console
@@ -121,8 +121,7 @@ Der Fehler kann behoben werden mit:
bs4.BeautifulSoup.get_text py:method 1 index.html#get-text -
bs4.element.Tag py:class 1 index.html#tag -
- Diese Einträge lassen sich dann in einer Sphinx-Dokumentation referenzieren
- mit:
+ These entries can then be referenced in a Sphinx documentation with:
.. code-block:: rest
@@ -131,33 +130,32 @@ Der Fehler kann behoben werden mit:
- :class:`bs4.element.Tag`
.. note::
- Beachtet dabei die `Sphinx objects.inv v2 Syntax
- `_ dieser
- Textdateien.
+ Please note the `Sphinx objects.inv v2 Syntax
+ `_ of these text
+ files.
-#. Neue ``objects.inv``-Datei erstellen:
+#. Create a new ``objects.inv`` file:
.. code-block:: console
$ pipenv run sphobjinv convert zlib bs4_objects.txt bs4_objects.txt
-#. Sphinx-Dokumentation erstellen:
+#. Create Sphinx documentation:
.. code-block:: console
$ pipenv run sphinx-build -ab html source/ build/
-Rollen hinzufügen
------------------
+Add roles
+---------
-Wenn ihr eine Fehlermeldung erhaltet, dass eine bestimmte Textrolle unbekannt
-sei, z.B.
+If you get an error message that a certain text role is unknown, e.g.
.. code-block:: console
WARNING: Unknown interpreted text role "confval".
-so könnt ihr diese in der ``conf.py`` hinzufügen:
+so you can add them in the ``conf.py``:
.. code-block:: python
diff --git a/docs/productive/documenting/rest.rst b/docs/productive/documenting/rest.rst
index 9dccbe29..366d3934 100644
--- a/docs/productive/documenting/rest.rst
+++ b/docs/productive/documenting/rest.rst
@@ -1,58 +1,56 @@
reStructuredText
================
-Kurzanleitung
--------------
+Quick guide
+-----------
Den folgenden reStructuredText könnt ihr euch als HTML anschauen unter
:doc:`rest-example`::
- Titel mit Satzzeichen unterstreichen
- =====================================
+ Underline the title with punctuation marks
+ ==========================================
- Wechselt für Untertitel das Satzzeichen
- ---------------------------------------
+ Change the punctuation mark for subtitles
+ -----------------------------------------
- *Italic*, **fett** und ``vorformatiert``
- `Hyperlink `_ `Link`_
+ *Italic*, **bold** und ``preformatted``
+ `hyperlink `_ `link`_
- .. _Link: http://en.wikipedia.org/wiki/Link_(The_Legend_of_Zelda)
+ .. _link: http://en.wikipedia.org/wiki/Link_(The_Legend_of_Zelda)
.. image:: python-logo.png
- .. Ein Kommentarblock beginnt mit zwei Punkten und kann weiter eingerückt
- werden.
+ .. A comment block begins with two points and can be indented further
- Ein Absatz besteht aus einer oder mehreren Zeilen mit nicht eingerücktem
- Text, getrennt aus dem Material oben und unten durch Leerzeilen.
+ A paragraph consists of one or more lines of non-indented text, separated
+ from the material above and below by blank lines.
- »Block-Anführungszeichen sehen aus wie Absätze, sind aber eingerückt mit
- einem oder mehreren Leerzeichen.«
+ »Block quotation marks look like paragraphs, but are indented with one
+ or more spaces.«
- | Aufgrund des Pipe-Zeichens wird dies zu einer Zeile.
- | Und dies wird eine andere Zeile werden.
+ | Because of the pipe character, this becomes one line.
+ | And this will be another line.
- Begriff
- Definition für den Begriff
- Anderer Begriff
- …und seine Definition
+ term
+ Definition of the term
+ Different term
+ …and its definition
- * Jeder Eintrag in einer Liste beginnt mit einem Sternchen (oder ``1.``,
- ``a.`` usw.).
- * Listenelemente können für mehrere Zeilen angezeigt werden, solange die
- Listenelemente eingerückt bleiben
+ * Each entry in a list begins with an asterisk (or ``1.``,
+ ``a.`` etc.).
+ * List items can be displayed for multiple lines as long as the list items
+ remain indented
- Codeblöcke werden mit einem Doppelpunkt eingeführt und eingerückt::
+ Blocks of code are introduced and indented with a colon::
import docutils
print help(docutils)
- >>> print 'Aber doctests beginnen mit ">>>" und brauchen keine Einrückung.'
+ >>> print 'But doctests start with ">>>" and don’t need to be indented.'
.. note::
- Wenn der Inhalt von ``long_description`` in
- ``setuptools.setup()`` in reStructured Text geschrieben ist, wird es im
- :term:`Python Package Index (PyPI)` als wohlformattiertes HTML
- ausgegeben.
+ If the content of ``long_description`` in ``setuptools.setup()`` is written
+ in reStructured Text, it is displayed as well-formatted HTML on the
+ :term:`Python Package Index (PyPI)`.
.. seealso::
* `reStructuredText Primer
@@ -60,14 +58,14 @@ Den folgenden reStructuredText könnt ihr euch als HTML anschauen unter
* `reStructuredText Quick Reference
`_
-Direktiven
+Directives
----------
-reStructuredText lässt sich durch sog. `Directives
-`_ erweitern.
-Hiervon macht Sphinx umfassend Gebrauch. Hier einige Beispiele:
+reStructuredText can be expanded with `Directives
+`_.
+Sphinx makes extensive use of this. Here are some examples:
-Inhaltsverzeichnis
+Table of Contents
.. code-block:: rest
@@ -83,7 +81,7 @@ Inhaltsverzeichnis
rest
docstrings
-Meta-Informationen
+Meta information
.. code-block:: rest
@@ -93,7 +91,7 @@ Meta-Informationen
.. sectionauthor:: Veit Schiele
.. codeauthor:: Veit Schiele
-Code-Block
+Code block
.. code-block:: rest
@@ -115,7 +113,7 @@ Code-Block
print 'This one is not...'
print '...but this one is.'
-Siehe auch
+See also
.. code-block:: rest
@@ -127,7 +125,7 @@ Siehe auch
`Sphinx Directives
`_
-Glossar
+Glossary
.. code-block:: rest
diff --git a/docs/productive/documenting/start.rst b/docs/productive/documenting/start.rst
index 4349d16f..60b3b999 100644
--- a/docs/productive/documenting/start.rst
+++ b/docs/productive/documenting/start.rst
@@ -1,7 +1,7 @@
-Sphinx-Projekt erstellen
-========================
+Create a Sphinx project
+=======================
-Installation und Start
+Installation and start
----------------------
.. code-block:: console
@@ -40,7 +40,7 @@ Installation und Start
Creating file docs/Makefile.
Creating file docs/make.bat.
-Sphinx-Layout
+Sphinx layout
-------------
::
@@ -56,6 +56,6 @@ Sphinx-Layout
├── index.rst
└── make.bat
-``index.rst`` ist die initiale Datei für die Dokumentation, in der sich das
-Inhaltsverzeichnis befindet. Das Inhaltsverzeichnis wird von euch erweitert
-werden sobald ihr neue ``*.rst``-Dateien hinzufügt.
+``index.rst`` is the initial file for the documentation, in which the table of
+contents is located. The table of contents will be expanded by you as soon as you
+add new ``*.rst`` files.
diff --git a/docs/productive/dvc/dag.rst b/docs/productive/dvc/dag.rst
index 607c0363..a9cf2149 100644
--- a/docs/productive/dvc/dag.rst
+++ b/docs/productive/dvc/dag.rst
@@ -1,8 +1,8 @@
-Pipelines anzeigen
-==================
+View pipelines
+==============
-Solche Datenpipelines lassen sich anzeigen oder als Abhängigkeitsgraph
-darstellen mit ``dvc dag``:
+Such data pipelines can be displayed or represented as a dependency graph with
+``dvc dag``:
.. code-block:: console
@@ -42,8 +42,8 @@ darstellen mit ``dvc dag``:
train.dvc
evaluate.dvc
-* Mit ``dvc dag --dot`` kann auch eine ``.dot``-Datei für `Graphviz
- `_ generiert werden:
+* With ``dvc dag --dot`` a ``.dot`` file for `Graphviz
+ `_ is generated:
.. graphviz::
diff --git a/docs/productive/dvc/index.rst b/docs/productive/dvc/index.rst
index d224d621..c465fe49 100644
--- a/docs/productive/dvc/index.rst
+++ b/docs/productive/dvc/index.rst
@@ -1,40 +1,36 @@
-Daten verwalten mit ``DVC``
-===========================
-
-Für Datenanalysen und vor allem bei Machine Learning ist es äußerst wertvoll,
-verschiedene Versionen von Analysen, die mit verschiedenen Datensätzen und
-Parametern durchgeführt wurden, reproduzieren zu können. Um jedoch
-reproduzierbare Analysen zu erhalten, müssen sowohl die Daten als auch das
-Modell (einschließlich der Algorithmen, Parameter. etc.) versioniert werden.
-Die Versionierung von Daten für reproduzierbare Analysen ist aufgrund der
-Datengröße ein größeres Problem als die Versionierung von Modellen. Werkzeuge
-wie `DVC `_ helfen bei der Verwaltung von Daten indem Nutzer
-diese mit einem :doc:`Git <../git/index>`-artigen Workflow an einen entfernten
-Datenspeicher übertragen können. Hierdurch vereinfacht sich der Abruf bestimmter
-Versionen von Daten um eine Analyse zu reproduzieren.
-
-DVC wurde entwickelt um ML-Modelle und Datensätze igemeinsam nutzen zu können
-und nachvollziehbar zu verwalten. Es arbeitet zwar mit verschiedenen
-Versionsverwaltungen zusammen, benötigt diese jedoch nicht. Im Gegensatz z.B. zu
-`DataLad `_/`git-annex
-`_ ist es auch nicht auf Git als
-Versionsverwaltung beschränkt sondern kann z.B auch zusammen mit Mercurial
-verwendet werden, siehe `github.com/crobarcro/dvc/dvc/scm.py
-`_. Zudem nutzt es
-ein eigenes System zum Speichern der Dateien mit Unterstützung u.a. für SSH und
-HDFS.
-
-DataLad konzentriert sich hingegen mehr auf die Entdeckung und Verwendung von
-Datasets, die dann einfach mit Git verwaltet werden. DVC hingegen speichert
-jeden Schritt der Pipeline in einer separaten ``.dvc``-Datei, die dann durch
-Git verwaltet werden kann.
-
-Diese ``.dvc``-Dateien erlauben jedoch praktische Tools zur Manipilation und
-Visualisierung von DAGs, siehe z.B. die :ref:`Visualisierung der DAGs
+Manage data with ``DVC``
+========================
+
+For data analysis, and especially machine learning, it is extremely valuable to
+be able to reproduce different versions of analyses that have been carried out
+with different data sets and parameters. However, in order to obtain
+reproducible analyses, both the data and the model (including the algorithms,
+parameters, etc.) must be versioned. Versioning data for reproducible analysis
+is a bigger problem than versioning models because of the size of the data.
+Tools like `DVC `_ help manage data by allowing users to
+transfer it to a remote data store using a :doc:`Git <../git/index>` like
+workflow. This simplifies the retrieval of certain versions of data in order to
+reproduce an analysis.
+
+DVC was developed to be able to use ML models and data sets together and to
+manage them in a comprehensible manner. It works with different version
+managements, but does not need them. In contrast to `DataLad
+`_/`git-annex `_,
+for example, it is not limited to Git as version management, but can also be
+used together with Mercurial, see `github.com/crobarcro/dvc/dvc/scm.py
+`_. It also uses its
+own system for storing files with support for SSH and HDFS, among others.
+
+DataLad, on the other hand, focuses more on discovering and consuming datasets,
+which are then easily managed with Git. DVC, on the other hand, stores each step
+in the pipeline in a separate ``.dvc`` file that can then be managed by Git.
+
+These ``.dvc`` files, however, allow practical tools for manipulating and
+visualizing DAGs, see, for example, :ref:`visualisation of DAGs
`.
-Schließlich lassen sich mit :ref:`dvc remote ` auch
-externe Abhängigkeiten angeben.
+Finally, external dependencies can also be specified with :ref:`dvc remote
+`.
.. seealso::
* `Tutorial `_
@@ -44,17 +40,17 @@ externe Abhängigkeiten angeben.
Installation
------------
-DVC lässt sich mit Pipenv installieren. Beachtet dabei jedoch bitte, dass ihr
-hierbei die Extras explizit angeben müsst. Dies können ``[ssh]``, ``[s3]``,
-``[gs]``, ``[azure]``, und ``[oss]`` oder ``[all]`` sein. Für ``ssh`` sieht das
-Kommando dann so aus:
+Finally, external dependencies can also be specified with Pipenv. Please note,
+however, that you have to explicitly state the extras. This can be ``[ssh]``,
+``[s3]``, ``[gs]``, ``[azure]``, and ``[oss]`` or ``[all]``. For ``ssh`` the
+command looks like this:
.. code-block:: console
$ pipenv install dvc[ssh]
-Alternativ kann DVC auch über das Paketmanagement von Ubuntu/Debian installiert
-werden mit:
+Alternatively, DVC can also be installed via the package management of
+Ubuntu/Debian with:
.. code-block:: console
@@ -62,18 +58,18 @@ werden mit:
$ sudo apt update
$ sudo apt install dvc
-Für macOS lässt sich DVC installieren mit:
+For macOS DVC can be installed with:
.. code-block:: console
$ brew install iterative/homebrew-dvc/dvc
.. note::
- Bitte beachtet, dass das folgende Beispiel mit einer aktuellen DVC-Version
- erstellt wurde (1.0.0a9), die z.T. eine andere Syntax als frühere Versionen
- verwendet. Dies könnt Ihr aktuell (8. Juni 2020) nur mit pip installieren::
+ Please note that the following example was created with a current DVC
+ version (1.0.0a9), which partly uses a different syntax than earlier
+ versions. You can currently (8th June 2020) only install this with pip:
- .. code-block:: console
+ .. code-block:: console
$ pipenv install dvc[all]==1.0.0a9
diff --git a/docs/productive/dvc/init.rst b/docs/productive/dvc/init.rst
index a68f0984..26d5acce 100644
--- a/docs/productive/dvc/init.rst
+++ b/docs/productive/dvc/init.rst
@@ -1,7 +1,7 @@
-Projekt erstellen
-=================
+Create a project
+================
-DVC lässt sich einfach initialisieren mit:
+DVC can be easily initialised with:
.. code-block:: console
@@ -10,24 +10,23 @@ DVC lässt sich einfach initialisieren mit:
$ git init
$ dvc init
$ git add .dvc
- $ git commit -m "Initialize DVC"
+ $ git commit -m "Initialise DVC"
``dvc init``
- erstellt ein Verzeichnis ``.dvc/`` mit ``config``, ``.gitignore`` und
- ``cache``-Verzeichnis.
+ creates a directory ``.dvc/`` with ``config``, ``.gitignore`` and
+ ``cache`` directory.
``git commit``
- stellt ``.dvc/config`` und ``.dvc/.gitignore`` unter Git-Versionskontrolle.
+ puts ``.dvc/config`` and ``.dvc/.gitignore`` under version control.
-Konfigurieren
--------------
+Configure
+---------
.. _dvc-remote:
-Bevor DVC verwendet wird, sollte noch ein entfernter Speicherplatz (*remote
-storage*) eingerichtet werden. Dieser sollte für alle zugänglich sein, die auf
-die Daten oder das Modell zugreifen sollen. Es ähnelt der Verwendung eines
-Git-Server. Häufig ist das jedoch auch ein NFS-Mount, der z.B. folgendermaßen
-eingebunden werden kann:
+Before DVC is used, even a remote storage is established. This should be
+accessible to everyone who should access the data or the model. It’s similar to
+using a Git server. Often, however, this is also an NFS mount, which can be
+integrated as follows, for example:
.. code-block:: console
@@ -39,23 +38,22 @@ eingebunden werden kann:
1 file changed, 4 insertions(+)
``-d``, ``--default``
- Standardwert für den entfernten Speicherplatz
+ Default value for the space removed
``local``
- Name des entfernten Speicherplatz
+ Name of the remote location
``/var/dvc-storage``
- URL des entfernten Speicherplatzes
+ URL of the remote location
- Daneben werden noch weitere Protokolle unterstützt, die dem Pfad
- vorangestellt werden, u.a. ``ssh:``, ``hdfs:``, ``https:``.
+ In addition, other protocols are supported, which are preceded by the path,
+ including ``ssh:``, ``hdfs:`` and ``https:``.
-Es kann also einfach noch ein weterer entfernter Datenspeicher hinzugefügt
-werden, z.B. mit:
+Another remote data storage can simply be added, e.g. with:
.. code-block:: console
$ dvc remote add webserver https://dvc.example.org/myproject
-Die zugehörige Konfigurationsdatei ``.dvc/config`` sieht dann so aus:
+The associated configuration file ``.dvc/config`` looks like this:
.. code-block:: ini
@@ -66,12 +64,11 @@ Die zugehörige Konfigurationsdatei ``.dvc/config`` sieht dann so aus:
['remote "webserver"']
url = https://dvc.example.org/myproject
-Daten und Verzeichnisse hinzufügen
-----------------------------------
+Add data and directories
+------------------------
-Mit DVC könnt ihr Dateien, ML-Modelle, Verzeichnisse und Zwischenergebnisse mit
-Git speichern und versionieren, ohne dass der Dateiinhalt in Git eingecheckt
-werden muss:
+With DVC you can save and version files, ML models, directories and intermediate
+results with Git without having to check the file content into Git:
.. code-block:: console
@@ -79,53 +76,52 @@ werden muss:
-o data/data.xml
$ dvc add data/data.xml
-Dies fügt die Datei ``data/data.xml`` in ``data/.gitignore`` hinzu und
-schreibt die Metanangaben in ``data/data.xml.dvc``. Weitere Informationen
-zum Dateiformat der ``*.dvc``-Datei erhaltet ihr unter `DVC-File Format
+This will add the file ``data/data.xml`` in ``data/.gitignore`` and write the
+meta information in ``data/data.xml.dvc``. Further information on the file
+format of the ``*.dvc`` can be found under `DVC-File Format
`_.
-Um nun verschiedene Versionen eurer Projektdaten mit Git verwalten zu können,
-müsst ihr jedoch nur die CVS-Datei hinzufügen:
+In order to be able to manage different versions of your project data with Git,
+you only have to add the CVS file:
.. code-block:: console
$ git add data/.gitignore data/fortune500.csv.dvc
$ git commit -m "Add raw data to project"
-Daten speichern und abrufen
----------------------------
+Store and retrieve data
+-----------------------
-Die Daten können vom Arbeitsverzeichnis eures Git-Repository auf den entfernten
-Speicherplatz kopiert werden mit
+The data can be copied from the working directory of your Git repository to the
+remote storage space with
.. code-block:: console
$ dvc push
-Falls ihr aktuellere Daten abrufen wollt, könnt ihr dies mit
+If you want to call up more current data, you can do so with
.. code-block:: console
$ dvc pull
-Importieren und Aktualisieren
------------------------------
+Import and update
+-----------------
-Ihr könnt auch Daten und Modelle eines anderen Projekts importieren mit dem
-``dvc import``-Befehl, z.B.:
+You can also import data and models from another project with the command ``dvc
+import``, e.g.:
.. code-block:: console
$ dvc import https://github.com/iterative/dataset-registry get-started/data.xml
Importing 'get-started/data.xml (https://github.com/iterative/dataset-registry)' -> 'data.xml'
-Dies lädt die Datei aus der `dataset-registry
-`_ in das aktuelle
-Arbeitsverzeichnis, fügt sie ``.gitignore`` hinzu und erstellt
-``data.xml.dvc``.
+This loads the file from the `dataset-registry
+`_ into the current working
+directory, adds ``.gitignore`` and creates ``data.xml.dvc``.
-Mit ``dvc update`` können wir diese Datenquellen aktualisieren bevor wir eine
-Pipeline reproduzieren, die von diesen Datenquellen abhängt, z.B.:
+With ``dvc update`` we can update these data sources before we reproduce a
+pipeline that depends on these data sources, e.g.
.. code-block:: console
diff --git a/docs/productive/dvc/integration.rst b/docs/productive/dvc/integration.rst
index e6e32c7a..cb66e5b3 100644
--- a/docs/productive/dvc/integration.rst
+++ b/docs/productive/dvc/integration.rst
@@ -1,11 +1,11 @@
-Vim- und IDE-Integration
-========================
+Vim and IDE integration
+=======================
Vim
---
-Um DVC-Dateien in Vim als YAML zu erkennen, solltet ihr Folgendes in
-``~/.vimrc`` hinzufügen::
+To recognize DVC files in Vim as YAML, you should add the following in
+``~/.vimrc``::
" DVC
autocmd! BufNewFile,BufRead Dvcfile,*.dvc setfiletype yaml
@@ -15,7 +15,6 @@ IntelliJ IDEs
`intellij-dvc
`_
-ist ein Plugin für IntelliJ IDEs einschließlich PyCharm, IntelliJ IDEA und
-CLion. Es kann aus dem `JetBrains Plugins-Repository
-`_ heruntergeladen
-werden.
+is a plugin for IntelliJ IDEs including PyCharm, IntelliJ IDEA and CLion. It can
+be downloaded from the `JetBrains Plugins-Repository
+`_.
diff --git a/docs/productive/dvc/metrics.rst b/docs/productive/dvc/metrics.rst
index 06331c68..695c6794 100644
--- a/docs/productive/dvc/metrics.rst
+++ b/docs/productive/dvc/metrics.rst
@@ -1,18 +1,17 @@
-Versuchsmetriken
-================
+Trial metrics
+=============
-Mit dem `dvc metrics `_-Kommando
-ist DVC auch ein Framework zum Erfassen und Vergleichen der Performance von
-Experimenten.
+With the `dvc metrics `_
+command, DVC is also a framework for recording and comparing the performance of
+experiments.
`evaluate.py
`_
-berechnet den AUC (**A** rea **U** nder the **C** urve, deutsch `Fläche unter
-der Kurve `_)-Wert.
-Dabei verwendet es den Testdatensatz, ließt die Features aus ``features/test.pkl``
-und erstellt die Metrikdatei ``auc.metric``. Sie kann DVC als Metrik kenntlich
-gemacht werden mit der ``-M``-Option von `dvc run
-`_, in unserem Beispiel also mit:
+calculates the AUC (**A** rea **U** nder the **C** urve). It uses the test data
+set, reads the features from the file ``features/test.pkl`` and creates the
+metrics file ``auc.metric``. It can be identified as a DVC metric with the
+``-M`` option of `dvc run `_, in our
+example with:
.. code-block:: console
@@ -31,16 +30,16 @@ gemacht werden mit der ``-M``-Option von `dvc run
- auc.json:
cache: false
-Mit ``dvc metrics show`` lassen sich Experimente dann auch über verschiedene
-Branches und Tags hinweg vergleichen:
+With ``dvc metrics show`` experiments can be compared then through various
+branches and tags:
.. code-block:: console
$ dvc metrics show
auc.json: 0.514172
-Um nun unsere erste Version der DVC-Pipeline abzuschließen, fügen wir die
-Dateien und ein Tag dem Git-Repository hinzu:
+Now to complete our first version of the DVC pipeline, let's add the files and a
+tag to the Git repository:
.. code-block:: console
diff --git a/docs/productive/dvc/params.rst b/docs/productive/dvc/params.rst
index b5d0d02a..cc00c45b 100644
--- a/docs/productive/dvc/params.rst
+++ b/docs/productive/dvc/params.rst
@@ -1,8 +1,8 @@
-Parametrisierung
+Parameterisation
================
-In der nächsten Phase unseres Beispiels parametrisieren wir die Verarbeitung
-und erstellen hierfür die Datei ``params.yaml`` mit folgendem Inhalt:
+In the next phase of our example, we parameterise the processing and create the
+file ``params.yaml`` with the following content:
.. code-block:: yaml
@@ -11,20 +11,20 @@ und erstellen hierfür die Datei ``params.yaml`` mit folgendem Inhalt:
lo: 1
hi: 2
-Damit die Parameter gelesen werden, wird dem ``dvc run``-Befehl noch ``-p
-:`` hinzugefügt, also in unserem Beispiel:
+To read the parameters, the option ``-p :`` must be added
+to the ommand ``dvc run``, in our example:
.. code-block:: console
- $ dvc run -n featurize -d src/featurization.py -d data/splitted \
+ $ dvc run -n featurise -d src/featurisation.py -d data/splitted \
-p params.yaml:max_features,ngram_range.lo,ngram_range.hi -o data/features \
- python src/featurization.py data/splitted data/features
+ python src/featurisation.py data/splitted data/features
-Dies ergänzt die ``dvc.yaml``-Datei um:
+This adds to the ``dvc.yaml`` file:
.. code-block:: yaml
- featurize:
+ featurise:
cmd: python src/featurization.py data/splitted data/features
deps:
- data/splitted
@@ -36,17 +36,17 @@ Dies ergänzt die ``dvc.yaml``-Datei um:
outs:
- data/features
-Damit diese Phase wiederholt werden kann, werden die hd5-Hashwerte und
-Parameterwerte in der ``dvc.lock``-Datei gespeichert:
+So that this phase can be repeated, the hd5 hash values and parameter values are
+stored in the file ``dvc.lock``:
.. code-block:: yaml
- featurize:
- cmd: python src/featurization.py data/splitted data/features
+ featurise:
+ cmd: python src/featurisation.py data/splitted data/features
deps:
- path: data/splitted
md5: 1ce9051bf386e57c03fe779d476d93e7.dir
- - path: src/featurization.py
+ - path: src/featurisation.py
md5: a56570e715e39134adb4fdc779296373
params:
params.yaml:
@@ -54,8 +54,8 @@ Parameterwerte in der ``dvc.lock``-Datei gespeichert:
ngram_range.hi: 2
ngram_range.lo: 1
-Schließlich müssen noch ``dvc.lock``, ``dvc.yaml`` und ``data/.gitignore`` im
-Git-Repository aktualisiert werden:
+Finally ``dvc.lock``, ``dvc.yaml`` and ``data/.gitignore`` in the Git repository
+need to be updated:
.. code-block:: console
diff --git a/docs/productive/dvc/pipeline.rst b/docs/productive/dvc/pipeline.rst
index 0e0b7832..5d10f9e7 100644
--- a/docs/productive/dvc/pipeline.rst
+++ b/docs/productive/dvc/pipeline.rst
@@ -1,26 +1,25 @@
Pipelines
=========
-Code und Daten verbinden
-------------------------
+Connect code and data
+---------------------
-Befehle wie ``dvc add``, ``dvc push`` und ``dvc pull`` können unabhängig von
-Änderungen im Git-Repository vorgenommen werden und bieten daher nur die Basis
-um große Datenmengen und Modelle zu verwalten. Um tatsächlich reproduzierbare
-Ergebnisse zu erzielen, müssen Code und Daten miteinander verbunden werden.
+Commands like ``dvc add``, ``dvc push`` and ``dvc pull`` can be made
+independently of changes in the Git repository and therefore only provide the
+basis for managing large amounts of data and models. In order to actually
+achieve reproducible results, code and data must be linked together.
.. figure:: combine-git-dvc.png
- :alt: Git und DVC verbinden
+ :alt: Connect Git and DVC
Design: André Henze, Berlin
-Mit ``dvc run`` könnt Ihr einzelne Verbeitungsstufen erstellen, wobei jede
-Stufe durch eine, mit Git verwaltete, Quellcode-Datei sowie weiteren
-Abhängigkeiten und Ausgabedaten beschrieben wird. Alle Stufen zusammen bilden
-dann die DVC-Pipeline.
+With ``dvc run`` you can create individual processing levels, each level being
+described by a source code file managed with Git as well as other dependencies
+and output data. All stages together then form the DVC pipeline.
-In unserem Beispiel `dvc-example `_ soll
-die erste Stufe die Daten in Trainings- und Testdaten aufteilen:
+In our example `dvc-example `_, the first
+stage is to split the data into training and test data:
.. code-block:: console
@@ -28,19 +27,18 @@ die erste Stufe die Daten in Trainings- und Testdaten aufteilen:
python src/split.py data/data.xml
``-n``
- gibt den Namen der Verarbeitungsstufe an.
+ indicates the name of the processing stage.
``-d``
- gibt Abhängigkeiten (*dependencies*) für das reproduzierbare Kommando an.
+ dependencies on the reproducible command.
- Wenn zum Reproduzieren der Ergebnisse beim nächsten Mal ``dvc repo``
- aufgerufen wird, überprüft DVC diese Abhängigkeiten und entscheidet, ob
- diese auf dem aktuellen Stand sond oder erneut ausgeführt werden müssen um
- aktuellere Ergebnisse zu erhalten.
+ The next time ``dvc repo`` is called to reproduce the results, DVC checks
+ these dependencies and decides whether they need to be updated or run again
+ to get more current results.
``-o``
- gibt die Ausgabedatei oder das Ausgabeverzeichnis an.
+ specifies the output file or directory.
-In unserem Fall sollte sich der Arbeitsbereich geändert haben in:
+In our case, the work area should have changed to:
.. code-block:: console
@@ -57,7 +55,7 @@ In unserem Fall sollte sich der Arbeitsbereich geändert haben in:
└── src
└── split.py
-Die generierte ``dvc.yaml``-Datei sieht dann z.B. folgendermaßen aus:
+The generated ``dvc.yaml`` file looks like this, for example:
.. code-block:: yaml
@@ -70,16 +68,15 @@ Die generierte ``dvc.yaml``-Datei sieht dann z.B. folgendermaßen aus:
outs:
- data/splitted
-Da die Daten im Ausgabeverzeichnis nie mit Git versioniert werden sollten, hat
-``dvc run`` dies auch bereits die ``data/.gitignore``-Datei geschrieben:
+Since the data in the output directory should never be versioned with Git, ``dvc
+run`` has already written the file ``data/.gitignore``:
.. code-block:: console
/data.xml
+ /splitted
-Anschließend müssen die geänderten Daten nur noch in Git bzw. DVC übernommen
-werden:
+Then the changed data only has to be transferred to Git or DVC:
.. code-block:: console
@@ -87,6 +84,6 @@ werden:
$ git commit -m "Create split stage"
$ dvc push
-Werden nun mehrere Phasen mit ``dvc run`` erstellt, wobei die Ausgabe eines
-Kommandos als Abhängigkeit eines anderen angegeben wird, entsteht eine `DVC
-Pipeline `_.
+If several phases are now created with ``dvc run`` and the output of one command
+being specified as a dependency of another, a `DVC Pipeline
+`_ is created.
diff --git a/docs/productive/dvc/reproduce.rst b/docs/productive/dvc/reproduce.rst
index 4942b109..36c263ab 100644
--- a/docs/productive/dvc/reproduce.rst
+++ b/docs/productive/dvc/reproduce.rst
@@ -1,8 +1,7 @@
-Reproduzieren
-=============
+Reproduce
+=========
-Um die Ergebnisse eines Projekts zu reproduzieren, clonen wir rufen
-anschließend die mit DVC verwalteten Daten ab:
+To reproduce the results of a project, we first clone the data managed with DVC:
.. code-block:: console
@@ -14,7 +13,7 @@ anschließend die mit DVC verwalteten Daten ab:
$ ls data/
data.xml data.xml.dvc
-Anschließend könnt ihr die Ergebnisse einfach reproduzieren mit `dvc repro
+Then you can easily reproduce the results with `dvc repro
`_:
.. code-block:: console
@@ -26,8 +25,8 @@ Anschließend könnt ihr die Ergebnisse einfach reproduzieren mit `dvc repro
Stage 'train' didn't change, skipping
Stage 'evaluate' didn't change, skipping
-Ihr könnt nun z.B. Parameter in der ``params.yaml``-Datei ändern und
-anschließend die Pipeline erneut durchlaufen:
+You can now, for example, change parameters in the ``params.yaml`` file and then
+run through the pipeline again:
.. code-block:: console
@@ -42,7 +41,6 @@ anschließend die Pipeline erneut durchlaufen:
To track the changes with git, run:
git add dvc.lock
-In unserem Fall hatte die Änderung der Parameter also keinen Einfluss auf das
-Ergebnis. Beachtet dabei jedoch, dass DVC Änderungen an Abhängigkeiten und
-Ausgaben über md5-Hashwerte erkennt, die in der ``dvc.lock``-Datei gespeichert
-sind.
+In our case, changing the parameters had no effect on the result. Please note,
+that DVC recognises changes to dependencies and outputs via md5 hash values in
+``dvc.lock``.
diff --git a/docs/productive/envs/devpi.rst b/docs/productive/envs/devpi.rst
index 70211885..ce9cc456 100644
--- a/docs/productive/envs/devpi.rst
+++ b/docs/productive/envs/devpi.rst
@@ -1,5 +1,5 @@
devpi
=====
-`devpi `_ ist ein PyPI-Server, der die Paketierung, das
-Testen und Veröffentlichen von Python-Paketen vereinfacht.
+`devpi `_ is a PyPI server that simplifies the packaging,
+testing and publishing of Python packages.
diff --git a/docs/productive/envs/glossary.rst b/docs/productive/envs/glossary.rst
index fbda034d..ba9fb559 100644
--- a/docs/productive/envs/glossary.rst
+++ b/docs/productive/envs/glossary.rst
@@ -1,27 +1,26 @@
-Glossar
-=======
+Glossary
+========
.. glossary::
- Built Distribution
- Eine Struktur aus Dateien und Metadaten, die bei der Installation nur an den
- richtigen Speicherort auf dem Zielsystem verschoben werden müssen.
- :term:`Wheel` ist ein solches Format, nicht jedoch *distutil’s*
- :term:`Source Distributions