[JAVA] Versuchen Sie, ScalarDB unter WSL Ubuntu (Environment Construction) auszuführen.

Was ist ScalarDB?

Eine von scalar veröffentlichte Bibliothek ermöglicht die ACID-Kompatibilität von nicht ACID-verteilten Datenbanken / Speichern. Durch die Verwendung verteilter Datenbanken wie Cassandra werden lineare Skalierbarkeit und hohe Verfügbarkeit erreicht.

Das größte Merkmal ist, dass Sie ** starke und konsistente ACID-Transaktionsfunktion ** verwenden können.

Weitere Informationen finden Sie unter ScalarDB-Dokumente.

ScalarDB-Konfiguration

ScalarDB besteht hauptsächlich aus den folgenden drei Schichten.

  1. Manager-Schicht, die masterlose Transaktionen verwaltet
  2. Speicherabstraktionsschicht, die die Unterschiede zwischen verteilten Datenbanken, die als Datenspeicher verwendet werden, aufnimmt
  3. Speicherspezifischer Adapter (derzeit kompatibel mit Cassandra)

image.png Hierarchisches Diagramm von ScalarDB

Das Datenmodell von ScalarDB ist ein mehrdimensionales Kartenmodell, das auf dem KeyValue-Format basiert. Der Datensatz besteht aus Partitionsschlüssel, Clustering-Schlüssel und einem Wertesatz.

image.png ScalarDB-Datenmodell-Bilddiagramm

Jeder Wert wird eindeutig durch einen Primärschlüssel zugeordnet, der aus einem Partitionsschlüssel, einem Clustering-Schlüssel und dem Namen des Werts besteht.

Über Cassandra

Cassandra ist eine Art NoSQL-Datenbank und verfügt über die folgenden Funktionen.

· Hohe Skalierbarkeit und Verfügbarkeit ohne einen einzigen Fehlerpunkt -SQL-ähnliche Abfragesprache, Suchunterstützung nach Sekundärindex · Flexibles Schema

Es gibt jedoch auch die folgenden Einschränkungen:

· Weder Transaktionen noch JOIN werden unterstützt · Externe Schlüssel werden nicht unterstützt und Schlüssel sind unveränderlich · Der Schlüssel muss eindeutig sein ・ Die Suche ist kompliziert

Das Datenmodell besteht aus den folgenden Elementen, die die Daten auf Kosten einer gewissen Datenkonsistenz verteilen.

  1. Keyspace Namespace der obersten Ebene

  2. Column Family(Table) Ein Spaltensammelcontainer, der einer RDBMS-Tabelle entspricht

  3. Partition key Schlüssel zum Verteilen von Daten nach Knoten

  4. Values Andere Spaltendaten als Partiton Key und Clustering Key

Umgebung

Von hier an werde ich diese ScalarDB lokal unter Ubuntu 16.04 ausführen, das unter Windows 10 installiert ist.

Die erforderlichen Komponenten sind: -Oracle JDK 8 (OpenJDK 8) oder höher ・ Cassandra 3.11.x (neueste stabile Version zum Zeitpunkt des Schreibens) ・ Golang Ver.1.10 oder höher ・ Gradle Ver.4.10 oder höher

Lassen Sie es uns sofort installieren.

