Indépendamment du ** nouveau développement ** / ** du développement de la maintenance **, il est très important de comprendre la structure des données pendant le développement du système. ** ER Diagram (E-R Diagram) ** est utile pour comprendre la structure des données.
C'est un ** diagramme ER ** très utile, mais comme pour tous les documents, ** une divergence par rapport à l'entité (programme) ** se produit.
Afin d'éviter la ** «dissociation» **, nous essayons de prendre la synchronisation régulièrement, mais tous les membres ne contestent pas toujours le développement avec une conscience claire. La documentation sera dévastée.
Non seulement ** les documents et programmes **, mais aussi ** les documents et bases de données ** sont divergents.
** La définition de la base de données (table, index, vue) ** qui s'exécute déjà en tant que service ** et le ** document ** sont divergents.
La manière traditionnelle de gérer l'écart entre les ** documents ** et les ** programmes ** consiste à réveiller les documents de ce qui est en service (** inversé **). ** Programme ** → ** Document ** et le contenu est reflété.
De la même manière, ce serait formidable si le contenu pouvait être reflété comme ** base de données ** → ** document **.
J'aime la ligne de commande.
J'aimerais terminer mon travail sans utiliser de souris si possible.
Contrairement à mes sentiments, les documents visuels tels que les diagrammes ER forcent le fonctionnement de la souris.
Si vous développez avec plusieurs personnes, un outil prenant en charge ** multi-plateforme ** est préférable. ** S'il s'agit d'un outil qui ne peut être exécuté que sous Windows, la charge sera concentrée sur certains membres. ** **
J'ai demandé trois points pour l'outil de génération de diagramme ER.
Après avoir cherché pendant un moment, j'ai trouvé un outil appelé ** SchemaSpy **. L'utilisation est brièvement résumée ci-dessous.
** SchemaSpy ** est fait de Java, donc ** JRE ** est requis.
Nous utilisons ** JDBC-Wikipedia ** pour nous connecter à la base de données et nous connecter à toute base de données pour laquelle le pilote JDBC est fourni. Est possible.
Type | Description |
---|---|
db2 | IBM DB2 with 'app' Driver |
db2net | IBM DB2 with 'net' Driver |
udbt4 | DB2 UDB Type 4 Driver |
db2zos | DB2 for z/OS |
derby | Derby (JavaDB) Embedded Server |
derbynet | Derby (JavaDB) Network Server |
firebird | Firebird |
hsqldb | HSQLDB Server |
informix | Informix |
maxdb | MaxDB |
mssql | Microsoft SQL Server |
mssql05 | Microsoft SQL Server 2005 |
mssql-jtds | Microsoft SQL Server with jTDS Driver |
mssql05-jtds | Microsoft SQL Server 2005 with jTDS Driver |
mysql | MySQL |
ora | Oracle with OCI8 Driver |
orathin | Oracle with Thin Driver |
pgsql | PostgreSQL |
sqlite | SQLite |
sybase | Sybase Server with JDBC3 Driver |
sybase2 | Sybase Server with JDBC2 Driver |
teradata | Teradata (requires -connprops) |
Préparez un environnement virtuel pour la vérification. Démarrez ** Vagrant **.
$ echo '''\
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "centos7.1"
config.ssh.insert_key = false
config.vm.network "private_network", ip: "192.168.33.41"
config.vm.provider "virtualbox" do |vb|
vb.customize ["modifyvm", :id, "--memory", "1024"]
end
end
''' > Vagrantfile
$ vagrant up
Après le démarrage, connectez-vous à l'environnement virtuel.
$ vagrant ssh
Installez l'application requise.
#Installez JDK et Graphviz
$ sudo yum install -y \
'graphviz*' \
java-1.8.0-openjdk-devel \
;
# /usr/local/Placez deux fichiers Jar dans src.
$ sudo mkdir -p /usr/local/src
$ cd /usr/local/src/
# 1.Corps SchemaSpy
$ sudo wget http://jaist.dl.sourceforge.net/project/schemaspy/schemaspy/SchemaSpy%205.0.0/schemaSpy_5.0.0.jar
# 2.Pilote JDBC pour se connecter à PostgreSQL
$ sudo wget https://jdbc.postgresql.org/download/postgresql-9.4.1212.jar
Comme il existe de nombreux arguments lors de l'exécution de la ligne de commande, créez un script de démarrage avec le nom ** schemaspy ** et encapsulez les arguments fixes à chaque fois.
Cette fois, j'ai accédé à la base de données locale ** "ebis" ** et l'ai configurée pour générer un diagramme ER.
schemaspy
#!/usr/bin/env bash
#Le répertoire dans lequel le fichier JAR a été placé précédemment
JDBC_DRIVER_DIR=/usr/local/src
JDBC_DRIVER_PATH=${JDBC_DRIVER_PATH:-$(echo ${JDBC_DRIVER_DIR}/*.jar| sed "s/ /:/g")}
#ici"PostgreSQL"Spécialisé dans
DATABASE_TYPE=${DATABASE_TYPE:-pgsql}
#Hôte de base de données cible de la connexion
DB_HOST=${DB_HOST:-localhost}
#Nom de la base de données cible de la connexion
DB_NAME=${DB_NAME:-ebis}
#Utilisateur de base de données cible de la connexion
DB_USER=${DB_USER:-postgres}
#Mot de passe de la base de données cible de la connexion
DB_PASS=${DB_PASS:-}
[ ! -d "./${DB_NAME}" ] && mkdir -p "./${DB_NAME}"
# -hq :Mode haute qualité. Le résultat de sortie sera magnifique!
# -noimplied :Désactivez la fonction qui "devine la relation entre les tables existantes qui n'ont pas de clé externe et la reflète dans le diagramme ER"
java \
-jar "/usr/local/src/schemaSpy_5.0.0.jar" \
-hq \
-noimplied \
-o "./${DB_NAME}" \
-charset utf-8 \
-dp "${JDBC_DRIVER_PATH}" \
-t "${DATABASE_TYPE}" \
-host "${DB_HOST}" \
-s "public" \
-db "${DB_NAME}" \
-u "${DB_USER}" \
-p "${DB_PASS}" \
;
#Accorder l'autorisation d'exécution
$ chmod u+x schemaspy
Lancez le script.
$ ./schemaspy
Vous pouvez voir qu'un répertoire appelé ** "ebis" ** a été créé et que les informations de définition de base de données et les diagrammes ER ont été générés.
(Ebis est le nom de la base de données du système appelé Ad Ebis dans lequel j'étais impliqué auparavant, mais malheureusement, je ne peux pas afficher les informations de la base de données d'Ad Ebis ici.)
EC-CUBE / ec-cube J'ai essayé de générer un diagramme ER en me connectant à la base de données immédiatement après l'installation.
J'en ai fait un script shell. S'il s'agit d'un environnement Redhad, il installera automatiquement celui qui n'est pas installé à l'avance, puis l'exécutera.
GitHub - genzouw/schemaspy-cli: schemaspy commandline interface
Très utile pour avoir une vue d'ensemble du système. ** SchemaSpy ** Si vous connaissez un meilleur outil, faites-le moi savoir.
c'est tout
Recommended Posts