
| | |
|
|  | |
 |  |  |  | |  | | | | 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 0.11 graphical environment (screenshot) as released in Download.
- It has been configured for Datalog syntax highlighting, command buttons and interactive console, therefore easing its use by decreasing the number of keystrokes (It applies to executable distributions).
Emacs-enabled: Query languages: - Enjoy the power of deductive databases using Datalog, Extended Relational Algebra and SQL, all of them recursive.
- 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.
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 both Datalog and SQL processing. Discard duplicates with distinct/1 and distinct/2
Hypothetical queries and rules - Use the implication => to build “what-if” applications in a business intelligence scenario
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: - 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 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 programs: - Did you ever looked for a working declarative debugger? Debug towards intended semantics rather than procedural semantics!
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!
Full-fledged arithmetic: - Write arithmetical expressions with a wide set of arithmetical functions, operators and constants.
Type system for Datalog rules and SQL tables and views: - Feel the benefits of typed relations and type inference.
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 speeding-up computations.
Development mode: - Enable it to understand how the system works. See the transformed program and examine nulls.
Pretty-printers: - For SQL, RA and Datalog programs. Feel free to enable or disable pretty-print.
Batch execution: - Provide a file with DES inputs and log the results into another file.
Connect 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 (but 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.
- Some incorrect SQL statements are not rejected (as those containing a GROUP BY clause and columns in the projection list which do not occur in the grouping list).
- Computable SQL statements follow the grammar in user manual. The current grammar parses extra clauses which cannot be computed yet (e.g., ALL, ANY, ...)
- Hypothetical queries cannot be used in view definitions
Bottomline: Most CONS became PROS along time, so: What we would expect from DES in the future? Keep an eye on the next version!
|
|