| | |
|
| | |
| | | | | | | | | PROS: Free, Multiplatform, Portable, Open-source: - It can be used in any OS platform (Windows, Mac, Linux, ...), running on one of the supported Prolog interpreters.
- Moreover, portable executable applications are provided for Windows, Mac, and Linux.
Interactive: - Based on a command line interpreter, you can play with DES submitting queries, modifying the database, and applying commands.
GUI: - You can use the Java-based ACIDE graphical environment (screenshot) as released in Download.
- It has been configured for Datalog, SQL and RA syntax highlighting, command buttons and interactive console, therefore easing its use by decreasing the number of keystrokes.
Emacs-enabled: Query languages: - Enjoy the power of deductive databases using Datalog, Extended Relational Algebra (RA) and SQL, all of them recursive.
- Inspect equivalent formulations in different languages for your queries (SQL - Datalog, RA - SQL - Datalog).
- Share a common database of relations which can be defined with any of these languages, and query it with any of them too!
Live project: - Expect a new release every 2 or 3 months (even less!).
(Are you aware of development versions?)
Stable system: - Few bugs have been reported.
Popular system: Database updates: - Modify the database with both SQL DML and system commands.
Null values: - Take the responsibility of unknowness á la SQL at your own risk!
Outer joins: - If nulls are allowed, why not use outer joins: left, right and full outer joins for SQL, RA and Datalog?
Aggregates: - Summarize with count, sum, min, max, avg, and times for SQL, RA and Datalog.
- Find both predicate and functions versions of Datalog aggregates.
- Group data sets and filter with aggregates.
- Quickly build groups on-the-fly with Datalog auto-grouping.
Multisets: - Enable or disable duplicates in Datalog, RA and SQL processing. Discard duplicates with distinct/1 and distinct/2.
Hypothetical queries, views and rules - Use the implication => to build “what-if” applications in a business intelligence scenario.
- Use the ASSUME SQL clause to build hypothetical queries and views.
Relational database access via ODBC: - ODBC sources of data can be seamlessly accessed. Connect DES to any DBMS supporting such connections (MySQL, MS Access, Oracle, ...)
Persistency: - Make predicates to persist on external data sources via ODBC connections.
Modes: - An input mode warns users about the need to ground an argument for an unsafe predicate.
Negation: - Don’t expect much more than stratified negation and null flaws.
Novel and extended SQL features: - Semantic checking of SQL statements.
- Enforcement of functional dependencies.
- Hypothetical queries:
Let's assume data which is not in the database and play with decision-support systems. - DIVISION relational operation:
Use it in SQL as well as in RA. (Don’t miss it with the arithmetic operator!) - Mutual and non-linear recursion
That’s ok, but, may I use this novel features with external databases, such as MySQL? Yes! Even with DB2, PostgreSQL, SQL Server and any DBMS connected with ODBC
Integrity constraints: - Domain.
- Types.
- Primary keys.
- Referential integrity.
- Functional dependency.
Even for SQL CREATE TABLE definitions. (Why don’t we have this in current DBMS’s already?) - User-defined strong constraints.
- Enable or disable constraint checking.
Declarative debugging of Datalog and SQL: - Did you ever looked for a working declarative debugger? Debug towards intended semantics rather than procedural semantics!
- Try it also with external databases: DB2, MySQL, PostgreSQL and Oracle.
Test case generation for SQL views: - Try this prototype for working with views over large tables and test them with the test cases, not with the actual tables!
SQL database generator: - If you need SQL database instances for your benchmarks, generate them randomly at will.
Full-fledged arithmetic: - Write arithmetical expressions with a wide set of arithmetical functions, operators and constants.
Type system for Datalog, SQL, RA, TRC and DRC: - Feel the benefits of typed relations and type inference.
- Do you need automatic type casting ŕ la SQL? Just enable it with /type casting on
Source-to-source program transformations: - Safety. Enable safe transformations to execute safe rules. Experiment with unsafe rules.
- Performance. Enable simplifications to speed-up computations.
- Built-ins. Programs with outer join calls are transformed in order to be computed by the underlying tabled, fixpoint method.
Tabling-based implementation: - Memo tables are used for implementing fixpoint and caching computations.
Development mode: - Enable it to understand how the system works. See the transformed program and examine nulls.
Configurable look and feel: - Pretty-printers for Datalog, RA and SQL.
- Single and multiline modes.
- Examine the SQL statements sent to the external database for persistent predicates (/show_sql on) and results from RA compilations.
Batch execution: - Provide a file with DES inputs and log the results into another file.
- Use batch commands for execution control.
Connecting DES to the outside world: - Plug DES to a host system via standard streams.
- Try the new TAPI as released since version 2.5.
You can connect DES to any development system! Java, C++, VB, Python, ...
CONS: Not all is good. Consider that this is an educational system primarily supported by one developer. So: - Do not expect DES to beat any performance mark.
- Do not expect DES to handle large amounts of data (except for external ODBC databases).
- Datalog:
- No compound terms as arguments in user relations.
- No database updates via Datalog rules are allowed.
- SQL:
- Table and column identifiers are case sensitive.
- Computable SQL statements follow the grammar in the user manual. The current grammar parses extra clauses which cannot be computed yet (e.g., ALL, ANY, ...)
Bottomline: Most CONS became PROS along time, so: What we would expect from DES in the future? Keep an eye on the next version!
|
|