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

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

Δημοσ.

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

 

Όλα ξεκίνησαν όταν ήθελα να εγκαταστήσω το vsftpd με virtual users. Οι οδηγίες για να το κάνω αυτό βρίσκονται στην εξής ιστοσελίδα:

http://www.neant.ro/2012/04/secure-ftp-with-vsftpd/

 

Δεν είχα ιδιαίτερο πρόβλημα να τις εκτελέσω, δεν είναι αυτό το θέμα εδώ. Μου κίνησε την περιέργεια το PAM και το db_load (το οποίο θεωρούσα εντολή του Linux) και έψαξα λίγο για αυτά και από εκεί ξετρύπωσα τη BDB.

 

Δεν μπορώ να πω ότι κατάλαβα και πολλά πράγματα όμως, μου φαίνεται σαν μια απλή εφαρμογή αποθήκευσης ζευγαριών λεξικού {key, value}. Δεν είναι σχεσιακή, δεν είναι "στάνταρ", δεν είναι από αυτό, δεν είναι από το άλλο... τι στο καλό είναι και πώς αξιοποιείται;

 

Πολλές από τις δραστηριότητές μου εμπλέκουν την ύπαρξη ενός λεξικού {k,v} το οποίο μεταβάλλεται σχετικά αργά, οπότε με έχει κεντρίσει μήπως αξίζει να μάθω μερικά πράγματα για αυτό. Αλλά από ελληνικές πηγές, υπάρχουν ελάχιστες, ενώ δεν έχω βρει πολλά tutorials για τον αρχάριο.

 

Τα σχόλια είναι ελεύθερα.

Δημοσ.

Θα σου απαντήσω  με ερώτηση

 

Ας πούμε ότι θέλεις να φτιάξεις μια portable εφαρμογή η οποία να είναι μικρή σε μέγεθος, να χρησιμοποιεί ένα storage system για να αποθηκεύει τα δεδομένα και να έχεις όσο το δυνατον μικρότερο overhead απο SQL parsing και Query oprimization.

 

Θα σε βόλευε η BDB ?

Δημοσ.

Γενικά εκτός από τις σχεσιακές βάσεις υπάρχουν και οι λεγόμενες NoSQL (Not Only SQL).

Βρίσκονται σε άνθηση τελευταία καθώς υπάρχει μεγάλη ανάπτυξη στο τομέα των Big Data

όπου αυτές οι βάσεις χρησιμοποιούνται αποκλειστικά καθώς μπορούν να πατάνε πάνω σε

κατανεμημένα file systems. Αν θες να το ψάξεις παραπάνω δες εργαλεία όπως τα Hadοοp, Spark, Storm

(όλα του Apache).

 

Οι NoSql βάσεις χωρίζονται σε 4 κατηγορίες:

Column Oriented: πχ Hbase, Cassandra κτλ. με αρκετά βαρύ θεωρητικό υπόβαθρο

Document Oriented: πχ. MongoDB, CouchDB, όπου αποθηκεύουν τα δεδομένα συνήθως σε μορφή JSON

Key-Value stores: (Εδώ είσαι) όπου κάποιες τρέχουν εξ ολοκλήρου στη RAM

Graph databases: όπου αποθηκεύουν τα δεδομένα σε μορφή γράφου (nodes, edges, connections)

 

Δεν έχω χρόνο να δω τι είναι αυτό που θέλεις να κάνεις, αλλά αν τα δεδομένα που έχεις δεν έχουν μεγάλο

όγκο θα σου πρότεινα να δεις την Redis, που τρέχει στη μνήμη είναι open source

έχει APIs για πολλές γλώσσες και  έχει πολύ καλό  documentation.

  • Like 1
Δημοσ.

Θα σου απαντήσω  με ερώτηση

 

Ας πούμε ότι θέλεις να φτιάξεις μια portable εφαρμογή η οποία να είναι μικρή σε μέγεθος, να χρησιμοποιεί ένα storage system για να αποθηκεύει τα δεδομένα και να έχεις όσο το δυνατον μικρότερο overhead απο SQL parsing και Query oprimization.

 

Θα σε βόλευε η BDB ?

 

