What's the best source to learn about database replication mechanisms? [closed] - database

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
What's the widest overview and where are the deepest analysis of different replication methods and problems?

I would start here: wikipedia's replication article, then read a couple of related papers on general replication techniques such as the replicated distributed state machine approach (Paxos (pdf)) and epidemic replication (Google 'Epidemic Algorithms for Replicated Database Maintenance').
For a practical overview, perhaps consider investigating the source code for Postgresql, which seems to have some replication technologies built in. This presentation purports to have some details.
However, given that you're talking about deep analysis, the best approach is to make sure that you have a very sound understanding of fundamental distributed database systems issues. My copy of Date's Introduction to Database Systems has a few pages on distributed databases and their attendant issues. I should think a textbook dedicated to distributed databases would have much more detail - this one, for example, looks promising.
You can go much deeper if you read Ken Birman's work on Virtual Synchrony, and most things that Leslie Lamport has ever written. These will attack the problem from the perspective of a general distributed systems approach.
Good luck!

In my opinion, you should pick a mainstream database (such as Oracle) and study everything it offers and go from there.
Oracle offers:
Replication
Data guard (standby database and beyond- physical, logical)
Real Application Clusters - (multiple instances, one DB)
and more !
A bit of hands-on would not hurt so you can download a PC version and try various replication approaches on one PC!
Enjoy !

Though it is MS-SQL specific, you should have a look at "Pro SQL SERVER 2005 Replication" (Sujoy P. PAUL, Apress). I owe this guy many quiet nights... I guess you can find some extracts of this book as PDF files.

Wikipedia has some overview on the matter:
http://en.wikipedia.org/wiki/Multi-master_replication
http://en.wikipedia.org/wiki/Lazy_replication

Related

Simple Database Implementation for Educational Purpose [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I would like to learn Database systems implementation in Depth. Is there an open-source simple implementation of database for educational purpose that I can go through the code? Like there are a lot of OS implementation (Minix, Pintos...). I am wondering if there are similar systems for database education as well.
I read a few textbooks and they are mainly focus on theory and concepts.
Thanks a lot!
Alfred
Then find some educational material :)
When i was learning db concept, my professor ask us to code a simple dbms. One important reference is the Redbase:
http://infolab.stanford.edu/~widom/cs346/
Hope that helps.
MySQL, PostgreSQL, SQlite are all opensource. You can find their source code and related documentation.
Also check NoSQL group of databases.
What makes you think implementing a database is simple?
What parts of the database interest you? Storage management? Indexing? Query Language? Query Planning? Transactions?
Modern (even "toy") Relational systems have all of those components, which makes them rather complex from the outset. Other DBs, such dbm based databases are much simpler. Then you have things like Lucene, which is a database for documents and free form text -- conceptually simple but put a lot of effort in to scaling.
You can look at implementations of SPARQL if you're curious about query languages, as they work against RDF triple stores (which aren't super complicated).
There's also things like Prevlayer, which is an in memory database using a concept called prevalence. Probably the simplest of all of them, really when you get down to it.

