[JAVA] Essayez d'exécuter ScalarDB sur WSL Ubuntu (Construction de l'environnement)

Qu'est-ce que ScalarDB

Une bibliothèque publiée par scalaire permet aux bases de données / stockage distribués non-ACID d'être compatibles ACID, et en utilisant des bases de données distribuées telles que Cassandra, une évolutivité linéaire et une haute disponibilité sont obtenues.

La principale caractéristique est que vous pouvez utiliser la ** fonction de transaction ACID forte et cohérente **.

Veuillez consulter la documentation ScalarDB pour plus de détails.

Configuration de ScalarDB

ScalarDB se compose principalement des trois couches suivantes.

  1. Couche gestionnaire qui gère les transactions sans maître
  2. Couche d'abstraction de stockage qui absorbe les différences entre les bases de données distribuées utilisées comme stockage de données
  3. Adaptateur spécifique au stockage (actuellement compatible avec Cassandra)

image.png Diagramme hiérarchique de ScalarDB

Le modèle de données de ScalarDB est un modèle de carte multidimensionnel basé sur le format KeyValue, et l'enregistrement est composé d'une clé de partition, d'une clé de clustering et d'un ensemble de valeurs.

image.png Diagramme d'image du modèle de données ScalarDB

Chaque valeur est mappée de manière unique par une clé primaire composée d'une clé de partition, d'une clé de clustering et du nom de la valeur.

À propos de Cassandra

Cassandra est un type de base de données NoSQL et possède les fonctionnalités suivantes.

· Haute évolutivité et disponibilité sans point de défaillance unique -Langage de requête de type SQL, prise en charge de la recherche par index secondaire · Schéma flexible

Cependant, il comporte également les restrictions suivantes:

· Ni les transactions ni JOIN ne sont pris en charge · Les clés externes ne sont pas prises en charge et les clés sont immuables · La clé doit être unique ・ La recherche est compliquée

Le modèle de données se compose des éléments suivants, qui distribuent les données au détriment d'une certaine cohérence des données.

  1. Keyspace Espace de noms de niveau supérieur

  2. Column Family(Table) Un conteneur de collecte de colonnes qui correspond à une table SGBDR

  3. Partition key Clé pour distribuer les données par nœud

  4. Values Données de colonne autres que Partiton Key et Clustering Key

Environnement

À partir de là, je vais exécuter ce ScalarDB localement sur Ubuntu 16.04 installé sur Windows 10.

Les composants requis sont: -Oracle JDK 8 (OpenJDK 8) ou supérieur ・ Cassandra 3.11.x (dernière version stable au moment de la rédaction) ・ Golang Ver.1.10 ou supérieur ・ Gradle Ver.4.10 ou supérieur

Installons-le immédiatement.

