Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπέρα παιδιά. Θέλω να φτιάξω ένα project σε java το οποίο θέλω να αποθηκεύει πληροφορίες που θα διαβάζει από το χρήστη σε μια offline βάση δεδομένων (δηλαδή κάτι σαν το save που κάνουμε στα games για να το πω πιο απλά, όταν κλείνει το πρόγραμμα να έχουν αποθηκευτεί τα δεδομένα αλλά offline). Δεν ξέρω πως να υλοποιήσω το συγκεκριμένο κομμάτι (ui κλπ. το κατέχω) και η αλήθεια είναι πως έχω μπερδευτεί λίγο. Θα μπορούσατε να μου προτείνετε κάποιο tutorial για να βοηθηθώ; 

 

Ευχαριστώ εκ των προτέρων!

Δημοσ.

Γιατί δε βάζεις αυτά που θες σ' ένα αρχείο;

Ο χρήστης θα αποθηκεύει διάφορες πληροφορίες ας πούμε πληροφορίες για φάρμακα, οπότε θέλω να γίνετε διαχωρισμός ανάλογα με το πως έχει ορίσει ο χρήστης. Για παράδειγμα, φάρμακα για το ζάχαρο, φάρμακα για την πίεση κλπ. Οπότε αν θέλει να δει κάποιο συγκεκριμένο φάρμακο για την πίεση ή να καταχωρίσει/τροποποιήσει κάποια εγγραφή να μπορεί να γίνει με την κατάλληλη κλήση. Οπότε αυτό θα μπορούσε να υλοποιηθεί με ένα ξεχωριστό αρχείο όπως λες και ένα απλό πίνακα; Γιατί ακριβώς λόγω των κλήσεων φαντάστηκα πως θα έπρεπε να έχω και database μέσα στην εφαρμογή ακριβώς γι αυτό το λόγο.

Δημοσ.

Ρίξε μια ματιά εδώ.

Ευχαριστώ για τη βοήθεια. Άρα, ενσωματώνοντας την H2 στο πρόγραμμά μου στην ουσία μου δίνει την database που χρειάζομαι για την εργασία που περιγράφω παραπάνω έτσι; Μπορεί όμως να δουλέψει offline; Είναι πολύ σημαντικό αυτό για το project μου. Συγγνώμη αν γίνομαι κουραστικός αλλά είναι η πρώτη μου προσπάθεια σε ανάλογο project :)

Δημοσ.

Η Η2 χρησιμοποιείται κυρίως για development και το default της είναι in-memory βαση. Τώρα μπορείς εύκολα να την configurareis να σώζονται τα δεδομένα σε files (άρα το offline που θέλεις εσύ). Παρ'όλα αυτά εγώ θα σου έλεγα να δουλέψεις με μια "κανονική" όπως https://www.postgresql.org/ ή https://mariadb.org/

Δημοσ.

 Παρ'όλα αυτά εγώ θα σου έλεγα να δουλέψεις με μια "κανονική" όπως https://www.postgresql.org/ ή https://mariadb.org/

 

Γιατί? Αυτό που θέλει να κάνει ειναι αρκετά χρήσιμο και το κάνουν αρκετά projects απο όσο ξέρω. Απορία έχω περισσότερο δεν προσπαθώ να στην πω. Μάλιστα δουλεύω κατα καιρούς σε ένα project που είναι στημένο για MySQL και επειδή απευθύνεται σε μη τεχνικά άτομα έχει δημιουργήσει θέμα, και φυσικά στα σχέδια (του αγίου ****) είναι να προστεθεί και μια offline database.

Δημοσ.

Γιατί? Αυτό που θέλει να κάνει ειναι αρκετά χρήσιμο και το κάνουν αρκετά projects απο όσο ξέρω. Απορία έχω περισσότερο δεν προσπαθώ να στην πω. Μάλιστα δουλεύω κατα καιρούς σε ένα project που είναι στημένο για MySQL και επειδή απευθύνεται σε μη τεχνικά άτομα έχει δημιουργήσει θέμα, και φυσικά στα σχέδια (του αγίου ****) είναι να προστεθεί και μια offline database.

 

