Μετάβαση στο περιεχόμενο

Merql

Καθαρή συγχώνευση βάσεων δεδομένων τριών κατευθύνσεων σε PHP με επίλυση διενέξεων σε επίπεδο στηλών. Σημασιολογία συγχώνευσης τύπου Git για πίνακες MySQL και SQLite.

Τερματικό
composer require merql/merql

Τελευταία έκδοση v0.4.1 MIT PHP 8.2+

Στην πράξη

Μια συγχώνευση διαβάζει τρία αποθηκευμένα στιγμιότυπα και επιστρέφει τις πράξεις προς εγγραφή και τις διενέξεις προς επίλυση.

Συγχώνευση τριών στιγμιότυπων

Δημιουργήστε το στιγμιότυπο βάσης πριν αποκλίνουν τα δύο αντίγραφα και, στη συνέχεια, δημιουργήστε στιγμιότυπο για κάθε πλευρά, για παράδειγμα για μια ενεργή βάση δεδομένων και ένα δοκιμαστικό αντίγραφο. Το ThreeWayMerge συγκρίνει και τις δύο πλευρές με τη βάση και συγχωνεύει τα δύο σύνολα αλλαγών.

Στην καρτέλα αποτελέσματος, η δική μας πλευρά επεξεργάστηκε το content και η άλλη πλευρά επεξεργάστηκε το title και το status της ίδιας γραμμής, οπότε η συγχώνευση διατηρεί και τις τρεις αλλαγές χωρίς διένεξη.

PHP
use Merql\Merge\ThreeWayMerge;

$merge = new ThreeWayMerge();
$result = $merge->merge($base, $ours, $theirs);

echo $result->operationCount(); // resolved operations
echo $result->conflictCount();  // unresolved conflicts

Συγχώνευση τριών κατευθύνσεων

Βάση, δική μας πλευρά, άλλη πλευρά. Συγχώνευση τριών κατευθύνσεων τύπου git σε γραμμές και στήλες με κλειδιά αντί για γραμμές κειμένου. Εντοπίζει εισαγωγές, ενημερώσεις και διαγραφές μεταξύ δύο κλάδων.

Επίλυση σε επίπεδο στηλών

Όταν και οι δύο πλευρές αλλάζουν την ίδια γραμμή, το merql συγκρίνει τις στήλες μία προς μία. Αναφέρει διένεξη μόνο όταν η ίδια στήλη αλλάζει σε διαφορετικές τιμές.

Προαιρετική συγχώνευση κελιών

Περάστε ένα CellMergeConfig στο ThreeWayMerge και οι στήλες TEXT συγχωνεύονται γραμμή προς γραμμή με το Myers diff, οι στήλες JSON κλειδί προς κλειδί. Η πρόσοψη Merql και το CLI δεν την ενεργοποιούν.

Πολλαπλές βάσεις δεδομένων

Προσαρμόσιμοι προσαρμογείς σύνδεσης και οδηγοί διαλέκτων, με ενσωματωμένα τα MySQL και SQLite.

Εντοπισμός διενέξεων

Ενημέρωση έναντι ενημέρωσης, ενημέρωση έναντι διαγραφής, διαγραφή έναντι ενημέρωσης και εισαγωγή έναντι εισαγωγής· κάθε περίπτωση αναφέρεται μαζί με τον πίνακα και τη γραμμή. Οι διενέξεις ενημέρωσης έναντι ενημέρωσης αναφέρουν επίσης τη στήλη.

SQL δημιουργία

Παραμετροποιημένες εντολές INSERT, UPDATE, DELETE με σειρά που λαμβάνει υπόψη τα ξένα κλειδιά. Προεπισκόπηση χωρίς εκτέλεση ή εφαρμογή σε συναλλαγή.

CLI

Δημιουργήστε στιγμιότυπα, διαφορές και συγχωνεύσεις από τη γραμμή εντολών. Υποστηρίζει τα MySQL και SQLite μέσω μεταβλητών περιβάλλοντος.

Δοκιμασμένο

32 σενάρια παλινδρόμησης με χειρόγραφες προσδοκώμενες τιμές (composer test:oracle). Το CI εκτελεί δοκιμές μονάδας και ενσωμάτωσης 231 και επίπεδο 10 του PHPStan.

Γιατί Merql

Τα στιγμιότυπα είναι αρχεία

Κάθε στιγμιότυπο είναι ένα αρχείο JSON που μπορείτε να αντιγράψετε μεταξύ μηχανημάτων ή να καταχωρίσετε στον έλεγχο εκδόσεων. Η σύγκριση και η συγχώνευση διαβάζουν αυτά τα αρχεία, οπότε εκτελούνται χωρίς σύνδεση με βάση δεδομένων.

Ελέγξτε πριν από την εγγραφή

Ένα σχέδιο συγχώνευσης δίνει σε κάθε πράξη και ομάδα αλλαγών ένα σταθερό αναγνωριστικό και διατηρεί τις γραμμές βάσης, της δικής μας πλευράς, της άλλης πλευράς και του αποτελέσματος. Επιλέξτε τις ομάδες που θέλετε και εφαρμόστε μόνο αυτές.

