Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
database.docx
Скачиваний:
13
Добавлен:
10.02.2016
Размер:
314.09 Кб
Скачать

Independently maintained and developed in different software trains. Branching is often related to poor

modularity and can also be linked to poor code quality. In an attempt to satisfy a product schedule and customer

requirements, software engineers use branching to avoid features (and related defects) that are not critical

to their main target or customer. As a result, the field ends up with several implementations of the same

functionality on similar or even identical hardware platforms.

Although Junos OS powers many platforms with vastly different capabilities, it is always built from one source

tree with core and platform-specific sections. The interface between the two parts is highly modular and well

documented, with no overlap in functionality. There is no branching in Junos OS code.

• Code patching: To speed defect resolution, some vendors provide code patching or point bug-fix capability,

so that selected defects can be patched on a running operating system. Although technically very easy to do,

code patching significantly degrades production software with uncontrolled and unregressed code infusions.

Production systems with code patches become unique in their software state, which makes them expensive to

control and maintain.

After some early experiments with code patching, Junos OS ceased this process in favor of a more

comprehensive and coherent in-service software upgrade (ISSU) and nonstop routing implementation.

• Customer-specific builds: The use of custom builds is typically the result of failures in a software design

methodology and constitutes a form of code branching. If a feature or specific bug fix is of interest to a particular

customer, it should be ported to the main development tree instead of accommodated through a separate build.

Code branching almost inevitably has major implications for a product such as insufficient test coverage, feature

Inconsistency and delays. Junos os is not delivered in customer-specific build forms.

• Features in minor (regressed) releases: Under Juniper’s release methodology, which has been adopted by

many other companies, minor software releases are regressed builds that almost exclusively contain bug

fixes. Sometimes the bug fix may also enable functionality that existed but was not made public in the original

feature release. However, this should not be a common case. If a vendor consistently delivers new functionality

along with bug fixes, this negatively affects the entire release process and methodology because subsequent

regressed releases may have new caveats based on the new feature code they have received. Copyright © 2010, Juniper Networks, Inc. 19

wHite paper - Network operating System evolution

Final Product Quality and Stability

Good code quality in a network operating system means that the OS runs and delivers functionality without problems

and caveats—that is, it provides revenue-generating functionality right out of the box with no supervision. Customers

often measure software quality by the number of defects they experience in production per month or per year. In the

most severe cases, they also record the downtime associated with software defects.

Generally, all software problems experienced by a router can be divided into three major categories:

• Regression defects are those introduced by the new code; a regression defect indicates that something is broken

that was working before.

• Existing software defects are those previously present in the code that were either unnoticed or (up to a certain

point) harmless until they significantly affected router operation.

• New feature fallouts are caveats in new code.

Juniper’s software release methodology was created to greatly reduce the number of software defects of all types,

providing the foundation for the high quality of Junos OS. Regression defects are mostly caught very early in their

lifetime at the forefront of the code development.

Existing software defects represent a more challenging case. JTAC personnel, SE community or customers can

report them.

Some defects are, in fact, uncovered years after the original design. The verity that they were not found by the

system test or by customers typically means that they are not severe or that they occur in rare circumstances,

thus mitigating their possible impact. For instance, the wrong integer type (signed versus unsigned) may affect a

32-bit counter only when it crosses the 2G boundary. Years of uptime may be needed to reveal this defect, and most

customers will never see it.

In any case, once a new defect class is found, it is scripted and added to the systest library of test cases. This

guarantees that the same defect will not leak to the field again, as it will be filtered out early in the build process.

This systest library, along with the Junos OS code itself, is among the “crown jewels” of Juniper intellectual property

in the area of networking.

As a result, although any significant feature may take several years of development, Juniper has an excellent track

record for making sure things work right at the very first release, a record that is unmatched in the networking industry.

Conclusion

Designing a modern operating system is a difficult task that challenges developers with complex problems and

choices. Any specific feature implementation is rarely perfect and often strikes a subtle balance among a broad

range of reliability, performance and scaling metrics.

This balance is something that Junos OS developers work hard to deliver every day.

The best way to appreciate Junos OS features and quality is to start using Junos OS in production, alongside any

other product in a similar deployment scenario. At Juniper Networks, we go beyond what others consider the norm

to ensure that our software leads the industry in performance, resilience and reliability.

Database A database is an organized collection of data for one or more purposes, usually in digital form. The data are typically organized to model relevant aspects of reality (for example, the availability of rooms in hotels), in a way that supports processes requiring this information (for example, finding a hotel with vacancies). This definition is very general, and is independent of the technology used.

