Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Databases, Data structures και Design Patterns

Îåêßíçóå áðü ôï ìÝëïò jstark. Τελευταία δημοσίευση από το μέλος napoleon στις 26-01-2009, 03:26. Υπάρχουν 4 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  08-04-2008, 21:21 41433

    Databases, Data structures και Design Patterns

    Χαίρετε (και κατευθείαν στο ψητό),

    Θέλω να υλοποιήσω έναν Container (σε C/C++), ο οποίος θα πρέπει να δέχεται ως items ΚΑΙ άλλους Containers. Ο Container θα πρέπει να υποστηρίζει μεγάλους αριθμούς από items, ο οποίος δεν είναι γνωστός εξαρχής. Υπάρχει ήδη υλοποιημένη μια ιεραρχία από τύπους δεδομένων (σε C) οι οποίοι θα πρέπει να μπαίνουν στον Container, κάποιοι από τους οποίους περιέχουν άλλους τύπους δεδομένων, είναι δηλαδή μια μορφή container (άσχετη με TON Container μας).  Ολοι αυτοί οι τύποι θα πρέπει να μπορούν να μπούν στον Container (ίσως με κάποιο Adapter Design Pattern). Θα πρέπει επίσης από τον Container να μπορούμε να πάρουμε όσο πιο γρήγορα γίνεται έναν συγκεκριμένο τύπο δεδομένων (πχ όλα τα objects τύπου Α), να δούμε αν ένα object υπάρχει στον Container (έμμεσα ή άμεσα), να υποστηρίζεται Read Only ή/και Ordering από τον Container (αν το θέλει ο χρήστης),  και γενικά θα θέλαμε γρήγορο insertion, search και ίσως και γρήγορο deletion. Προφανώς, αν ο χρήστης τον θέλει ΚΑΙ ordered.  Anyway, το θέμα που με απασχολεί είναι πως τελικά αυτός ο Container (ΘΑ) μοιάζει τελικά με μια βάση δεδομένων (in memory) στην οποία ο χρήστης (προγραμματιστικά ή και απο GUI) θα πρέπει να στέλνει μιας μορφής Query και να παίρνει τα αποτελέσματα. Επειδή δεν κατέχω από βάσης δεδομένων, πόσο  μάλλον να υλοποιήσω μια, θα ήθελα να ρωτήσω καταρχήν αν έχω ξεστρατίσει κατά τη γνώμη σας. Αν όχι, οι Object-Oriented DBs έχουν σχέση με αυτό που θέλω να φτιάξω ? Πού μπορώ να βρώ πληροφορίες για in-memory database data structures ? Από όσα έχω διαβάσει, oi Relational DBs υλοποιούνται κυρίως σε B-trees - Υπάρχει κάτι ανάλογο για in-memory DBs ?

     

  •  08-04-2008, 21:35 41434 σε απάντηση της 41433

    Απ: Databases, Data structures και Design Patterns

    Τί προσπαθείς να κάνεις? Γιατί δεν χρησιμοποιείς απευθείας μία βάση δεδομένων? Ο SQL Server Express μπορεί να υποστηρίξει μέχρι 4 GB. Και γρήγορη αναζήτηση έχει, και γρήγορο insert/delete/update/select έχει. Αν θέλεις κάποια embedded βάση, υπάρχει και η embedded έκδοση του. Κανείς δεν φτιάχνει μόνος του βάσεις, γιατί από τη μία υπάρχουν έτοιμες πάρα πολλές, από την άλλη χρειάζεται χρόνια δουλειάς και έρευνας για να πετύχεις όσα ήδη κάνουν οι υπάρχουσες βάσεις δεδομένων.

    Υποψιάζομαι ότι έχεις ξεκινήσει κάπως στραβά. Ένας χονδρικός ορισμός των patterns είναι "A solution to a problem in a context.". Υποψιάζομαι ότι προσπαθείς να επιλέξεις μία λύση χωρίς να έχεις ορίσει το problem ή το context.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  08-04-2008, 23:42 41436 σε απάντηση της 41434

    Απ: Databases, Data structures και Design Patterns

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


    Έστω πως ήθελες να φτιάξεις ένα Set (ή Container - πες το όπως θέλεις) το οποίο θα πρέπει
    1. Να περιέχει ήδη υλοποιημένες δομές δεδομένων κάποιες από τις οποίες δρουν ως σύνολα άλλων δομών
    2. Να μπορεί να περιέχει άλλα Sets, τα οποία θα μπορούν να περιέχουν άλλα Sets, κλπ
    3. Να υποστηρίζει set algebra (difference, intersection κλπ)
    4. Να να είναι ordered ή όχι (αν θέλει)
    5. Να μπορεί ο χρήστης να αποφασίσει ποιες δομές δεδομένων να μπορεί να περιέχει (αν θέλει)
    6. Να μπορεί ο χρήστης να στείλει queries (να ορίζει δηλαδή με κάποιον τρόπο ένα φίλτρο - μή φανταστείς SQL Commands) στο Set και να λάβει τα αποτελέσματα
    7. κλπ
    έχει νόημα να διαβάσεις περί βάσεων δεδομένων (όπως είπα δεν γνωρίζω παρά ελάχιστα)  ? Είναι σχετικές οι λεγόμενες Object-Oriented DBs ?  'Η μήπως ένας κλασσικός container (hash_table, binary_tree, κλπ, συνδυασμοί αυτών κλπ) θα κάνουν τελικά τη δουλειά ? Guidelines θα ήθελα.

    Ευχαριστώ

  •  09-04-2008, 01:47 41437 σε απάντηση της 41433

    Απ: Databases, Data structures και Design Patterns

    Με ένα γρήγορο διάβασμα του post σου ... μου φαίνεται ότι ζητάς να φτιάξεις ένα hierarchical data structure, πολύ παρόμοιο με ένα tree, με τη διαφορά ότι τα τα nodes δεν έχουν κάποια  κοινή base class ή interface, αλλά ίσως και να έχουν αν χρησιμοποιήσεις έναν adapter.

    Επίσης, θές να κάνεις searches στο tree, υποθέτω με arbitrary search criteria - όχι δηλαδή search πάντα στο ίδια member field/property του κάθε node, καθώς και ordering των αποτελεσμάτων πριν επιστραφούν στο χρήστη.

    Και φυσικά, όλα τα παραπάνω ... "γρήγορα".

    Οι ερωτήσεις μου.

    1. Υποθέτω ότι θες ντε και καλά C/C++ ;

    2. Είναι πανεπιστημιακό το project, ή είναι για production use; - Ρωτάω αυτό, γιατί η λέξη "γρήγορα" μπορεί να σημαίνει πολλά διαφορετικά πράγματα, για πολλούς διαφορετικούς ανθρώπους.

    Η αλήθεια είναι ότι εγώ στη θέση σου .. θα ξεκίναγα με ένα tree-based approach. Πρώτα τα functional requirements - ΤΙ πρέπει να κάνει αυτό το πράμα - και σε δεύτερη μοίρα τα non-functional - ποσό "γρήγορα" τα κάνει. Στην πορεία, θα αναγνωρίσεις τα hot-spots - εκεί που "πονάει" η υλοποίησή σου - και ταυτόχρονα θα έχεις αποκτήσει γνώση στο βασικό σου θέμα, αρκετή για να ψάξεις περισσότερο, και πιο συνειδητοποιήμένα πλέον, για να το κάνεις καλύτερο.

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

    Οπότε, "δόμησε" τη σκέψη σου, και μη τα βάζεις όλα μαζί στο μυαλό σου. Πρώτα ΤΙ κάνει, μετά πόσο ΚΑΛΑ το κάνει, και .. κύκλους optimization και re-design μέχρι να είσαι cool with it.

    Angel
    O:]
  •  26-01-2009, 03:26 47901 σε απάντηση της 41437

    Απ: Databases, Data structures και Design Patterns

    Ωραία, αν υπάρχει κάτι τέτοιο σε basic structure θα ήταν ενδιαφέρον. Προς στιγμήν κάτι που είναι σαν βάση και είναi στη μνήμη και δεν είναι βάση, είναι το DataSet...
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems