Php et SQL server, possible?

Statut
N'est pas ouverte pour d'autres réponses.

k o D

Elite
Bonjour!

Voilà pour mon mini stage de 2 jours, je dois rédiger un rapport sur la possibilité d'utilisation dans l'entreprise dans laquelle je suis de VTiger.

Au niveau fonctionnalité, tout est compris et suffisant même bien plus complet que ce que me demande l'entreprise.
Néanmoins il me reste un (gros) problème à résoudre.

Actuellement, ils travaillent avec une DB distribuée (création de fichiers sur les pc etc..) ce qui leur permet de travailler hors du réseau de l'entreprise, en fait totalement en off-line.
Malheureusement cet aspect "off-line" n'est pas possible au 1er abord via VTiger vu qu'il utilise une DB centrale (ce qui nécessite donc d'être "online").

La piste de résolution à laquelle je réfléchis est celle d'utiliser SQL Server de Microsoft qui permettrais lui de faire un système de synchronisation entre la DB "locale" et la DB "générale".
Néanmoins je ne sais absolument pas si PHP par exemple permet de se connecter à SQL server... et je vous avoues que je ne m'y connais que très peu à ce niveau...
Evidemment celà impliquerait des modifications dans les sources de VTiger au niveau de la connexion à la base mais pour le reste? Y a-t'il par exemple des commandes SQL impossible à gérer?

Alors si quelqu'un a une autre idée pour permettre cet aspect offline et de synchronisation n'hésitez pas à me la soumettre... Je vous avoue que je suis un peu perdu à ce niveau-ci.

Merci d'avance!
 
1er
OP
k o D

k o D

Elite
Merci Jereck.

Sinon j'ai pensé à une solution plus simple parce que bon... allez dans le code de VTiger pour modifier à chaque fois toutes les transactions avec MySQL çà risque d'être lourd...

MySQL comme Sybase et comme SQL server tiennent à jour des logs sur les données modifiées (insertion, modification et suppression), les UNDO et REDO si je me rappelle bien...
Serait-il envisageable de faire une synchronisation à partir de ces journaux entre 2 databases MySQL?

J'explique exactement ce que je désirerai faire:

Vous avez le serveur central qui contient la Database centrale et le "site" VTiger.
Plusieurs personnes dans la société possède exactement la même installation sur leur propre portable si ce n'est qu'il y a un programme de synchronisation fonctionnant comme expliqué plus haut qui existe.

Ainsi ce programme ferait la synchro entre la DB centrale et la DB locale...
Celà doit aller dans les 2 sens (et je pense que c'est là que çà peut créer des conflits) c'est à dire que l'employé peut faire des modifications comme par exemple rajouter un nouveau devis dans sa DB locale. Ce devis devra alors se retrouver aussi dans la DB centrale une fois resynchronisation !

Seulement voilà est-ce envisageable justement?
Imaginons la situation suivante:

Mr X possède sa DB locale et Mr Y également.
Ces messieurs partent chez un client et rajoutes chacun un devis dans leur propre DB qui possède l'identifiant 100. Une fois de retour, mr X synchronise et son devis est ajouté. Aucun soucis particulier n'est à prévoir car la clé primaire 100 pour les devis n'est pas encore utilisée. Maintenant mr Y revient et veut se synchro... comment va réagir la database centrale vu qu'il existe déjà une clé primaire 100?

Sinon je suppose que si le système ne synchronise que dans le sens DB centrale => DB locale il ne doit pas y avoir de soucis...

Merci d'avance pour votre réponse !
 

noLain

www.wearewise.be
Il suffit de ne pas reprendre l'identifiant lors de la copie de l'enregistrement, le sgbd generera alors un identifiant propre et unique, si le champ est mis en auto_increment.
 
1er
OP
k o D

k o D

Elite
noLain a dit:
Il suffit de ne pas reprendre l'identifiant lors de la copie de l'enregistrement, le sgbd generera alors un identifiant propre et unique, si le champ est mis en auto_increment.
Oui çà oui d'accord...
Enfin bon je ne sais pas non plus exactement comment fonctionne ces journaux, on y retrouve des commandes SQL classiques comme INSERT, UPDATE, DELETE ?

Parce qu'alors effectivement c'est un "jeu d'enfant".
 
G

grosnours

ex membre
A ma connaissance, mysql ne permet pas de réplication multi-maîtres.
 
1er
OP
k o D

k o D

Elite
grosnours a dit:
A ma connaissance, mysql ne permet pas de réplication multi-maîtres.
Ce ne doit pas être forcément MySQL qui se charge de cette synchronisation hein.
Tout ce que MySQL doit pouvoir fournir ce sont des logs d'où je peux voir exactement les opérations qui ont été faite et sur quoi (INSERT, UPDATE, DELETE).

Parce que si çà c'est possible, il est possible de créer un programme qui fera cette synchro lui-même.
En fait je me fou de l'aspect implémentation, je dois rédiger un rapport de faisabilité.

(Enfin j'espère avoir saisi ton message ^^)

Sinon quel autre SGBD le permet?
 
1er
OP
k o D

k o D

Elite
Bon voilà, je me répond à moi-même:
Replication

Donc apparamment il doit y avoir moyen d'implémenter ce système Maître-Esclave en bidirectionnel mais il faut bien faire attention.

Si quelqu'un l'a déjà fait (on ne sait jamais) il pourra peut-être m'aider sur la démarche théorique à faire.
 
G

grosnours

ex membre
k o D a dit:
Ce ne doit pas être forcément MySQL qui se charge de cette synchronisation hein.
Tout ce que MySQL doit pouvoir fournir ce sont des logs d'où je peux voir exactement les opérations qui ont été faite et sur quoi (INSERT, UPDATE, DELETE).

Parce que si çà c'est possible, il est possible de créer un programme qui fera cette synchro lui-même.
En fait je me fou de l'aspect implémentation, je dois rédiger un rapport de faisabilité.

(Enfin j'espère avoir saisi ton message ^^)

Sinon quel autre SGBD le permet?
Oracle, c'est certain.
PostgreSQL avec le patchset PgCluster, c'est certain aussi.
Microsoft SQL Server, j'en suis moins sur.
 
Statut
N'est pas ouverte pour d'autres réponses.
Haut