The term "database" may be narrowed to specify particular aspects of organized collection of data and may refer to the logical database, to physical database as data content in computer data storageor to many other database sub-definitions. The term database is correctly applied to the data and their supporting data structures, and not to the database management system (referred to by the acronym DBMS). The database data collection with DBMS is called a database system. The term database system implies that the data is managed to some level of quality (measured in terms of accuracy, availability, usability, and resilience) and this in turn often implies the use of a general-purpose Database management system (DBMS).[1] A general-purpose DBMS is typically a complex software system that meets many usage requirements, and the databases that it maintains are often large and complex. The utilization of databases is now spread to such a wide degree that virtually every technology and product relies on databases and DBMSs for its development and commercialization, or even may have such embedded in it. Also, organizations and companies, from small to large, heavily depend on databases for their operations. Well known DBMSs include Oracle, IBM DB2, Microsoft SQL Server, PostgreSQL, MySQL and SQLite. A database is not generally portable across different DBMS, but different DBMSs can inter-operate to some degree by using standards like SQL and ODBC to support together a single application. A DBMS also needs to provide effective run-time execution to properly support (e.g., in terms ofperformance, availability, and security) as many end-users as needed.

The design, construction, and maintenance of a complex database requires specialist skills: the staff performing these functions are referred to as database application programmers and database administrators. Their tasks are supported by tools provided either as part of the DBMS or as stand-alone software products. These tools include specialized database languages including data definition languages (DDL), data manipulation languages (DML), and query languages. These can be seen as special-purpose programming languages, tailored specifically to manipulate databases; sometimes they are provided as extensions of existing programming languages, with added database commands. Database languages are generally specific to one data model, and in many cases they are specific to one DBMS type. The most widely supported database language is SQL, which has been developed for the relational data model and combines the roles of both DDL, DML, and a query language.

A way to classify databases involves the type of their contents, for example: bibliographic, document-text, statistical, or multimedia objects. Another way is by their application area, for example: accounting, music compositions, movies, banking, manufacturing, or insurance.

Discrete mathematics

From Wikipedia, the free encyclopedia

For the mathematics journal, see Discrete Mathematics (journal).

Graphs like this are among the objects studied by discrete mathematics, for their interesting mathematical properties, their usefulness as models of real-world problems, and their importance in developing computer algorithms.

Discrete mathematics is the study of mathematical structures that are fundamentally discrete rather than continuous. In contrast to real numbers that have the property of varying "smoothly", the objects studied in discrete mathematics – such as integers, graphs, and statements in logic – do not vary smoothly in this way, but have distinct, separated values. Discrete mathematics therefore excludes topics in "continuous mathematics" such as calculus and analysis. Discrete objects can often be enumerated by integers. More formally, discrete mathematics has been characterized as the branch of mathematics dealing with countable sets (sets that have the same cardinality as subsets of the natural numbers, including rational numbers but not real numbers). However, there is no exact, universally agreed, definition of the term "discrete mathematics." Indeed, discrete mathematics is described less by what is included than by what is excluded: continuously varying quantities and related notions.

The set of objects studied in discrete mathematics can be finite or infinite. The term finite mathematics is sometimes applied to parts of the field of discrete mathematics that deals with finite sets, particularly those areas relevant to business.

Research in discrete mathematics increased in the latter half of the twentieth century partly due to the development of digital computers which operate in discrete steps and store data in discrete bits. Concepts and notations from discrete mathematics are useful in studying and describing objects and problems in branches of computer science, such as computer algorithms, programming languages, cryptography, automated theorem proving, and software development. Conversely, computer implementations are significant in applying ideas from discrete mathematics to real-world problems, such as in operations research.

Although the main objects of study in discrete mathematics are discrete objects, analytic methods from continuous mathematics are often employed as well.

Contents

1 Grand challenges, past and present

2 Topics in discrete mathematics

2.1 Theoretical computer science

2.2 Information theory

2.3 Logic

2.4 Set theory

2.5 Combinatorics

2.6 Graph theory

2.7 Probability

2.8 Number theory

2.9 Algebra

2.10 Calculus of finite differences, discrete calculus or discrete analysis

2.11 Geometry

2.12 Topology

2.13 Operations research

2.14 Game theory, decision theory, utility theory, social choice theory

2.15 Discretization

2.16 Discrete analogues of continuous mathematics

2.17 Hybrid discrete and continuous mathematics

3 See also

4 References

5 Further reading Grand challenges, past and present