Πώς μπορώ να απαντήσω, αν δεν ξέρω πώς μπορώ να οργανώσω τα δεδομένα μου στην BDB; Δεν είναι σχεσιακή ΒΔ, για να πω ότι είναι ισοδύναμη της μηχανής InnoDB της mysql (την οποία έχω δουλέψει γιατί μου αρέσουν τα indexes, τα ξένα κλειδιά κλπ.) Μοιάζει με την MyISAM μήπως (που δεν έχω δουλέψει τόσο); Γι' αυτό έκανα προηγουμένως την ερώτηση για την {key, value} δομή.

 

Portable εφαρμογή προς το παρόν και προς το άμεσο μέλλον δεν βλέπω να κάνω. Όμως έχω ανάγκη να γίνεται γρήγορη αναζήτηση και έτσι να εξυπηρετεί σχεδόν-ταυτόχρονα πολλές αιτήσεις αναζήτησης. Σε αυτή την περίπτωση το όποιο χρονικό overhead ελαχιστοποιείται με ενδιαφέρει.

 

Πάντως για δεδομένα της τάξης των 1000-1500 εγγραφών, γιατί να μην χρησιμοποιήσω τις εσωτερικές δομές μιας γλώσσας προγραμματισμού, αλλά να εισαγάγω τη βιβλιοθήκη της BDB; Βέβαια έχω και δεδομένα που φτάνουν τα εκατομμύρια εγγραφές μέσα σε μια εβδομάδα (αλλά στηρίζονται δομικά πάνω σε αυτά τα 1000-1500).

 

(Παρένθεση. Δεν θεωρώ τον εαυτό μου προγραμματιστή, πόσο μάλλον developer, αλλά μπορώ έχοντας κάποιες γνώσεις και με προσπάθεια, να γράψω κάποιον κώδικα -- συνήθως τα αναθέτω σε συνεργάτες αλλά τότε πρέπει να ξέρω τι έχει κάνει).

 

Επίσης η BDB υποστηρίζει, από ό,τι κατάλαβα από όσα διάβασα, SQL και άρα έχει το parsing overhead.

 

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

 

Την εχω δει αλλα υπαρχουν και καλυτερες. Εχει καποια προβληματα

 

Όπως;

Δημοσ. (επεξεργασμένο)

 

Επίσης η BDB υποστηρίζει, από ό,τι κατάλαβα από όσα διάβασα, SQL και άρα έχει το parsing overhead.

 

Η υλοποίηση της SQL είναι κάτι καινούργιο και αν θέλεις το χρησιμοποιείς. Έχεις την δυνατότητα να παίξεις όπως παλιά κλασικά με key value pairs.

 

Να χρησιμοποιείς τις εσωτερικές δομές ??? και όταν κλείσει η εφαρμογή πως θα ανακτήσεις τα δεδομένα ? εννοείς να τα κρατήσεις σε XML η flat files ?

 

ψρειαζεσαι σχεσιακή ? SQL ? τι είναι αυτό που θες να κάνεις ? πόσους πίνακες θες να έχεις και κατα πόσο θα αλλάζουν τα ερωτήματα στην βάση ?

 

και μην ξεχνας είναι embedded

 

επίσης δες μια εδώ

 

http://www.oracle.com/technetwork/articles/embedded/seltzer-berkeleydb-sql-086752.html

 

αν ήθελα να κρατάω rows και να τα ανακτώ γρήγορα μπορώ σωστά ?

 

για να κλείσω 

 

Not all SQL applications should be implemented in Oracle Berkeley DB--an open source, embeddable database engine that provides fast, reliable, local persistence with zero administration required--but if you have a relatively fixed set of queries and you care about performance, Berkeley DB may just be the way to go.

Επεξ/σία από Aztec
Δημοσ.

Πάντως αν η ΒΔ σου δεν έχει μεγάλες απαιτήσεις και επιθυμείς την χρήση του σχεσιακού μοντέλου μπορείς να δεις και την SQLITE η οποία υλοποιεί μια πλήρη βάση δεδομένων SQL κυριολεκτικά σε ένα DLL αρχείο :)

  • Like 2

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

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

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

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

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

Σύνδεση

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

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