Oracle JDK 8(OpenJDK 8) (Referenz: http://cassandra.apache.org/)

Im Ausgangszustand von Ubuntu scheint es eine Java8-Ausführungsumgebung, aber keine Entwicklungsumgebung zu geben

Paketliste aktualisieren $ sudo apt update

Installation der Java8-Entwicklungsumgebung $ sudo apt install openjdk-8-jdk

Casssandra 3.11.x

  1. Fügen Sie das Apache-Repository für Cassandora hinzu (für Version 3.11.) $ echo "deb http://www.apache.org/dist/cassandra/debian 311x main" | sudo tee -a /etc/apt/sources.list.d/cassandra.sources.list

  2. Fügen Sie den Apache Cassandra-Repository-Schlüssel hinzu $ curl https://www.apache.org/dist/cassandra/KEYS | sudo apt-key add -

  3. Aktualisieren Sie das Repository $ sudo apt-get update

  4. Installieren Sie Cassandra $ sudo apt-get install cassandra

  5. Starten Sie Cassandra $ sudo service cassandra start

  6. Bestätigung des Starts von Cassandra $ cqlsh Der Start dauert jedoch einige Zeit. Warten Sie daher eine Weile, bevor Sie ihn ausführen. OK, wenn es wie folgt wird image.png

Öffentlichen Schlüssel hinzufügen  $ sudo apt-key adv --keyserver pool.sks-keyservers.net --recv-key A278B781FE4B2BDA

Aktualisieren Sie das Repository erneut  $ sudo apt-get update

golang

  1. Laden Sie das Golang-Archiv herunter $ curl -L https://dl.google.com/go/go1.10.5.linux-amd64.tar.gz > go1.10.5.linux-amd64.tar.gz

  2. Entpacken Sie das heruntergeladene Archiv $ sudo tar -C /usr/local -xzf go1.10.5.linux-amd64.tar.gz

  3. Stellen Sie den GO-Pfad ein $ vi ~/.bashrc Fügen Sie dem Hauptteil von .bashrc die folgende Zeile hinzu export PATH=$PATH:/usr/local/go/bin image.png

  4. Reflektieren Sie die Pfadeinstellung $ source ~/.bashrc

Gradle Sie müssen SDK Man installieren, um Gradle zu installieren, aber Sie müssen zip bzw. unzip installieren, um SDK Man zu installieren.

  1. Installation von zip und unzip $ sudo apt install zip unzip

  2. Installieren Sie SDK Man $ curl -s "https://get.sdkman.io" | bash Klicken Sie hier für Details (https://sdkman.io/install)

  3. SDK Man-Grundeinstellungen $ source "/ home / (Ihr Benutzername) /.sdkman/bin/sdkman-init.sh" `

  4. Bestätigen Sie die Installation von SDK Man $ sdk version OK, wenn eine Anzeige wie sdkman 5.0.0 + 51 angezeigt wird

  5. Installieren Sie Gradle $ sdk install gradle 4.10.2 Klicken Sie hier für Details (https://gradle.org/install/)

  6. Gradle-Versionsprüfung $ gradle --version OK, wenn eine Anzeige wie "Gradle 4.10.2" angezeigt wird

ScalarDB-Einstellungen

  1. Erstellen einer Konfigurationsdatei (database.properties)

$ sudo mkdir /etc/scalar/ $ sudo vi /etc/scalar/database.properties

database.properties


# Comma separated contact points 
scalar.database.contact_points=localhost
# Port number for all the contact points. Default port number for each database is used if empty. 
# scalar.database.contact_port= 
# Credential information to access the database 
scalar.database.username=cassandra 
scalar.database.password=cassandra 
  1. Erstellen eines Datenverzeichnisses für Casssandra

$ sudo mkdir -p /data/cassandra/data $ sudo mkdir -p /data/cassandra/commitlog $ sudo mkdir -p /data/cassandra/hints $ sudo mkdir -p /data/cassandra/saved_caches

Ändern Sie den Besitzer des Ordners / data / cassandra $ sudo chown -R cassandra:cassandra /data/cassandra

  1. Bearbeiten Sie die Cassandra-Konfigurationsdatei

Erstellen Sie eine Sicherungskopie der Cassandra-Konfigurationsdatei und bearbeiten Sie sie anschließend

$ sudo cp /etc/cassandra/cassandra.yaml /etc/cassandra/cassandra.yaml.copy $ sudo vi /etc/cassandra/cassandra.yaml

commitlog_Verzeichniseinstellungen ändern(Zeile 196)
Vorher ändern
# commit log.  when running on magnetic HDD, this should be a
# separate spindle than the data directories.
# If not set, the default directory is $CASSANDRA_HOME/data/commitlog.
commitlog_directory: /var/lib/cassandra/commitlog

Nach der veränderung
# commit log.  when running on magnetic HDD, this should be a
# separate spindle than the data directories.
# If not set, the default directory is $CASSANDRA_HOME/data/commitlog.
commitlog_directory: /data/cassandra/commitlog


data_file_Verzeichniseinstellungen ändern(Zeile 191)
Vorher ändern
# Directories where Cassandra should store data on disk.  Cassandra
# will spread data evenly across them, subject to the granularity of
# the configured compaction strategy.
# If not set, the default directory is $CASSANDRA_HOME/data/data.
data_file_directories: /var/lib/cassandra/data

Nach der veränderung
# Directories where Cassandra should store data on disk.  Cassandra
# will spread data evenly across them, subject to the granularity of
# the configured compaction strategy.
# If not set, the default directory is $CASSANDRA_HOME/data/data.
data_file_directories: /data/cassandra/data


hints_Verzeichniseinstellungen ändern(Zeile 71)
Vorher ändern
# Directory where Cassandra should store hints.
# If not set, the default directory is $CASSANDRA_HOME/data/hints.
hints_directory: /var/lib/cassandra/hints

Nach der veränderung
# Directory where Cassandra should store hints.
# If not set, the default directory is $CASSANDRA_HOME/data/hints.
hints_directory: /data/cassandra/hints 


saved_caches_Verzeichniseinstellungen ändern(Zeile 368)
Vorher ändern
# saved caches
# If not set, the default directory is $CASSANDRA_HOME/data/saved_caches.
saved_caches_directory: /var/lib/cassandra/saved_caches

Nach der veränderung
# saved caches
# If not set, the default directory is $CASSANDRA_HOME/data/saved_caches.
saved_caches_directory: /data/cassandra/saved_caches


Schalten Sie den Einstellungskommentar aus(379,380,385,Zeile 386)
Vorher ändern
# commitlog_sync_batch_window_in_ms milliseconds between fsyncs.
# This window should be kept short because the writer threads will
# be unable to do extra work while waiting.  (You may need to increase
# concurrent_writes for the same reason.)
#
# commitlog_sync: batch
# commitlog_sync_batch_window_in_ms: 2
#
# the other option is "periodic" where writes may be acked immediately
# and the CommitLog is simply synced every commitlog_sync_period_in_ms
# milliseconds.
commitlog_sync: periodic
commitlog_sync_period_in_ms: 10000

Nach der veränderung
# commitlog_sync_batch_window_in_ms milliseconds between fsyncs.
# This window should be kept short because the writer threads will
# be unable to do extra work while waiting.  (You may need to increase
# concurrent_writes for the same reason.)
#
commitlog_sync: batch
commitlog_sync_batch_window_in_ms: 2
#
# the other option is "periodic" where writes may be acked immediately
# and the CommitLog is simply synced every commitlog_sync_period_in_ms
# milliseconds.
# commitlog_sync: periodic
# commitlog_sync_period_in_ms: 10000

  1. Starten Sie Cassandra neu und bestätigen Sie die Anmeldung

$ sudo service cassandra restart $ cqlsh Erfolgreicher Start, wenn Sie sich bei Cassandra Console anmelden können

$ sudo service cassandra status Erfolg, wenn "* Cassandra läuft" angezeigt wird

ScalarDB Schema Tool Dieses Tool generiert und lädt das Schema der Datenbank für ScalarDB. Es gibt zwei Typen: Generator und Loader. Der Generator erstellt eine Schemadefinitionsdatei und eine Metadatendefinition, die für die Speicherimplementierung spezifisch sind (z. B. Casssandra), und der Loader verwendet den Generator, um die Schemadatei abzurufen und die Schemadefinition im Speicher zu erstellen. tun können.

Dadurch entfällt die Notwendigkeit, speicherspezifische Schemata bei der Modellierung von Anwendungsdaten zu berücksichtigen.

  1. Laden Sie das Tool herunter

Klonen Sie das Github-Repository von ScalarDB $ cd ~/ $ git clone https://github.com/scalar-labs/scalardb.git

  1. Richten Sie die ScalarDB-Umgebung mit gradle ein

Legen Sie den Pfad mithilfe von Variablen fest $ SCALARDB_HOME = / home / (Benutzername der eigenen Umgebung) / scalarb $ cd $SCALARDB_HOME`

Führen Sie build aus $ sudo ./gradlew installDist OK, wenn BUILD SUCCESSFUL angezeigt wird

  1. Mit Golang machen

Wechseln Sie in das Verzeichnis Schema Tools und führen Sie make aus $ cd tools/schema $ sudo make

  1. Erstellen Sie eine Beispieldatei $ sudo vi emoney-storage.sdbql

emoney-storage.sdbql


REPLICATION FACTOR 1;
CREATE NAMESPACE emoney;
CREATE TABLE emoney.account (
  id TEXT PARTITIONKEY,
  balance INT,
);
  1. Ausführungstest

Starten Sie den Generator. $ sudo ./generator emoney-storage.sdbql emoney-storage.cql

Stellen Sie sicher, dass emoney-storage.cql erstellt wurde.

Beispiel für die Anwendungserstellung

Dies ist das Ende des Abschnitts zum Umgebungsbau. Im Abschnitt zum Erstellen von Beispielanwendungen möchte ich tatsächlich eine Beispielanwendung erstellen und den Betrieb der ScalarDB-Anwendung überprüfen.

Versuchen Sie, ScalarDB unter WSL Ubuntu auszuführen (Beispielanwendung erstellen)

Recommended Posts

Versuchen Sie, ScalarDB unter WSL Ubuntu (Environment Construction) auszuführen.
Versuchen Sie, ScalarDB unter WSL Ubuntu auszuführen (Beispiel-App-Erstellung)
Versuchen Sie, Docker in Ubuntu auf WSL zu setzen
[Flattern] Ubuntu 20.04 Umgebungskonstruktion
Probieren Sie DisplayLink unter Ubuntu 20.04 aus
Protobuf- und gRPC C ++ - Umgebungskonstruktion unter Ubuntu 18.04
Ich habe eine Ubuntu-Umgebung unter Windows 10 mit WSL2 erstellt.
Installieren Sie Java unter WSL Ubuntu 18.04
Aufbau einer Laravel-Umgebung (Ubuntu 18.04 LTS)
Ruby on Rails 6.0-Umgebungskonstruktionsnotiz
Erstellen Sie eine XAMPP-Umgebung unter Ubuntu
Konstruktionsverfahren für Rails on Docker-Umgebungen
Versuchen Sie, Spring Boot auf Kubernetes auszuführen
Elmer / Ice Installation (Ubuntu auf WSL)
Ruby on Rails - Von der Umgebungskonstruktion bis zur einfachen Anwendungsentwicklung auf WSL2
Installieren Sie Vivado in der WSL2 + Ubuntu 20.04 LTS-Umgebung
Spring Boot Umgebungskonstruktionsnotiz auf Mac
Konstruktionsnotiz für die Java-Entwicklungsumgebung auf dem Mac
Verwenden Sie Docker in einer Proxy-Umgebung unter Ubuntu 20.04.1
[Ruby] Erstellen einer Ruby-Entwicklungsumgebung unter Ubuntu
Verwenden Sie cljstyle mit Spacemacs unter Ubuntu unter WSL2
Versuchen Sie Spring Boot 1 (Umgebungskonstruktion ~ Tomcat-Start)
Muskel Rubin auf Schienen Tag 1 ~ Umweltbau ~
Versuchen Sie, eine Java 8-Umgebung unter Amazon Linux2 zu erstellen
Probieren Sie Azure Service Fabric (Java) in einer Mac-Local-Umgebung aus
[Java] Erstellen Sie eine Java-Entwicklungsumgebung unter Ubuntu und überprüfen Sie die Ausführung
Richten Sie unter Ubuntu 20.04 einen SSH-Server ein, nämlich WSL2
[Persönliches Memo] Ruby on Rails-Umgebungskonstruktion (Windows)
Installationsanweisungen für Docker unter Ubuntu18.04 unter WSL2 und VSCode
So erstellen Sie eine Pytorch-Umgebung unter Ubuntu
[Java] Umgebungskonstruktion
[Frühling] Umweltbau
Erstellen Sie eine Ubuntu 20.04 LTS-Desktopumgebung auf Raspberry Pi 4 (+ japanische Lokalisierung)
Versuchen Sie, eine mit Quarkus erstellte App auf Heroku auszuführen
Erstellen Sie eine Java-Entwicklungsumgebung auf Mac-JDK Install (2020-Aufbewahrungsversion).
Bereitstellen auf Ruby on Rails Elastische Bohnenstange (Umgebungskonstruktion)
[Umgebungskonstruktion Mac] Ruby on Rails (+ Webpacker behandelt Fehler)
GOOS Buch Openfire On MacOS Mojave Umgebungsbau Memo
Erstellen Sie eine Java + Spring-Entwicklungsumgebung mit VirtualBox + Ubuntu (Xfce4).