Much research in graph theory was motivated by attempts to prove that all maps, like this one, could be colored with only four colors. Kenneth Appel and Wolfgang Haken finally proved this in 1976.

The history of discrete mathematics has involved a number of challenging problems which have focused attention within areas of the field. In graph theory, much research was motivated by attempts to prove the four color theorem, first stated in 1852, but not proved until 1976 (by Kenneth Appel and Wolfgang Haken, using substantial computer assistance).

In logic, the second problem on David Hilbert's list of open problems presented in 1900 was to prove that the axioms of arithmetic are consistent. Godel's second incompleteness theorem, proved in 1931, showed that this was not possible – at least not within arithmetic itself. Hilbert's tenth problem was to determine whether a given polynomial Diophantine equation with integer coefficients has an integer solution. In 1970, Yuri Matiyasevich proved that this could not be done.

The need to break German codes in World War II led to advances in cryptography and theoretical computer science, with the first programmable digital electronic computer being developed at England's Bletchley Park. At the same time, military requirements motivated advances in operations research. The Cold War meant that cryptography remained important, with fundamental advances such as public-key cryptography being developed in the following decades. Operations research remained important as a tool in business and project management, with the critical path method being developed in the 1950s. The telecommunication industry has also motivated advances in discrete mathematics, particularly in graph theory and information theory. Formal verification of statements in logic has been necessary for software development of safety-critical systems, and advances in automated theorem proving have been driven by this need.

Computational geometry has been an important part of the computer graphics incorporated into modern video games and computer-aided design tools.

Several fields of discrete mathematics, particularly theoretical computer science, graph theory, and combinatorics, are important in addressing the challenging bioinformatics problems associated with understanding the tree of life.

Currently, one of the most famous open problems in theoretical computer science is the P = NP problem, which involves the relationship between the complexity classes P and NP. The Clay Mathematics Institute has offered a $1 million US prize for the first correct proof, along with prizes for six other mathematical problems.

Topics in discrete mathematics

Theoretical computer science

Main article: Theoretical computer science

Complexity studies the time taken by algorithms, such as this sorting routine.

Theoretical computer science includes areas of discrete mathematics relevant to computing. It draws heavily on graph theory and logic. Included within theoretical computer science is the study of algorithms for computing mathematical results. Computability studies what can be computed in principle, and has close ties to logic, while complexity studies the time taken by computations. Automata theory and formal language theory are closely related to computability. Petri nets and process algebras are used to model computer systems, and methods from discrete mathematics are used in analyzing VLSI electronic circuits. Computational geometry applies algorithms to geometrical problems, while computer image analysis applies them to representations of images. Theoretical computer science also includes the study of various continuous computational topics.

Information theory

Main article: Information theory

The ASCII codes for the word "Wikipedia", given here in binary, provide a way of representing the word in information theory, as well as for information-processing algorithms.

Information theory involves the quantification of information. Closely related is coding theory which is used to design efficient and reliable data transmission and storage methods. Information theory also includes continuous topics such as: analog signals, analog coding, analog encryption.

Logic

Main article: Mathematical logic

Logic is the study of the principles of valid reasoning and inference, as well as of consistency, soundness, and completeness. For example, in most systems of logic (but not in intuitionistic logic) Peirce's law (((P>Q)>P)>P) is a theorem. For classical logic, it can be easily verified with a truth table. The study of mathematical proof is particularly important in logic, and has applications to automated theorem proving and formal verification of software.

Logical formulas are discrete structures, as are proofs, which form finite trees or, more generally, directed acyclic graph structures (with each inference step combining one or more premise branches to give a single conclusion). The truth values of logical formulas usually form a finite set, generally restricted to two values: true and false, but logic can also be continuous-valued, e.g., fuzzy logic. Concepts such as infinite proof trees or infinite derivation trees have also been studied, e.g. infinitary logic.

Set theory

Main article: Set theory

Set theory is the branch of mathematics that studies sets, which are collections of objects, such as {blue, white, red} or the (infinite) set of all prime numbers. Partially ordered sets and sets with other relations have applications in several areas.

In discrete mathematics, countable sets (including finite sets) are the main focus. The beginning of set theory as a branch of mathematics is usually marked by Georg Cantor's work distinguishing between different kinds of infinite set, motivated by the study of trigonometric series, and further development of the theory of infinite sets is outside the scope of discrete mathematics. Indeed, contemporary work in descriptive set theory makes extensive use of traditional continuous mathematics.

Combinatorics

Main article: Combinatorics