Ρε παιδιά τι εννοιείτε "offline βάση δεδομένων"; Μια βάση μπορείς να την έχεις στο PC σου (αρα offline), σε ένα VM στην Amazon ή οπουδήποτε αλλού. Μήπως καταλαβαίνω κάτι διαφορετικό;

Save σε file θέλει να κάνει;

Δημοσ.

Το αρχείο είναι μπακαλίστικη λύση ειδικά όταν μιλάμε για όγκο δεδομένων , σωστά ο op θέλει να χρησιμοποιήσει μια βάση δεδομένων . Η λύση που σου προτείνω είναι η sqlite ( χρησιμοποιείται και στο android ) .. ένα tutorial είναι εδώ http://www.tutorialspoint.com/sqlite/sqlite_java.htm αν και μπορείς να βρεις πάρα πολλά μιας και χρησιμοποιείται ευρέως για τέτοιου είδους εφαρμογές . 

Πληροφοριακά να αναφέρω μερικά πλεονεκτήματα που έχει να χρησιμοποιήσεις sqlite αντί ένα απλό αρχείο .

 

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

Γιατί προτείνετε sqlite όταν ο OP παίζει με Java και η H2 του δίνει περισσότερα option? Όχι ότι έχω θέμα με την sqlite. Το ίδιο πράγμα λέμε και οι 4 by the way.

Δημοσ.

Tι περισσότερα προσφέρει ; προσωπικά  δεν την έχω χρησiμοποιήσει και για αυτό και του προτείνω την sqlite.

 

Υ.Γ 

Μετά από μια αναζήτηση φαίνεται ξεκάθαρα πως η h2 είναι ανώτερη παρέχοντας πράγματα όπως encryption , procedures ,  combatibility me ORACLE , MYSQL , server mode oπότε πιστεύω ότι αξίζει να την δοκιμάσεις αν και δεν ξέρω για την απόδοση .

Δημοσ.

Tι περισσότερα προσφέρει ; προσωπικά  δεν την έχω χρησiμοποιήσει και για αυτό και του προτείνω την sqlite.

 

Υ.Γ 

Μετά από μια αναζήτηση φαίνεται ξεκάθαρα πως η h2 είναι ανώτερη παρέχοντας πράγματα όπως encryption , procedures ,  combatibility me ORACLE , MYSQL , server mode oπότε πιστεύω ότι αξίζει να την δοκιμάσεις αν και δεν ξέρω για την απόδοση .

 

Δεν το έχω ψάξει πολύ αλλά μόνο που είναι γραμμένη σε Java και έχει official JDBC api είναι ένα plus. Και με λίγο ψάξιμο φαίνεται όντως να είναι πιο ολοκληρωμένη. Για απόδοση δεν έχω ιδέα επίσης, αλλά δεν νομίζω να απασχολεί για μικρά projects.

 

@OP, αν έχεις χρόνο για χάσιμο δοκίμασε να παίξεις με Hibernate + H2. Έτσι θα έχεις και όλα τα καλούδια του hibernate και όποτε θέλεις να πας σε άλλη database απλά αλλάζεις μερικές ρυθμίσεις :)

Δημοσ.

Πάνω κάτω ναι, μάλλον το λέμε λίγο λάθος, embedded database για να είμαστε πιο σωστοί.

 

Οκ τώρα συννενούμαστε. Δεν είναι άσχημη λύση. Τα μειονεκτήματα είναι δύο. τουλάχιστον με την H2.

 

- Μπορείς να έχεις μόνο 1 process connected στη βάση. Οκ δεν είναι και τόσο κακό. Απλά π.χ. θα πας να την ανοίξεις με έναν DB manager ενώ θα είναι ανοιχτό το application και δεν θα μπορείς. But anyway, μικρό κακό και αυτό.

- Concurrency, αν έχεις πολλά writes απο διαφορετικούς χρήστες θα γίνεται της κακομοίρας απο locks. Again, αν δεν είναι αυτό valid scenario, ίσως να μην σε ενδιαφέρει.

 

Τώρα πλεονέκτημα. Ξεκινάει μαζι με το application και δεν χρειάζεται να τρέξεις μια 2η εντολή; Δεν βλέπω κάτι άλλο. Ούτε θα έχεις λιγότερο complexity απο την MySQL πχ.

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...