github vaticle/typedb 1.6.1
Grakn Core 1.6.1

latest releases: 2.28.0-rc0, 2.27.0, 2.27.0-rc0...
4 years ago

Install & Run: http://dev.grakn.ai/docs/running-grakn/install-and-run

New Features

  • Use keyspace stats for determining instance existence in RuleCache.
    To prioritise using keyspace statistics for determining whether a type has instances (instead of using concept api) - fetching from keyspace statistics is much cheaper than checking the DB.

  • Revise query cache behaviours.
    To revise the query cache behaviours so that we can increase the cache efficiency. In certain scenarios query results weren't reused when they could have. The specific scenario we address here is when there is a subsumption relation between a cache query and input query up to the choice of ids - which we refer to as structural subsumption.
    Previously, we stored query cache entries with specific IDs attached in the lookup key. This led to a second layer of stored IDs that are all valid substitutions into the query. Effectively, the specific IDs attached at the lookup key are placeholders that we now ignore (using structural subsumption), and so can find all the IDs matching a query rather than a specific one.

Bugs

  • Ensure query cache doesn't return duplicate answers.
    We had a mismatch between what SessionService was expecting from the QueryCache, namely it didn't expect it to return duplicate answers. Duplicate answers could have been returned in cases when the entry query had some inferred entries in the cache but the entry wasn't dbComplete. In that case we would mix a full DB fetch of answers with what we have in cache. We correct the mismatch by making sure QueryCache doesn't return duplicates when mixing these.

Code Refactors

  • Bring back the previous LogInstanceCount behaviour.
    Revert the getLogInstanceCount function to previous behaviour as the query planner needs updating to implement the function in a more granular fashion.

  • Split //kb/graql into Subpackages.
    Split the //kb/graql package into subpackages for reasoner, executor, analytics, planning, and exception, further cleaning up our dependency graph. The finer granularity allows us to control package access and prevent unneccesarily exposed classes. It also will allow us to change smaller code regions at a time.

  • Split Grakn Interface Mega-package.
    Further split large packages into smaller ones that continue to have a good code and data flow. In this case, we split the kb package of interfaces into sub-packages: //kb/server, //kb/graql/ and //kb/keyspace. The keyspace package is a new layer that contains all session/keyspace level shared data structures, such as KeyspaceStatistics, KeyspaceSchemaCache, etc. For future reference, these also need alternative implementations on KGMS.
    We also remove overexposed methods on Transaction, fix tests, and remove //concept/util/attribute special attribute utils (now live in //concept/impl directly with better naming)

  • Split GraknTestServer.
    When performing integration tests for Grakn's components such as reasoner, queries... we should not be starting the full Grakn server and extracting parts of the running server. Instead, we should start Cassandra and build only the required components for the tests we wish to run. This change enables us to start Cassandra as a test rule separately from the full GraknTestServer.

  • Refactor architecture - Removing transaction dependencies.
    We remove Transaction from throughout reasoner, executors, etc. We make explicit dependencies on ConceptManager, ReasonerQueryFactory, ExecutorFactory, and the various caches. Dependencies are injected as collaborators, unneeded static factories and class hierarchies are removed, and methods live in the correct packages.

Don't miss a new typedb release

NewReleases is sending notifications on new releases.