Combinatorics studies the way in which discrete structures can be combined or arranged. Enumerative combinatorics concentrates on counting the number of certain combinatorial objects - e.g. the twelvefold way provides a unified framework for counting permutations, combinations and partitions. Analytic combinatorics concerns the enumeration (i.e., determining the number) of combinatorial structures using tools from complex analysis and probability theory. In contrast with enumerative combinatorics which uses explicit combinatorial formulae and generating functions to describe the results, analytic combinatorics aims at obtaining asymptotic formulae. Design theory is a study of combinatorial designs, which are collections of subsets with certain intersection properties. Partition theory studies various enumeration and asymptotic problems related to integer partitions, and is closely related to q-series, special functions and orthogonal polynomials. Originally a part of number theory and analysis, partition theory is now considered a part of combinatorics or an independent field. Order theory is the study of partially ordered sets, both finite and infinite.

Graph theory

Main article: Graph theory

Graph theory has close links to group theory. This truncated tetrahedron graph is related to the alternating group A4.

Graph theory, the study of graphs and networks, is often considered part of combinatorics, but has grown large enough and distinct enough, with its own kind of problems, to be regarded as a subject in its own right. Graphs are one of the prime objects of study in Discrete Mathematics. They are among the most ubiquitous models of both natural and human-made structures. They can model many types of relations and process dynamics in physical, biological and social systems. In computer science, they represent networks of communication, data organization, computational devices, the flow of computation, etc. In Mathematics, they are useful in Geometry and certain parts of Topology, e.g. Knot Theory. Algebraic graph theory has close links with group theory. There are also continuous graphs, however for the most part research in graph theory falls within the domain of discrete mathematics.

Probability

Main article: Discrete probability theory

Discrete probability theory deals with events that occur in countable sample spaces. For example, count observations such as the numbers of birds in flocks comprise only natural number values {0, 1, 2, ...}. On the other hand, continuous observations such as the weights of birds comprise real number values and would typically be modeled by a continuous probability distribution such as the normal. Discrete probability distributions can be used to approximate continuous ones and vice versa. For highly constrained situations such as throwing dice or experiments with decks of cards, calculating the probability of events is basically enumerative combinatorics.

Number theory

The Ulam spiral of numbers, with black pixels showing prime numbers. This diagram hints at patterns in the distribution of prime numbers.

Main article: Number theory

Number theory is concerned with the properties of numbers in general, particularly integers. It has applications to cryptography, cryptanalysis, and cryptology, particularly with regard to modular arithmetic, diophantine equations, linear and quadratic congruences, prime numbers and primality testing. Other discrete aspects of number theory include geometry of numbers. In analytic number theory, techniques from continuous mathematics are also used. Topics that go beyond discrete objects include transcendental numbers, diophantine approximation, p-adic analysis and function fields.

Algebra

Main article: Abstract algebra

Algebraic structures occur as both discrete examples and continuous examples. Discrete algebras include: boolean algebra used in logic gates and programming; relational algebra used in databases; discrete and finite versions of groups, rings and fields are important in algebraic coding theory; discrete semigroups and monoids appear in the theory of formal languages.

Calculus of finite differences, discrete calculus or discrete analysis

Main article: finite difference

A function defined on an interval of the integers is usually called a sequence. A sequence could be a finite sequence from some data source or an infinite sequence from a discrete dynamical system. Such a discrete function could be defined explicitly by a list (if its domain is finite), or by a formula for its general term, or it could be given implicitly by a recurrence relation or difference equation. Difference equations are similar to a differential equations, but replace differentiation by taking the difference between adjacent terms; they can be used to approximate differential equations or (more often) studied in their own right. Many questions and methods concerning differential equations have counterparts for difference equations. For instance where there are integral transforms in harmonic analysis for studying continuous functions or analog signals, there are discrete transforms for discrete functions or digital signals. As well as the discrete metric there are more general discrete or finite metric spaces and finite topological spaces.

Geometry

Computational geometry applies computer algorithms to representations of geometrical objects.

Main articles: discrete geometry and computational geometry

Discrete geometry and combinatorial geometry are about combinatorial properties of discrete collections of geometrical objects. A long-standing topic in discrete geometry is tiling of the plane. Computational geometry applies algorithms to geometrical problems.

Topology

Although topology is the field of mathematics that formalizes and generalizes the intuitive notion of "continuous deformation" of objects, it gives rise to many discrete topics; this can be attributed in part to the focus on topological invariants, which themselves usually take discrete values. See combinatorial topology, topological graph theory, topological combinatorics, computational topology, discrete topological space, finite topological space, topology (chemistry).

Operations research

Main article: Operations research

PERT charts like this provide a business management technique based on graph theory.

