12.07.2015 Views

The Computational Materials Repository

The Computational Materials Repository

The Computational Materials Repository

SHOW MORE
SHOW LESS
  • No tags were found...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

3.4 Tools 75Java, Python or Fortran[43, 44].We shall briefly look at the advantages/disadvantages of these languages.<strong>The</strong> fastest and most memory efficient code is produced by C/C++ and Fortranbecause the code is directly translated into machine language and the memoryallocation/deallocation is performed by the programmer. This implies that thesource code is larger and more complex than with Java and Python where agarbage collector takes care of the memory and the compiler creates Bytecode.Bytecode is an intermediate representation of the source code that is computerarchitecture independent, but has the drawback that it still has to be compiledwhich results in regularly slower execution times than binary programs. NeverthelessPython is popular among scientists due to its attractive extensions likeNumPy (N-dimensional array objects), SciPy (efficient numerical routines) andmatplotlib (2D and 3D plots) that simplify programming more than comparablelibraries in other languages. (Reviewed in [43, 44, 45, 46, 47])We chose Python because it fulfills the requirements and is a good compromisebetween ease of use and efficiency. <strong>The</strong> mentioned Python extensions are howevernot used by the implementation of CMR in order to keep it as independent aspossible.3.4.3 MySQLScalability is important for CMR. It should be able to support projects of smallsizes as well as all data generated by a whole institute. To support the later it usesa database management systems often just called database. <strong>The</strong> requirementsfor the database software are to be able to store electronic structure calculations,search efficiently for fields and keywords, provide interfaces for Python and PHP,be easy to install and maintain and available on the many platforms.<strong>The</strong> nowadays most commonly used type is the relational database which wasinvented by Edgar F. Codd and published in 1970[48] . <strong>The</strong> reason of the wideacceptance until now is that the concept is relatively simple: data is organizedin tables with rows and columns. One row is referred to as a tuple consistingof attributes (the values in the columns). A collection of tuples with the sameattributes (table) is called a relation, hence the name relational database. <strong>The</strong>reare two other database types: the NoSQL databases (not only SQL) and theobject oriented database management systems. <strong>The</strong> latter is capable of storingcomplete objects in a database and works therefore hand in hand with objectoriented designed software. <strong>The</strong> NoSQL databases enjoy increased interest becausethey promise to solve mature shortcomings of the relational databases likethe problems of scalability (relational databases are only vertically scalable 4 ),throughput, high set up and maintenance cost, finding compromises between4 By vertical scalable is meant upscaling: a single machine is upgraded with disk, memory,CPU in contrast to horizontally scalable which would mean adding more machines[49].

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!