jump to navigation

Database Locking March 19, 2007

Posted by nhabibi in Computer-Science Term, Database.
add a comment

One of the most important feature of a DBMS, is its ability to support concurrent transactions and keep the DB safe against inconsistency,by means of database locking:

When many people may be reading the same data item at the same time, it is usually necessary to ensure that only one application at a time can change a data item. Locking is a way to do this. Because of locking, all changes to a particular data item will be made in the correct order in a transaction.

Different DBMS have different locking mechanisms, but lots in common.
The problems of running concurrent are grouped in to 3: Dirty ReadNon Repeatable ReadPhantom Reads

Isolation levels represent DBMS capability to prevent above problems. The higher level, the more complicated mechanism.
4 levels are considered: Read UncommittedRead Committed -
Repeatable ReadSerializable

More info here.
You can see a short report, in Persian, here. We introduced the locking in Sql Server, Oracle and Microsoft Access, briefly.

Combinatorial Optimization December 22, 2006

Posted by nhabibi in Artificial Intelligence, Computer-Science Term.
1 comment so far

Combinatorial optimization is a branch of optimization in applied mathematics and computer science that sits at the intersection of several fields, including artificial intelligence, mathematics and software engineering.

Combinatorial optimization algorithms solve instances of problems that are believed to be hard in general, by exploring the usually-large solution space of these instances(NP-hard problems). Combinatorial optimization algorithms achieve this by reducing the effective size of the space, and by exploring the space efficiently.

Examples of these problems are:

Source: Wikipedia

Legacy Systems August 27, 2006

Posted by nhabibi in Computer-Science Term.
add a comment

As I was reading a book about database programing, I faced the term “Legacy Database”.

I saw a good difinition for legacy systems (in general), in wikipedia. Here go some selected parts:

A legacy system is an existing computer system or application program which continues to be used because the user does not want to replace or redesign it.

Legacy systems are considered to be potentially problematic by many software engineers for several reasons. Legacy systems often run on obsolete (and usually slow) hardware, and sometimes spare parts for such computers become increasingly difficult to obtain. These systems are often hard to maintain, improve, and expand because there is a general lack of understanding of the system. The designers of the system may have left the organization, leaving no one left to explain how it works. Such a lack of understanding can be exacerbated by inadequate documentation or manuals getting lost over the years. Integration with newer systems may also be difficult because new software may use completely different technologies.

Despite these problems, organizations can have compelling reasons for keeping a legacy system, such as:

  • The costs of redesigning the system are prohibitive because it is large, monolithic, and/or complex.
  • The system requires close to 100% availability, so it cannot be taken out of service, and the cost of designing a new system with a similar availability level is high.
  • The system works satisfactorily, and the owner sees no reason for changing it.