Τα παρωχημένα σχέδια διακόπτονται

Η ελεγχόμενη εφαρμογή γράφει μόνο σε γραμμές που εξακολουθούν να συμφωνούν με το στιγμιότυπο που ελέγξατε. Αν μια εντολή επηρεάσει μηδέν γραμμές, η συναλλαγή επαναφέρεται και το αποτέλεσμα περιλαμβάνει το σφάλμα.

Επαναφορά με έλεγχο αποκλίσεων

Δημιουργήστε ένα σχέδιο επαναφοράς από τις ενεργές γραμμές ακριβώς πριν από την εγγραφή και αποθηκεύστε το ως JSON. Πριν από την αναίρεση, ο έλεγχος αποκλίσεων συγκρίνει τα αποτυπώματα γραμμών και επιστρέφει τις πράξεις των οποίων οι γραμμές έχουν αλλάξει έκτοτε.

Σε σύγκριση με

Το Merql συγχωνεύει δεδομένα γραμμών από τρία στιγμιότυπα. Αυτά τα εργαλεία διαχειρίζονται εκδόσεις, συγχρονίζουν ή μεταφέρουν βάσεις δεδομένων· πρόκειται για συναφείς εργασίες.

Το Merql σε σύγκριση με άλλα εργαλεία
Dolt Κατάλληλο γιαΤο Dolt είναι βάση δεδομένων SQL που μπορείτε να διακλαδώσετε, να κλωνοποιήσετε, να δημιουργήσετε κλάδους, να συγχωνεύσετε, να στείλετε και να λάβετε αλλαγές όπως σε ένα αποθετήριο Git. Συνδέεστε σε αυτήν όπως σε οποιαδήποτε βάση δεδομένων MySQL και παρακολουθεί την προέλευση κάθε κελιού. Διαφορά με το MerqlΤο Merql διατηρεί τη βάση δεδομένων MySQL ή SQLite που ήδη χρησιμοποιείτε. Αποθηκεύει τους πίνακες ως αρχεία στιγμιότυπων JSON και συγχωνεύει τρία από αυτά, με τη βάση να επιλέγεται από εσάς.
pt-table-sync Κατάλληλο γιαΤο pt-table-sync εντοπίζει και διορθώνει διαφορές μεταξύ πινάκων MySQL, προς μία κατεύθυνση ή αμφίδρομα μεταξύ διακομιστών. Όταν συγχρονίζει ένα αντίγραφο, εφαρμόζει τις αλλαγές στην πηγή αναπαραγωγής. Διαφορά με το MerqlΣε αμφίδρομο συγχρονισμό, το pt-table-sync επιλέγει τη γραμμή που επικρατεί με βάση μια στήλη διενέξεων και αντιγράφει τις τιμές της. Το Merql συγκρίνει και τις δύο πλευρές με μια κοινή βάση, συγχωνεύει αλλαγές σε διαφορετικές στήλες της ίδιας γραμμής και αναφέρει τις ασύμβατες αλλαγές ως διενέξεις προς επίλυση.
sqldiff Κατάλληλο γιαΤο sqldiff συγκρίνει δύο βάσεις δεδομένων SQLite και εκτυπώνει ένα σενάριο SQL που μετατρέπει την πρώτη στη δεύτερη. Μπορεί επίσης να γράψει ένα δυαδικό σύνολο αλλαγών για την επέκταση συνεδριών SQLite ή να συνοψίσει τις αλλαγμένες γραμμές ανά πίνακα. Διαφορά με το MerqlΜια σύγκριση δύο κατευθύνσεων δεν μπορεί να διακρίνει αν η μία πλευρά πρόσθεσε μια γραμμή ή αν η άλλη τη διέγραψε. Το Merql προσθέτει ένα στιγμιότυπο βάσης για να απαντήσει σε αυτό, συγχωνεύει δύο σύνολα αλλαγών και λειτουργεί επίσης με το MySQL.
Doctrine Migrations Κατάλληλο γιαΤο Doctrine Migrations διαχειρίζεται τις εκδόσεις του σχήματος της βάσης δεδομένων σας, ώστε οι αλλαγές σχήματος να μπορούν να ελεγχθούν και να δοκιμαστούν πριν αναπτυχθούν σε περιβάλλον παραγωγής. Διαφορά με το MerqlΤο Merql δεν είναι εργαλείο μετάβασης σχήματος. Συγχωνεύει δεδομένα γραμμών και αναφέρει τις στήλες που προστέθηκαν ή αφαιρέθηκαν μεταξύ στιγμιότυπων, αφήνοντας σε εσάς τη διαχείριση της αλλαγής σχήματος.

Ερωτήσεις και απαντήσεις

Σύντομες απαντήσεις από την τεκμηρίωση του Merql.

Ακολουθήστε τον οδηγό από το πρώτο στιγμιότυπο έως τα σχέδια συγχώνευσης, την εφαρμογή με ελέγχους και την επαναφορά.