Classroom management software; storing data? [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
So I am working on a mini-project for the summer to keep my coding skills sharp. I will be using the Qt4 and C++ to make a classroom management system for college professors. I just came up with the idea like 10 minutes ago so I don't have much.
One question I have is what is the best way to store student/class/assignment information so that the software could still be portable and used my different schools.
My first guess would be a MySQL database. I need a gurus opinion on this one though.
Since different sites have different database preferences you might wish to use a layer such as ActiveRecord or PDO or ODBC to abstract out the specific database that your end users want to use. This would allow people to deploy onto PostgreSQL or MySQL or whatever they prefer.
A good choice for single-process server systems could be SQLite3. It's not suitable for all systems, but if your system is designed to scale to a few dozen users at most, it'll probably work fine. (The amount of work you'd need to put into a server to make SQLite3 scale into the hundreds or thousands might argue for planning for a database server environment instead.)
http://www.sqlite.org/
might be a good option. It is embeddable so you don't need a specific database instance running wherever you deploy it
also, http://www.microsoft.com/sqlserver/2005/en/us/compact.aspx is an option

what is the best source for server design patterns/best practices? [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I've searched for a while for a good book which covers server designed patterns. I'm looking for something along the lines of Gang of Four.
Concepts include:
-- Threaded vs Process vs combo based solutions
-- How to triage requests properly. i.e. I expect only limited requests from any domain, so I may only allocate a certain number of workers per domain.
-- Worker timeouts
-- poll/select/epoll use cases
-- And those things I don't know!
Any suggestions please!
Thanks!
Two very useful books:
Patterns of Enterprise Application Architecture
Enterprise Integration Patterns:
The book Enterprise Integration
Patterns provides a consistent
vocabulary and visual notation to
describe large-scale integration
solutions across many implementation
technologies. It also explores in
detail the advantages and limitations
of asynchronous messaging
architectures. You will learn how to
design code that connects an
application to a messaging system, how
to route messages to the proper
destination and how to monitor the
health of a messaging system. The
patterns in the book are
technology-agnostic and come to life
with examples implemented in different
messaging technologies, such as SOAP,
JMS, MSMQ, .NET, TIBCO and other EAI
Tools.
Advanced Programming in the Unix Environment, 2nd Edition is a fantastic resource for learning the details of Unix systems programming. It's extremely well-written (one of my favorite books in the English Language), the depth is excellent, and the focus on four common environments (at the time of publication) help ensure that it is well-rounded. It's not too badly out of date -- new features in newer operating systems may be fantastic for specific problems, but this book really covers the basics very well.
The downside, of course, is that APUE2nd misses out on some fantastic third-party tools such as libevent, which can make programming sockets-based servers significantly easier. (And automatically picks the 'best' of select(2), poll(2), epoll(4), kpoll, and Windows event handling, for the platform.)
As for choosing between threads and processes, it comes down to: how much memory sharing do you want / need between tasks? If each process can run relatively isolated, processes provide better memory protection and no speed penalty. If processes need to interact with each other's objects, or objects 'owned' by a single thread, then threads provide better primitives for sharing data. (But many would argue that the shared memory of threads is an invitation to fun and exciting bugs. It Depends.)

What BASE database development applications are available? [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 9 years ago.
What applications/IDEs are out there to develop BASE database systems from?
BASE systems (Basically Available,
Soft state, Eventually consistent) are
an alternative to RDBMS, that work
well with simple data models holding
vast volumes of data. Google's
BigTable, Dojo's Persevere, Amazon's
Dynamo, Facebook's Cassandra are some
examples.
It seems like you are looking into the recently popular NoSQL moniker for "databases". Which also includes MongoDB, Voldemort (must not be named), Hbase, Tokyo Cabinet, and CouchDB. There are a lot of them. I am not sure what your question is?
Each one has its own advantages, implementation difficulty, and performance differences. Although they are all designed to scale. There are some good articles on highscalability.com, http://highscalability.com/blog/tag/nosql
Then there are the systems that are designed to enhance and scale searching from traditional databases (i.e. MySQL). For example, Solr based on Lucene. That's more geared towards full text searching. That falls in the "eventually consistency" since it synchronise with the database periodically.

What are some great online database modeling tools? [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
What's your favorite open source database design/modeling tool?
I'm looking for one that supports several databases, especially Firebird SQL but I can't find one on Google.
I've used DBDesigner before. It is an open source tool. You might check that out. Not sure if it fits your needs.
Best of luck!
Do you mean design as in 'graphic representation of tables' or just plain old 'engineering kind of design'. If it's the latter, use FlameRobin, version 0.9.0 has just been released.
If it's the former, then use DBDesigner. Yup, that uses Java.
Or maybe you meant something more like MS Access. Then Kexi should be right for you.
S.Lott inserted a comment, but it should be an answer: see the same question.
EDIT
Since it wasn't as obvious as I intended it to be, here follows a verbatim copy of S.Lott's answer in the other question:
I'm a big fan of ARGO UML from Tigris.org. Draws nice pictures
using standard UML notation. It does some code generation, but mostly
Java classes, which isn't SQL DDL, so that may not be close enough to
what you want to do.
You can look at the Data Modelling Tools list and see if anything
there is better than Argo UML. Many of the items on this list are
free or cheap.
Also, if you're using Eclipse or NetBeans, there are many
design plug-ins, some of which may have the features you're looking
for.
The DB Designer Fork project claims that it can generate FireBird sql scripts.
I like Clay Eclipse plugin. I've only used it with MySQL, but it claims Firebird support.
You may want to look at IBExpert Personal Edition. While not open source, this is a very good tool for designing, building, and administering Firebird and InterBase databases.
The Personal Edition is free, but some of the more advanced features are not available. Still, even without the slick extras, the free version is very powerful.

Resources