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.
ScalarDB se compose principalement des trois couches suivantes.
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.
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.
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.
Keyspace Espace de noms de niveau supérieur
Column Family(Table) Un conteneur de collecte de colonnes qui correspond à une table SGBDR
Partition key Clé pour distribuer les données par nœud
Values Données de colonne autres que Partiton Key et Clustering Key
À 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
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
Ajouter la clé de référentiel Apache Cassandra
$ curl https://www.apache.org/dist/cassandra/KEYS | sudo apt-key add -
Mettez à jour le référentiel
$ sudo apt-get update
Installez Cassandra
$ sudo apt-get install cassandra
Démarrez Cassandra
$ sudo service cassandra start
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
GPG error: http://www.apache.org 311x InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY A278B781FE4B2BDA
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
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
Décompressez l'archive téléchargée
$ sudo tar -C /usr/local -xzf go1.10.5.linux-amd64.tar.gz
Définissez le chemin GO
$ vi ~/.bashrc
Ajoutez la ligne suivante au corps de .bashrc
export PATH=$PATH:/usr/local/go/bin
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.
Installation de zip et décompresser
$ sudo apt install zip unzip
Installez SDK Man
$ curl -s "https://get.sdkman.io" | bash
Cliquez ici pour plus de détails (https://sdkman.io/install)
Paramètres initiaux de SDK Man
$ source" / home / (votre nom d'utilisateur) /.sdkman/bin/sdkman-init.sh "
Confirmez l'installation de SDK Man
$ sdk version
OK si un affichage comme sdkman 5.0.0 + 51
est affiché
Installez Gradle
$ sdk install gradle 4.10.2
Cliquez ici pour plus de détails (https://gradle.org/install/)
Vérification de la version Gradle
$ gradle --version
OK si un affichage comme Gradle 4.10.2
est affiché
$ 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
localhost
. Lorsque vous connectez plusieurs appareils, séparez-les par des virgules.$ 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
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
$ 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.
Cloner le dépôt github de ScalarDB
$ cd ~/
$ git clone https://github.com/scalar-labs/scalardb.git
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
Allez dans le répertoire Schema Tools et exécutez make
$ cd tools/schema
$ sudo make
$ sudo vi emoney-storage.sdbql
emoney-storage.sdbql
REPLICATION FACTOR 1;
CREATE NAMESPACE emoney;
CREATE TABLE emoney.account (
id TEXT PARTITIONKEY,
balance INT,
);
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éé.
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