Italian B4J - Server Client e Database scambio dati

marco.canta

Active Member
Licensed User
Longtime User
Ciao, ho bisogno di un aiuto ... ho realizzato in B4J un programma server e un programma Client che funzioneranno su PC differenti con istallato windows e in rete tra di loro (Rete Locale).
Ho bisogno di un database a cui accedono sia l Server che il Client con cui si scambiano informazioni e memorizzo dati, con intervallo di circa 200ms.
Come DataBase avevo Pensato a SQLite, ma da alcune prove fatte, sembra che abbia qualche problemino ... accesso di più' applicativi differenti allo stessoDB.

Cosa mi suggerite ? Può andare bene SQLite (magari configurato adeguatamente) o qualche altro DB ?
Avevo scatto mySQL, cosi da non dover essere legato ad un ulteriore programma (Apache o altro) per far funzionare mySQL.

Grazie Marco
 

uniplan

Active Member
Licensed User
Longtime User
Sicuramente Postgresql è gratuito e gira sia in ambiente Windows che in ambiente linux
 

Star-Dust

Expert
Licensed User
Longtime User
Su questo Data base deve accedere un solo server?
I client accederanno al DB attraverso il server ?

... accesso di più' applicativi differenti allo stessoDB
Cosa intendi? Oltre al server altri applicativi devono accedere al DB?
 

marco.canta

Active Member
Licensed User
Longtime User
Su questo Data base deve accedere un solo server?
I client accederanno al DB attraverso il server ?


Cosa intendi? Oltre al server altri applicativi devono accedere al DB?

Server e Client sono solo i ruoli dei programmi, tutti accedono indipendentemente al Database che si trova in una cartella condivisa.
Il Server Scrive e Legge tutti i dati del DB mentre i Client possono fare solo alcune operazioni.
Il Programma Server è uno e i Client possono arrivare a 50/60.
 

marco.canta

Active Member
Licensed User
Longtime User
Potrei inserire "inserire" tra client e server un server RDC2.

Per MySql, sarà necessario installare tutto il resto, quindi uno dei tanti XAMPP, WAMP, ...


Quello che vorrei evitare è proprio di installare XAMPP, WAMP o altro ... da questo la richiesta di usare un DB indipendente o statico che dir si voglia.
 

Star-Dust

Expert
Licensed User
Longtime User
Io farei accedere i Client al DB dal server come in RDC che suggerisce il grande @LucaMs

Ma in un solo server non due
 

udg

Expert
Licensed User
Longtime User
Per MySql, sarà necessario installare tutto il resto, quindi uno dei tanti XAMPP, WAMP, ...
Perchè è necessario installare anche Apache e PHP? Non si può installare il solo MySQL?

Anche io suggerirei l'utilizzo di RDC2 (che torna buono anche nel caso un domani si desiderasse predisporre delle app mobile). I client utilizzerebbero tale sistema per inviare i dati al server che, oltre ai compiti cui è soggetto, funzionerebbe anche da collettore di quanto va scambiato con il database.
 

micro

Well-Known Member
Licensed User
Longtime User
Un umile consiglio, usa usbwebserver e risparmi qualsiasi installazione.
Ci sta anche su un semplice pendrive.
Puoi decidere su quale pc avviarlo, naturalmente quello diventerà il server e dovrà essere sempre attivo.
A meno che utilizzi come server mysql un semplice raspberry che lascerei perennemente acceso, così tutti i pc saranno client.
Se usi il raspy assicurati di lasciare solo il boot sulla sd e il resto su una pendrive altrimenti le continue scritture te lo metterebero subito fuori uso.
Un server mysql con 40,00 euro e con buone performance non è poi da scartare.
Io uso usbwebserver da qualche anno e grossi problemi non ne ho avuti.
 

marco.canta

Active Member
Licensed User
Longtime User
Allora ... sto cercando di usare un SQLite, per me la soluzione migliore da offrire al cliente... il quale ha una cartella condivisa tra tutti i pc in cui risiede il database e i vari programmi accedono alla cartella leggendo il database.

Attualmente inizializzo il SQL e poi eseguo operazioni e solo quando chiudo il programma chiudo il SQL .... è coretto ? o è meglio aprire e chiudere ad ogni operazione ?

esempio :

B4X:
    Try
        SQLite_DB64.InitializeSQLite(Main.PercorsoDB, "DB64.db", True)
        SQLite_DB64.ExecNonQuery("PRAGMA journal_mode = wal")
        Log("- Open Db DB64")
    Catch
        Log("*! Error Db DB64")
    End Try



e in chiusura programma

SQLite_DB64.Close
 
Top