Oracle JDK 8(OpenJDK 8) (Référence: http://cassandra.apache.org/)

Dans l'état initial d'Ubuntu, il semble qu'il existe un environnement d'exécution java8 mais pas d'environnement de développement

Mettre à jour la liste des packages $ sudo apt update

Installation de l'environnement de développement java8 $ sudo apt install openjdk-8-jdk

Casssandra 3.11.x

  1. Ajoutez le référentiel Apache pour Cassandora (pour la 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. Ajouter la clé de référentiel Apache Cassandra $ curl https://www.apache.org/dist/cassandra/KEYS | sudo apt-key add -

  3. Mettez à jour le référentiel $ sudo apt-get update

  4. Installez Cassandra $ sudo apt-get install cassandra

  5. Démarrez Cassandra $ sudo service cassandra start

  6. Confirmation du démarrage de Cassandra $ cqlsh Cependant, le démarrage prend du temps, alors attendez un peu avant de l'exécuter. OK si ça devient comme suit image.png

Ajouter une clé publique  $ sudo apt-key adv --keyserver pool.sks-keyservers.net --recv-key A278B781FE4B2BDA

Mettre à jour à nouveau le référentiel  $ sudo apt-get update

golang

  1. Téléchargez l'archive golang $ curl -L https://dl.google.com/go/go1.10.5.linux-amd64.tar.gz > go1.10.5.linux-amd64.tar.gz

  2. Décompressez l'archive téléchargée $ sudo tar -C /usr/local -xzf go1.10.5.linux-amd64.tar.gz

  3. Définissez le chemin GO $ vi ~/.bashrc Ajoutez la ligne suivante au corps de .bashrc export PATH=$PATH:/usr/local/go/bin image.png

  4. Refléter le paramètre de chemin $ source ~/.bashrc

Gradle Vous devez installer SDK Man pour installer Gradle, mais vous devez respectivement installer zip et unzip pour installer SDK Man.

  1. Installation de zip et décompresser $ sudo apt install zip unzip

  2. Installez SDK Man $ curl -s "https://get.sdkman.io" | bash Cliquez ici pour plus de détails (https://sdkman.io/install)

  3. Paramètres initiaux de SDK Man $ source" / home / (votre nom d'utilisateur) /.sdkman/bin/sdkman-init.sh "

  4. Confirmez l'installation de SDK Man $ sdk version OK si un affichage comme sdkman 5.0.0 + 51 est affiché

  5. Installez Gradle $ sdk install gradle 4.10.2 Cliquez ici pour plus de détails (https://gradle.org/install/)

  6. Vérification de la version Gradle $ gradle --version OK si un affichage comme Gradle 4.10.2 est affiché

Paramètres ScalarDB

  1. Création d'un fichier de configuration (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. Création d'un répertoire de données pour 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

Changer le propriétaire du dossier / data / cassandra $ sudo chown -R cassandra:cassandra /data/cassandra

  1. Modifiez le fichier de configuration Cassandra

Faites une sauvegarde du fichier de configuration Cassandra puis éditez-le

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

commitlog_Modifier les paramètres du répertoire(Ligne 196)
Changer avant
# 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

Après le changement
# 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_Modifier les paramètres des répertoires(Ligne 191)
Changer avant
# 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

Après le changement
# 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_Modifier les paramètres du répertoire(Ligne 71)
Changer avant
# Directory where Cassandra should store hints.
# If not set, the default directory is $CASSANDRA_HOME/data/hints.
hints_directory: /var/lib/cassandra/hints

Après le changement
# Directory where Cassandra should store hints.
# If not set, the default directory is $CASSANDRA_HOME/data/hints.
hints_directory: /data/cassandra/hints 


saved_caches_Modifier les paramètres du répertoire(Ligne 368)
Changer avant
# saved caches
# If not set, the default directory is $CASSANDRA_HOME/data/saved_caches.
saved_caches_directory: /var/lib/cassandra/saved_caches

Après le changement
# saved caches
# If not set, the default directory is $CASSANDRA_HOME/data/saved_caches.
saved_caches_directory: /data/cassandra/saved_caches


Désactiver la définition du commentaire(379,380,385,Ligne 386)
Changer avant
# 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

Après le changement
# 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. Redémarrez Cassandra et confirmez la connexion

$ sudo service cassandra restart $ cqlsh Démarrage réussi si vous pouvez vous connecter à la console Cassandra

$ sudo service cassandra status Succès si «* Cassandra est en cours d'exécution» s'affiche

ScalarDB Schema Tool Cet outil est un outil qui génère et charge le schéma de la base de données pour ScalarDB. Il existe deux types, générateur et chargeur. Le générateur crée un fichier de définition de schéma et une définition de métadonnées spécifiques à l'implémentation du stockage (par exemple Casssandra), et le chargeur utilise le générateur pour obtenir le fichier de schéma et créer la définition de schéma dans le stockage. peut faire.

Cela élimine le besoin de prendre en compte des schémas spécifiques au stockage lors de la modélisation des données d'application.

  1. Téléchargez l'outil

Cloner le dépôt github de ScalarDB $ cd ~/ $ git clone https://github.com/scalar-labs/scalardb.git

  1. Configurez l'environnement ScalarDB avec gradle

Définir le chemin à l'aide de variables $ SCALARDB_HOME = / home / (nom d'utilisateur de son propre environnement) / scalarb $ cd $SCALARDB_HOME

Exécuter la construction $ sudo ./gradlew installDist OK si BUILD SUCCESSFUL s'affiche

  1. Faire avec du golang

Allez dans le répertoire Schema Tools et exécutez make $ cd tools/schema $ sudo make

  1. Créez un fichier d'exemple $ sudo vi emoney-storage.sdbql

emoney-storage.sdbql


REPLICATION FACTOR 1;
CREATE NAMESPACE emoney;
CREATE TABLE emoney.account (
  id TEXT PARTITIONKEY,
  balance INT,
);
  1. Test d’exécution

Essayez de démarrer le générateur. $ sudo ./generator emoney-storage.sdbql emoney-storage.cql

Assurez-vous que emoney-storage.cql a été créé.

Pour un exemple de création d'application

C'est la fin de la section de construction de l'environnement. Dans la section de création de l'exemple d'application, je voudrais créer un exemple d'application et vérifier le fonctionnement de l'application ScalarDB.

Essayez d'exécuter ScalarDB sur WSL Ubuntu (exemple de création d'application)

Recommended Posts

Essayez d'exécuter ScalarDB sur WSL Ubuntu (Construction de l'environnement)
Essayez d'exécuter ScalarDB sur WSL Ubuntu (exemple de création d'application)
Essayez de mettre Docker dans ubuntu sur WSL
[Flutter] Construction de l'environnement Ubuntu 20.04
Essayez DisplayLink sur Ubuntu 20.04
Construction de l'environnement Protobuf et gRPC C ++ sur Ubuntu 18.04
J'ai construit un environnement Ubuntu sur Windows 10 en utilisant WSL2.
Installez Java sur WSL Ubuntu 18.04
Construction de l'environnement Laravel (Ubuntu 18.04 LTS)
Mémo de construction de l'environnement Ruby on Rails 6.0
Créer un environnement XAMPP sur Ubuntu
Rails sur la procédure de construction de l'environnement Docker
Essayez d'exécuter Spring Boot sur Kubernetes
Installation d'Elmer / Ice (Ubuntu sur WSL)
Ruby on Rails - De la construction d'environnement au développement d'application simple sur WSL2
Installez Vivado dans l'environnement WSL2 + Ubuntu 20.04 LTS
Mémo de construction de l'environnement Spring Boot sur Mac
Mémo de construction de l'environnement de développement Java sur Mac
Utiliser docker dans un environnement proxy sur ubuntu 20.04.1
[Ruby] Création d'un environnement de développement Ruby sur Ubuntu
Utiliser cljstyle avec Spacemacs sur Ubuntu sur WSL2
Essayez Spring Boot 1 (Construction de l'environnement ~ Démarrage de Tomcat)
Muscle Ruby on Rails Jour 1 ~ Construction de l'environnement ~
Essayez de créer un environnement Java 8 sur Amazon Linux2
Essayez Azure Service Fabric (Java) sur un environnement Mac-Local
[Java] Créer un environnement de développement Java sur Ubuntu et vérifier l'exécution
Configurer un serveur SSH sur Ubuntu 20.04, qui est WSL2
[Note personnelle] Construction de l'environnement Ruby on Rails (Windows)
Docker sur Ubuntu18.04 sur WSL2 et instructions d'installation de VSCode
Comment créer un environnement Pytorch sur Ubuntu
[Java] Construction de l'environnement
[Printemps] Construction de l'environnement
Créer un environnement de bureau Ubuntu 20.04 LTS sur Raspberry Pi 4 (+ localisation japonaise)
Essayez d'exécuter une application créée avec Quarkus sur Heroku
Créer un environnement de développement Java sur l'installation Mac-JDK (version de préservation 2020)
Déployer sur Ruby on Rails Elastic beanstalk (Construction de l'environnement)
[Construction de l'environnement Mac] Ruby on Rails (+ Webpacker gère les erreurs)
Livre GOOS Openfire sur MacOS Mojave Environment Construction Memo
Créer un environnement de développement Java + Spring avec VirtualBox + Ubuntu (Xfce4)