Operations research provides techniques for solving practical problems in business and other fields — problems such as allocating resources to maximize profit, or scheduling project activities to minimize risk. Operations research techniques include linear programming and other areas of optimization, queuing theory, scheduling theory, network theory. Operations research also includes continuous topics such as continuous-time Markov process, continuous-time martingales, process optimization, and continuous and hybrid control theory.

Game theory, decision theory, utility theory, social choice theory

Cooperate Defect

Cooperate -1, -1 -10, 0

Defect 0, -10 -5, -5

Payoff matrix for the Prisoner's dilemma, a common example in game theory. One player chooses a row, the other a column; the resulting pair gives their payoffs

Decision theory is concerned with identifying the values, uncertainties and other issues relevant in a given decision, its rationality, and the resulting optimal decision.

Utility theory is about measures of the relative economic satisfaction from, or desirability of, consumption of various goods and services.

Social choice theory is about voting. A more puzzle-based approach to voting is ballot theory.

Game theory deals with situations where success depends on the choices of others, which makes choosing the best course of action more complex. There are even continuous games, see differential game. Topics include auction theory and fair division.

Discretization

Main article: Discretization

Discretization concerns the process of transferring continuous models and equations into discrete counterparts, often for the purposes of making calculations easier by using approximations. Numerical analysis provides an important example.

Discrete analogues of continuous mathematics

There are many concepts in continuous mathematics which have discrete versions, such as discrete calculus, discrete probability distributions, discrete Fourier transforms, discrete geometry, discrete logarithms, discrete differential geometry, discrete exterior calculus, discrete Morse theory, difference equations, discrete dynamical systems, and discrete vector measures.

In applied mathematics, discrete modelling is the discrete analogue of continuous modelling. In discrete modelling, discrete formulae are fit to data. A common method in this form of modelling is to use recurrence relations.

Hybrid discrete and continuous mathematics

The time scale calculus is a unification of the theory of difference equations with that of differential equations, which has applications to fields requiring simultaneous modelling of discrete and continuous

Structure (mathematical logic)

From Wikipedia, the free encyclopedia

In universal algebra and in model theory, a structure consists of a set along with a collection of finitary operations and relations which are defined on it.

Universal algebra studies structures that generalize the algebraic structures such as groups, rings, fields, vector spaces and lattices. The term universal algebra is used for structures with no relation symbols.

Model theory has a different scope that encompasses more arbitrary theories, including foundational structures such as models of set theory. From the model-theoretic point of view, structures are the objects used to define the semantics of first-order logic. In model theory a structure is often called just a model, although it is sometimes disambiguated as a semantic model when one discusses the notion in the more general setting of mathematical models. Logicians sometimes refer to structures as interpretations.

In database theory, structures with no functions are studied as models for relational databases, in the form of relational models.

Contents

1 Definition

1.1 Domain

1.2 Signature

1.3 Interpretation function

1.4 Examples

2 Induced substructures and closed subsets

2.1 Examples

3 Homomorphisms and embeddings

3.1 Homomorphisms

3.2 Embeddings

3.3 Example

3.4 Homomorphism problem

4 Structures and first-order logic

4.1 Satisfaction relation

4.2 Definable relations

4.2.1 Definability with parameters

4.2.2 Implicit definability

5 Many-sorted structures

6 Other generalizations

6.1 Partial algebras

6.2 Structures for typed languages

6.3 Higher-order languages

6.4 Structures that are proper classes

7 Notes

8 References

9 External links

Definition

See also: Model theory#Universal algebra and Universal algebra#Basic idea

Formally, a structure can be defined as a triple consisting of a domain A, a signature ?, and an interpretation function I that indicates how the signature is to be interpreted on the domain. To indicate that a structure has a particular signature ? one can refer to it as a ?-structure.

Domain

The domain of a structure is an arbitrary set; it is also called the underlying set of the structure, its carrier (especially in universal algebra), or its universe (especially in model theory). Very often the definition of a structure prohibits the empty domain.

Sometimes the notation or is used for the domain of , but often no notational distinction is made between a structure and its domain. (I.e. the same symbol refers both to the structure and its domain.)

Signature

Main article: Signature (logic)

The signature of a structure consists of a set of function symbols and relation symbols along with a function that ascribes to each symbol s a natural number which is called the arity of s because it is the arity of the interpretation of s.

Since the signatures that arise in algebra often contain only function symbols, a signature with no relation symbols is called an algebraic signature. A structure with such a signature is also called an algebra; this should not be confused with the notion of an algebra over a field.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]