News
Today, we’ve shipped a new version 0.2.2 of droonga-client-ruby!
It provides client library for Ruby and command line tools.
Most important topic of this version is: now the droonga-groonga command supports multiple commands given via the standard input, like Groonga’s groonga command.
For example, you can apply your schema definition to a Droonga cluster like as:
$ cat /path/to/schema.grn | droonga-groonga --host node0 --port 10031
You already been able to get similar result by a combination of grn2drn and the droonga-request command, but now you can do it by only one simple command droonga-groonga easily.
Let’s try Droonga via the command, if you are familiar to Groonga!
Moreover, droonga-add, droonga-system-status and droonga-groonga now support a new command line option --dry-run.
You’ll do it to forecast what’s happen on the cluster by thoese commands.
Droonga project welcomes you to join us as a user and/or a developer! See community to contact us!
The reference manual of command line tools is now available!
It covers major command line tools provided by Droonga and related projects, so it will help you to read tutorials and try to Droonga.
Very sorry for this delay, now we’ve released Droonga 1.1.0 with a long-cherished feature!
What’s Droonga?
Droonga is a distributed full text search engine, compatible to Groonga.
A Droonga cluster works like an HTTP server compatible to Groonga with the replication feature.
Are you interested in Droonga: how it works and how useful?
Let’s try the tutorial for an introduction, and see the overview to understand Droonga’s design strategy more and more.
True hot-add of replica nodes is now available!
The most important topic on this release Droonga 1.1.0 is true hot-add of replica nodes.
It was one of long-planned features of Droonga, but we’ve got it.
Now you can add new replica nodes to your Droonga cluster without any downtime, even if you don’t stop crawling/adding new data!
To do it, you have to have two or more replicas in the cluster, except the new adding replica node.
For more information, see tutorial for adding replica nodes.
Detailed list of improvements
- Droonga-engine 1.1.0
- General:
- Graceful stopping/restarting works correctly with continual inpouring messages.
- A new parameter
single_operation is introduced to single step definitions.
If you set it to true, messages for the handler will be delivered to just single volume (one of replicas and slices).
It is useful for commands which has to be executed only once in a cluster, like system.status.
- A new parameter
use_all_replicas is introduced to single step definitions.
If you set it to true, messages for the handler will be delivered to all replica volumes always.
It is useful for commands which has to be executed all replicas, like system.statistics.object.count.per-volume.
add command now accepts requests with automatically-convertible mismatched type keys.
For example, a string key "1" is available for a table with the key type UInt32.
dump command: the value of a column referring any record of another table are correctly exported as its key string, instead of object value (it’s invalid value for a message of the add command).
As the result, now tables with reference columns are correctly copied between multiple clusters.
dump command: records in a table which has only one column _key are exported correctly.
dump command: forwarded messages are now have their own date field.
Collectors::RecursiveSum is introduced.
system.status command: now the reporter node and its internal name is reported as a part of response body.
system.statistics.object.count command is now available. It is used by command line utilities internally.
system.statistics.object.count.per-volume command is now available. It is useful to confirm equivalence of replicas.
system.absorb-data command is now available. It is used by command line utilities internally.
- Message format:
targetRole field is introduced to the envelope.
Now you can specify the role of the engine node which can process the messsage.
If mismatched role node receives the message, it will be bounced to suitable node automatically if possible.
timeout field is introduced to the envelope.
Now you can specify time to expire the request, in seconds.
- Command line utilities:
droonga-engine-join and droonga-engine-absorb-data commands work more surely.
- A new option
--verbose is introduced to monitor internal Serf operations, for droonga-engine-join and droonga-engine-absorb-data.
- A new command line utility
droonga-engine-set-role is available (mainly for debugging).
- Compatibility with Groonga:
- Better compatibility to Groonga’s
delete command:
- Works correctly for tables with integer key types.
The report by funa1g inspired this improvement. Thanks!
- Accepts requests with automatically-convertible mismatched type keys.
For example, a numeric key
1 is available for a table with the key type ShortText.
- Droonga-http-server 1.1.2
- Bump required version of
express-droonga.
- Express-droonga 1.0.9
- Updated for the latest Droonga Engine 1.1.0.
- Supports uber-cache 2.0.0.
- New endpoints are introduced to inspect connections to Droonga Engine nodes.
/engines returns the list of currently conencted Droonga Engine nodes.
/connections returns detailed status of internal connections to Droonga Engine nodes.
- Always reconnects to Droonga Engine nodes when there is any change around the Droonga cluster.
- Query parameters for
/droonga/* endpoints are used as the message body.
- Drndump 1.0.1
- Becomes modulable. You can use internal libraries for other products.
- Drntest 1.2.0
- Improvements
- Supported new directives to activate/diactivate completion and validation of messages.
#@enable_completion and #@disable_completion controls completion of request messages.
Required fields of request messages are automatically completed by default.
#@enable_validation and #@disable_validation controls validation of request messages.
Messages are validated by default.
#@subscribe-until directive, for subscription type commands like dump.
You can unsubscribe the next request following to the directive automatically with given timeout, like:
#@subscribe-until 10s
- A
NO RESPONSE result is now returned immediately, for a stalled engine process.
- Invalid format responses for Groonga commands are now ignored.
- Droonga-client-ruby 0.2.1
- Required fields of input messages are automatically completed by default.
- Input messages are automatically validated by default.
- Timeout option for subscription is available.
You can unsubscribe subscription automatically with specified timeout, like:
client.subscribe(request, :subscription_timeout => 10)
- New utility commands are available as shorthand.
droonga-system-status: allows you to send a system.status request to the cluster easily.
droonga-add: allows you to send an add request to the cluster easily.
droonga-groonga: works like the groonga command.
- droonga-send, droonga-request:
- A new option
--[no-]completion is introduced.
You should specify --no-completion to send incomplete messages intentionally.
- A new option
--[no-]validation is introduced.
You should specify --no-validation to send invalid messages intentionally.
- A new option
--default-dataset is introduced.
It is used for sending messages if they have no dataset field.
- A new option
--default-target-role is introduced.
It is used for sending messages if they have no targetRole field.
- The “date” field is filled with the format same to droonga-engine’s internal one
like “2015-04-08T06:16:20.571303Z”.
Conclusion
- Droonga 1.1.0 has been released!
- Now you can add new replica to the cluster without any downtime.
- Droonga project will release a new version continuously!
Droonga project welcomes you to join us as a user and/or a developer! See community to contact us!
Thank you for your entry to our conference “Groonga Night 5th” at 2014-11-29!
Droonga 1.0.9 is an extra release.
On the session at the conference, we have some troubles.
Those issues have been fixed at this release!
Improvements of Droonga 1.0.9
First, now droonga-engine-join, droonga-engine-unjoin, and droonga-engine-absorb-data are runnable on any node.
In old versions, those commands had some elusive preconditions, so they were inconvenience a little.
Second, unjoined nodes are correctly invisible from droonga-http-servers.
At the previous version, droonga-http-server unexpectedly kept connections to droonga-engine nodes even if they were already unjoined from the cluster.
Now droonga-engine nodes manage their relations by unique id for each Droonga cluster, and droonga-http-server can detect which engine node was unjoined by the cluster’s id.
These fixes will let you more easy to try Droonga!
Detailed list of improvements
- Droonga-engine 1.0.9
droonga-engine-join, droonga-engine-unjoin, and droonga-engine-absorb-data work on any host.
Instead, you have to specify the host name or the IP address of the working host via the --receiver-host option.
- Clusters are managed with their own unique id.
In previous version, a node unjoined from the Droonga cluster is still a member of the Serf cluster, and there is no
information that protocol adapter nodes detect which is actual member or not.
- Droonga-http-server 1.1.0 and Express-droonga 1.0.8
- Connects to active engine nodes of the cluster of the associated engine node correctly.
Previous version unexpectedly kept connections to already unjoined engine nodes.
Conclusion
- Droonga 1.0.9 has been released!
- Some inconvenience limitations of cluster management commands are solved.
droonga-http-server now works as you expected after cluster management operations.
- Droonga project will release a new version every month!
Droonga project welcomes you to join us as a user and/or a developer! See community to contact us!
What’s Droonga?
Droonga is a distributed full text search engine, compatible to Groonga.
A Droonga cluster works like an HTTP server compatible to Groonga with the replication feature.
Are you interested in Droonga: how it works and how useful?
Let’s try the tutorial for an introduction, and see the overview to understand Droonga’s design strategy more and more.
Improvements in Droonga 1.0.8
This release Droonga 1.0.8 contains many improvements.
Major topics are here:
Orchestration of front-end HTTP server nodes
A front-end HTTP server node based on droonga-http-server has become to a member of the Droonga cluster truly.
In old versions, a droonga-http-server node was strongly bound to a droonga-engine node.
So, if a droonga-engine node died, droonga-http-server nodes associated to the droonga-engine node also died.
But now, the limitation has been gone.
Even if one of droonga-engine node become unavailable, droonga-http-server nodes keep them working with active droonga-engine nodes automatically.
Moreover, a droonga-http-server node distributes requests from clients to multiple droonga-engine nodes.
In other words, now it works like a simple load balancer.
The performance issue around groupBy is solved for replicas with single slices.
Moreover, search operations with offset option also optimized.
Benchmark results (comparisons with Groonga) are here:

Conditions:
- There are 1500000 records from Wikipedia (Japanese)
- All requests are full-text search queries for actual page titles, with drilldown, like:
/d/select?command_version=2&table=Pages&limit=10&match_columns=title,text&output_columns=snippet_html(title),snippet_html(text),categories,_key&query_flags=NONE&sortby=title&drilldown=categories&drilldown_limit=10&drilldown_output_columns=_id,_key,_nsubrecs&drilldown_sortby=_nsubrecs&query=Wikipedia%3AText+of+GNU+Free+Documentation+License
- Supposed cache hit rate is 50%.
- Measured on physical PCs for development.
- node0: Ubuntu 14.04LTS, Intel Core i5 M460 2.53GHz, 8GB RAM
- node1: Ubuntu 14.04LTS, Intel Core i5 650 3.20GHz, 6GB RAM
- node2: Ubuntu 14.04LTS, Intel Core i5 650 3.20GHz, 8GB RAM
- client: Ubuntu 14.04LTS, Intel Core i5-4300U vPro 1.90GHz, 4GB RAM
Detailed results are downloadable.
As above, currently throughput performance of single Droonga node is comparable to Groonga.
Moreover, throughput limit can be extended by adding more Droonga nodes to the cluster.
On the other hand, there is a little latency basically on Droonga.
However, large number accesses turn the advantage around the upper limit of Groonga.
If there are too many requests, Droonga can respond quickly than Groonga.
Better compatibility to Groonga
Some minor incompatibilities have been corrected.
select command:
- The
output_columns option accepts whitespace-separated list of column names (compatible to Groonga’s command_version=1 form.)
output_columns=* works correctly for TABLE_NO_KEY tables.
column_list command:
- A
_key virtual column is correctly appear in the result, for tables with one of flags: TABLE_HASH_KEY, TABLE_PAT_KEY, and TABLE_DAT_KEY.
- At an index column, its
source is now compatible to Groonga’s one.
table_create command:
- The
key_type parameter becomes required for TABLE_HASH_KEY, TABLE_PAT_KEY, and TABLE_DAT_KEY tables.
You’ll get an error response, if the parameter is not given.
(Groonga unexpectedly accepts table_create requests without key_type parameter, but it is a known issue.)
Detailed list of all improvements
- Droonga-engine 1.0.8
- Better compatibility to Groonga’s
select, column_list, and table_create commands.
(See above)
- The
daemon option is now ignored in the static configuration file.
Now, you always have to specify --daemon option for the droonga-engine command
to start it as a daemon.
- The
droonga-engine-configure command now shows prompts for all options always.
- The rate of absorbed records are limited to 100 records per second by default, for
droonga-engine-absorb-data and droonga-engine-join commands.
droonga-engine-absorb-data and droonga-engine-join commands now report their progress, if possible.
- Droonga-http-server 1.0.9
- A new
--host option is available to restrict the listening IP address.
The default value is 0.0.0.0 (meaning listen all IP addresses).
- A new
--cache-ttl-in-seconds option is available to set the time to live of cached responses, in seconds.
The default value is 60 (meaning 1 minute).
- A new
--disable-trust-proxy option is available to disable the feature
even if it is activated by the static configuration file.
- A new
--document-root option is available to specify the document root.
It is the path to the built-in Groonga admin page by default.
- The
daemon option is now ignored in the static configuration file.
Now, you always have to specify --daemon option for the droonga-http-server command
to start it as a daemon.
- The
droonga-http-server-configure command now shows prompts for all options always.
- Responses for most commands are never cached.
Now, only responses based on
search or Groonga’s select commands and the administration page are cached.
- A new endopoint
/cache is introduced to clear all response caches.
To clear cached contents, send an HTTP DELETE request to the path.
- Improvements from
express-droonga itself.
(See below)
- Express-droonga 1.0.7
- Supports multiple Droonga Engine nodes as its backends.
Now
express-droonga can work like a load balancer.
- The list of connecting Droonga Engine nodes can be automatically updated
based on the actual list of active members in the cluster.
This feature is activated by the
syncHostNames option for the application.droonga() method.
- Drnbench 1.0.4
drnbench-request-response
- Not only top slow requests, but top fast requests are also reported.
It will help you to detect “strange good” results from invalid queries or something.
The number of reported fast requests can be customized via the new
--n-fast-requests option.
- Virtual clients are working with multiple processes.
If there are multiple processors in your computer, drnbench uses them more effectively.
- Drntest 1.1.7 (released at 2014-11-18)
- Accept virtual column like
_key as a part of Groonga’s column_list command response.
Conclusion
- Droonga 1.0.8 has been released!
- Front-end HTTP server nodes are now orchestrated as nodes in the cluster.
Droonga clusters now work more robustly.
- The throughput performance is comparable to / better than Groonga now.
- It becomes more compatible to Groonga.
- Droonga project will release a new version every month!
Droonga project welcomes you to join us as a user and/or a developer! See community to contact us!
What’s Droonga?
Droonga is a distributed full text search engine, compatible to Groonga.
A Droonga cluster works like an HTTP server compatible to Groonga with the replication feature.
Are you interested in Droonga: how it works and how useful?
Let’s try the tutorial for an introduction, and see the overview to understand Droonga’s design strategy more and more.
A fatal issue of service scripts is fixed!
Droonga 1.0.7 is an urgent release.
Service scripts introduced at Droonga 1.0.6 had a fatal issue - installed droonga-engine and droonga-http-server services cannot be started after the computer is rebooted.
This problem has been fixed on 1.0.7.
Because service scripts are updated, you have to re-install droonga-engine and droonga-http-server by installation scripts like:
# curl https://raw.githubusercontent.com/droonga/droonga-engine/master/install.sh | \
bash
# curl https://raw.githubusercontent.com/droonga/droonga-http-server/master/install.sh | \
bash
Other major topics are:
- There is an improvement about compatibility to Groonga:
droonga-engine 1.0.7 now supports query_flags of Groonga’s select command, except ALLOW_UPDATE.
Droonga can process queries from your application, even if your application uses non-default query_flags.
- Now you can specify the log level of
droonga-http-server’s system log.
To set log leve, run the droonga-http-server-configure command as root and reconfigure your service.
- A new tutorial for benchmarking of Droonga and Groonga is now available.
It describes how to measure (and compare) performance of Groonga and Droonga.
Detailed list of improvements
- Droonga-engine 1.0.7
- Better compatibility to Groonga:
select command now supports query_flags option.
Note: ALLOW_UPDATE is ignored even if you specify, because it is not implemented in Droonga yet.
saerch command has some improvements.
- The value
false for allowPragma and allowColumn options in query syntax search conditions is correctly applied.
In old versions, they options are always true even if you intentionally specified false for them.
allowLeadingNot option is available in query syntax search conditions.
It is false by default.
- Works correctly as a service even if you restarted the computer itself.
droonga-engine-configure now asks the log level.
- Droonga-http-server 1.0.8
- Works correctly as a service even if you restarted the computer itself.
- Log level of the system log is now customizable.
You just have to put a line like
system_log_level: debug into the droonga-http-server.yaml.
And, droonga-http-server-configure also asks the log level.
- Express-droonga 1.0.6
- Debug logs are now reported via given logger.
- Drnbench 1.0.3
drnbench-request-response
- Accept multiple hosts as a comma separated list via the
--default-hosts option.
You can simulate load balancing for multiple endpoints easily.
- Accept plain text file of a list of paths as the patterns file.
drnbench-extract-searchterms
- New
--escape option is introduced to escape URI-incompatible characters.
Conclusion
- Droonga 1.0.7 has been released!
- A fatal issue in service scripts is fixed.
- A new tutorial for benchmarking is available.
- Droonga project will release a new version every month!
Droonga project welcomes you to join us as a user and/or a developer! See community to contact us!
Sorry, long time no see.
We sadly skipped a release on the last month, however, we’ve been back with Droonga 1.0.6 and a great improvement!
What’s Droonga?
Droonga is a distributed full text search engine, compatible to Groonga.
A Droonga cluster works like an HTTP server compatible to Groonga with the replication feature.
Droonga became more easy-to-install!
The most important topic on this release Droonga 1.0.6 is the very easy installation.
Droonga’s main components, droonga-engine and droonga-http-server are now installable via script for each, so you just run scripts as the root, just like:
# curl https://raw.githubusercontent.com/droonga/droonga-engine/master/install.sh | \
bash
# curl https://raw.githubusercontent.com/droonga/droonga-http-server/master/install.sh | \
bash
Then droonga-engine and droonga-http-server are automatically registered as system services managed via the service command.
You just have to run simple commands to start/stop services, like:
# service droonga-engine start
# service droonga-http-server start
Moreover, utility commands to manage nodes in the cluster (like droonga-engine-join and droonga-engine-unjoin) also became more easy-to-use.
For more details, see the updated “getting started” tutorial and others.
On the other hand, there is a sad news:
Droonga’s installation scripts now work only for Debian, Ubuntu, and CentOS 7.
Other environments (for example CentOS 6.5, OS X, BSD… and more) are not supported yet.
So, if you have knowledges how to install required commands gem, npm (and git) and how to register custom services, please improve the installation script and send pull requests us!
For developers
The installation script works for not only the latest release, but the latest revision of the master branch also.
You just have to give an extra environment variable VERSION, like:
# curl https://raw.githubusercontent.com/droonga/droonga-engine/master/install.sh | \
VERSION=master bash
# curl https://raw.githubusercontent.com/droonga/droonga-http-server/master/install.sh | \
VERSION=master bash
Then the script tries to install services based on the master.
It will help you to try new fixes before the next release.
And, there is a new tutorial to prepare multiple virtual machines on your own PC.
It will help you to try Droonga casually.
Detailed list of improvements
- Droonga-engine 1.0.6
- The installation script is now available.
It automatically installs required softwares and configure the
droonga-engine as a system service.
Currently it works only for Debian, Ubuntu, and CentOS 7.
- The service works as a process belonging to a user
droonga-engine who is specific for the service.
The configuration directory for the service is placed under the home directory of the user.
- A static configuration file to define default parameters (
host and so on) is now available.
It must be placed into the directory same to catalog.json.
You don’t have to run droonga-engine command with many options, anymore.
droonga-engine-join now automatically fetches catalog.json from the specified source replica node.
Now you don’t have to copy catalog.json from another node before you run droonga-engine-join anymore.
- A new
catalog plugin is introduced as one of default plugins, to fetch catalog.json from existing cluster.
The list of plugins in your catalog.json must include it.
- A new command line utility
droonga-engine-configure is available.
It generates the static configuration file, the catalog.json for the service.
Moreover, it clears old stored data to make the node empty.
- Some options for utility commands become optional.
Important parameters are automatically detected.
- Restarts server processes more gracefully.
- Droonga-http-server 1.0.7
- The installation script is now available.
It automatically installs required softwares and configure the
droonga-http-server as a system service.
Currently it works only for Debian, Ubuntu, and CentOS 7.
- The service works as a process belonging to a user
droonga-http-server who is specific for the service.
The configuration directory for the service is placed under the home directory of the user.
- A static configuration file to define default parameters (
port and so on) is now available.
It must be placed into the configuration directory specified by the environment variable DROONGA_BASE_DIR.
You don’t have to run droonga-http-server command with many options, anymore.
- A new command line utility
droonga-http-server-configure is available.
It generates the static configuration file for the service.
- Cached responses are now returned correctly.
- Express-droonga 1.0.5
- Return cached responses correctly.
- Drntest 1.1.6
- Sort dump responses for stable test result.
- Use
--ready-notify-fd option to wait droonga-engine is ready.
- Grn2drn 1.0.4
- Create output directory automatically.
Conclusion
- Droonga 1.0.6 has been released!
- Droonga became more easy-to-use with simple installation method.
- Droonga project will release a new version every month!
Droonga project welcomes you to join us as a user and/or a developer! See community to contact us!
About Droonga
Droonga is a distributed full text search engine, compatible to Groonga.
It is designed as a scalable data processing engine, based on a stream oriented processing model.
In many operations (searching, updating, grouping, and so on), Droonga processes various data by pipeline.
As the result, Droonga has large potential around its flexibility and extensibility.
Moreover, those features provide high availability for people who develop any data processing engine based on Droonga.
You can process complex operations by mixing operations, and you can add custom operations to Droonga via plugins written as Ruby-scripts.
Are you interested in Droonga? See overview for more details, and try the tutorial.
You’ll understand how Droonga works with these documentations.
About this release
The current Droonga version is 1.0.5.
On this release, some stability issues are fixed.
Droonga becomes more safe, more usable.
Detailed list of improvements are:
- Droonga-engine 1.0.5
- Restarts server processes more gracefully.
- Works with search results with vector reference column values correctly.
- Messages forwarded to other nodes are always buffered for now.
- Works again for the case:
nWorkers == 0
- droonga-engine-join: Works correctly and safely for databases with much records.
- Droonga-http-server 1.0.6
- Provides Groonga’s administration page as the document root (
/) experimentally.
- Supports a new
--environment option to override the NODE_ENV environment variable.
And, related projects are also released:
- Droonga-client-ruby 0.1.9
- droonga-send: Accept default protocol, port, and tag. Now you can omit them for the
--server option.
- Drnbench 1.0.1
- Report throughput more correctly.
- Report percentages of returned HTTP statuses correctly.
- Report max elapsed time correctly.
- Add ability to report slow requests.
- Accept pattern group specific parameters.
Conclusion
- Droonga 1.0.5 has been released!
- On this version, some stability issues are fixed.
- Droonga project will release a new version every month!
Droonga project welcomes you to join us as a user and/or a developer! See community to contact us!
Today, we’ve released grn2drn 1.0.3.
On this version, grn2drn’s --dataset parameter became optional. If you omit the option, Default is used as the dataset.
And, now a new --encoding option is available for grn2drn. It will help you if you created Groonga’s database with non-UTF-8 encoding (Shift_JIS, EUC-JP, etc.)
About Droonga
Droonga is a distributed full text search engine, compatible to Groonga.
It is designed as a scalable data processing engine, based on a stream oriented processing model.
In many operations (searching, updating, grouping, and so on), Droonga processes various data by pipeline.
As the result, Droonga has large potential around its flexibility and extensibility.
Moreover, those features provide high availability for people who develop any data processing engine based on Droonga.
You can process complex operations by mixing operations, and you can add custom operations to Droonga via plugins written as Ruby-scripts.
Are you interested in Droonga? See overview for more details, and try the tutorial.
You’ll understand how Droonga works with these documentations.
About this release
The current Droonga version is 1.0.4.
The most important topic on this release is that new command line tools to modify cluster composition easily.
You don’t need to run various commands again and again anymore.
See dump-restore tutorial and another tutorial to add/remove replica.
The release has the following improvements:
- Droonga-engine 1.0.4
- New command (and plugin)
status is now available.
- New command line tools are available.
- Express-droonga 1.0.4
- Supports paths like
/droonga/(command name) with GET method.
- Supports paths like
/droonga/(command namespace)/(command name) with GET and POST method.
- Works with the Express 4.4.4.
Conclusion
- Droonga 1.0.4 has been released!
- With new command line tools, now you can join/unjoin nodes for existing clusters easily.
- Droonga project will release a new version every month!
Droonga project welcomes you to join us as a user and/or a developer! See community to contact us!
About Droonga
Droonga is a distributed full text search engine, compatible to Groonga.
It is designed as a scalable data processing engine, based on a stream oriented processing model.
In many operations (searching, updating, grouping, and so on), Droonga processes various data by pipeline.
As the result, Droonga has large potential around its flexibility and extensibility.
Moreover, those features provide high availability for people who develop any data processing engine based on Droonga.
You can process complex operations by mixing operations, and you can add custom operations to Droonga via plugins written as Ruby-scripts.
Are you interested in Droonga? See overview for more details, and try the tutorial.
You’ll understand how Droonga works with these documentations.
About this release
The current Droonga version is 1.0.3.
The most important topic on this release is that there are many improvements to use a Droonga cluster as a stable service.
Now Droonga nodes observe each other and keep the cluster working even if one of replicas is dead.
And you can add new replicas, remove existing replicas, and replace replicas with new one, without stopping of the cluster (only for “read-only” requests).
For more details, see the dump-restore tutorial and another tutorial to add replica.
The release has the following improvements:
- Droonga-engine 1.0.3
- Alive monitoring (based on Serf) lands.
Now, nodes in a cluster observe each other, and the cluster keeps working, even if one of replicas is dead.
- New commands to dump whole contents of an existing cluster are available.
They are used by [drndump][] internally.
- The command line tool
droonga-catalog-generate is renamed to droonga-engine-catalog-generate.
- Use
Default as the name of the default dataset for a catalog.json, generated by droonga-catalog-generate .
- The path of the configuration directory is now specified via an environment variable
DROONGA_BASE_DIR.
- Fix incompatibilities of the
select Groonga command.
- The default value of the
drilldown_output_columns option becomes same to Groonga’s one.
- Column values of
Time type clumns are returned as float numbers correctly.
- The message structure of results becomes same to Groonga.
In previous version, records are wrongly wrapped in an array.
- Improve features of the
select command..
- The request parameter
"attributes" for "elements" in "output" is now available.
- The special value
"*" for "attributes" in "output" is now available, to export all columns.
- Server process does shutdown/restart gracefully.
- Restart itself automatically when the
catalog.json is updated.
- Express-droonga 1.0.3
- Groonga compatible
load command with GET method is available.
- Query parameter
group_by[(column name)][attributes] for the REST search command now accepts simple comma-separated string value.
- Droonga-http-server 1.0.5
- Use
Default as the name of the default dataset.
It is same to Droonga Engine’s one.
- Use
10041 as the default port number.
It is same to Groonga HTTP server’s one.
And, related projects are also released:
- [Drndump 1.0.0][drndump]: It’s a new face!
- Droonga-client-ruby 0.1.7
- Updated the default port number, same to
droonga-engine’s one.
- Drntest 1.1.5
- Add
--timeout option to work on slow environment such as Travis CI.
- Support tmpfs at
/dev/shm.
- Use the environment variable
DROONGA_BASE_DIR.
- Droonga-message-pack-packer-ruby 1.0.1
- Support packing of
Groonga::WGS84GeoPoint and Groonga::TokyoGeoPoint values.
Conclusion
- Droonga 1.0.3 has been released!
- You can add new replicas, remove existing replicas, and replace replicas with new one, without stopping of the Droonga cluster, for read-only requests.
- Droonga project will release a new version every month!
Droonga project welcomes you to join us as a user and/or a developer! See community to contact us!
About Droonga
Droonga is a scalable data processing engine, based on a stream oriented processing model. In many operations (searching, updating, grouping, and so on), Droonga processes various data by pipeline. As the result, Droonga has large potential around its flexibility and extensibility. Moreover, those features provide high availability for people who develop any data processing engine based on Droonga. You can process complex operations by mixing operations, and you can add custom operations to Droonga via plugins written as Ruby-scripts.
Are you interested in Droonga? See overview for more details, and try the tutorial. You’ll understand how Droonga works with these documentations.
About this release
The current Droonga version is 1.0.2.
The most important topic on this release is that the core component aka Droonga Engine becomes Fluentd-free.
As the result, the project (and the Gem package) fluent-plugin-droonga is renamed to droonga-engine.
Of course the compatibility of the Fluentd-protocol is still there.
And, now Droonga has better compatibility to Groonga.
Moreover there is a new tutorial for Groonga users aiming to migrate from Groonga to Droonga.
Droonga is still under development, but it already can work as a Groonga with the replication feature.
Feel free to try it on!
Details of improvements on this release are:
- Droonga-engine 1.0.2 (renamed from “fluent-plugin-droonga”)
- Becomes Fluentd-free.
- Supports new
--daemon and --pid-file options for the daemon mode.
- More Groonga-compatible features are available:
table_list command
column_list command
column_remove command
column_rename command
delete command
- options for
select command
filter
sortby
drilldown
drilldown_output_columns
drilldown_sortby
drilldown_offset
drilldown_limit
- A useful command line tool
droonga-catalog-generate is included.
It helps you to write your custom catalog.json.
- Parameters for the
search command is validated more strictly.
- The default port number is changed from 24224 (fluentd’s one) to 10031.
- Express-droonga 1.0.2
- Works with the Express 4.0.
- Keeps the process alive even if it is disconnected from the Droonga Engine.
- Groonga compatible
load command with POST method is available.
(Note: load command with GET method is not supported yet.)
- Droonga-http-server 1.0.4
- Works with the Express 4.0.
- Supports a new
--enable-trust-proxy option to run the server behind a reverse proxy.
- Supports a new
--plugins option to choose plugins to be activated.
- Supports new
--daemon and --pid-file options for the daemon mode.
And, related projects are also released:
Conclusion
- Droonga 1.0.2 has been released!
- There is better compatibility with Groonga - it’s the time to try Droonga, migrating from Groonga!
- Droonga project will release a new version every month!
Droonga project welcomes you to join us as a user and/or a developer! See community to contact us!
At the day 2014-03-29, we released grn2drn 1.0.1 also.
We forgot to write this topic in the list of updated projects…
The project grn2drn provides some command line tools to use Groonga’s command lists for Droonga.
For example, you can generate a JSONs file from Groonga’s load command line.
In this release, we added a new command grn2drn-schema which converts any Groonga’s command list to the “schema” part of the catalog.json.
It will help you to write your custom catalog.json by hand, if you know how to define Groonga’s tables.
About Droonga
Droonga is a scalable data processing engine, based on a stream oriented processing model. In many operations (searching, updating, grouping, and so on), Droonga processes various data by pipeline. As the result, Droonga has large potential around its flexibility and extensibility. Moreover, those features provide high availability for people who develop any data processing engine based on Droonga. You can process complex operations by mixing operations, and you can add custom operations to Droonga via plugins written as Ruby-scripts.
Are you interested in Droonga? See overview for more details, and try the tutorial. You’ll understand how Droonga works with these documentations.
About this release
The current Droonga version is 1.0.1.
The release has the following improvements:
- Fluent-plugin-droonga 1.0.1
- More documents around plugin APIs are now available.
See the plugin development tutorial and the plugin API reference.
- Some documented features of the
catalog.json are actually implemented. For example:
- Connections to other Droonga Engine nodes are automatically re-established correctly.
- Some improvements about the
search command
- The column name
_nsubrecs is available as a source with groupBy and sortBy.
- The element
elapsedTime is now available for a value of elements.
- A new parameter
adjusters is introduced. (Not documented yet, so see also Groonga’s document)
groupBy becomes faster.
- And some small bugfixes.
- Express-droonga 1.0.1
- The bundled HTTP server application is removed.
Instead, use another project droonga-http-server.
- Parallel connections from the Droonga Engine are established correctly.
- A middleware for response caches is available now.
You can see the statistics via
/cache/statistics.
- Query parameters
attributes, group_by, and adjusters are available for a REST search command (via /tables/:tableName).
- Droonga-http-server 1.0.3
- This is an npm package, a frontend for the express-droonga.
You don’t have to write your
application.js and package.json for general purpose - you just have to install this package and run the droonga-http-server command with options, to start an HTTP protocol adapter on your machine.
See also the basic tutorial and the reference manual.
And, related projects are also released:
- Droonga-client-ruby 0.1.5
- A new command
droonga-send is available just for sending requests and ignoring responses.
- Output results correctly event if there are multiple threads.
- Drntest 1.1.3
- Supported merging custom
catalog.json for each test.
- Saved actual results on “not checked” cases.
- Supported a new
omit directive.
- Supported a new
require-catalog-version directive.
Conclusion
- Droonga 1.0.1 has been released!
- More documents around plugin APIs are available.
- More features of
catalog.json are actually implemented.
- A new npm package
droonga-http-server is available as an HTTP protocol adapter frontend.
You don’t have to write your application.js and package.json anymore.
- A new
droonga-send command is added to droonga-client-ruby.
- Drntest now supports custom
catalog.json for each test, and there are more improvements.
- Droonga project will release a new version every month!
Droonga project welcomes you to join us as a user and/or a developer! See community to contact us!
About Droonga
Droonga is a scalable data processing engine, based on a stream oriented processing model.
Droonga is a distributed fulltext search engine
Droonga provides high-power, scalable fulltext search feature including data-storage features.
Droonga can search information from a large database based on multiple partitions and multiple hardwares.
You don’t have to think about the maximum limit of the size of storage, CPU resources, and so on.
If remaining capacity becomes tight, then you just have to add new nodes to your cluster.
See overview for more details, and try the tutorial.
Droonga is a distributed generic data processing engine
In many operations (searching, updating, grouping, and so on), Droonga processes various data by pipeline.
As the result, Droonga has large potential around its flexibility and extensibility.
Moreover, those features provide high availability for people who develop any data processing engine based on Droonga.
You can process complex operations by mixing operations, and you can add custom operations to Droonga via plugins written as Ruby-scripts.
To develop your custom plugins, see the plugin development tutorial.
About this release
The current Droonga version is 1.0.0.
This is the first major release!!
The release has the following changes:
- The format of the “catalog.json” is improved and stabilized.
More readable, more understandable easily.
- APIs to develop plugins around the handling phase are stabilized.
Now you can develop plugins working with the data storage.
See the plugin development tutorial for the handling phase for more details.
-
Declaration style of plugins is changed a little.
Old (Droonga 0.9.9):
module MyPlugin
Plugin.registry.register("my-plugin", self)
...
end
New (Droonga 1.0.0):
module MyPlugin
extend Plugin
register("my-plugin")
...
end
The old style still works, but it is deprecated.
You should migrate your plugins written for Droonga 0.9.9.
Conclusion
- Droonga 1.0.0 has been released!
- “catalog.json” becomes more readable.
- Plugins can work with the data storage.
- Declaration style of plugins is changed.
You should migrate your plugin written for Droonga 0.9.9, as soon as possible.
- Droonga project will release a new version every month!
Droonga project welcomes you to join us as a user and/or a developer! See community to contact us!
About Droonga
Droonga is a scalable data processing engine, based on a stream oriented processing model. In many operations (searching, updating, grouping, and so on), Droonga processes various data by pipeline. As the result, Droonga has large potential around its flexibility and extensibility. Moreover, those features provide high availability for people who develop any data processing engine based on Droonga. You can process complex operations by mixing operations, and you can add custom operations to Droonga via plugins written as Ruby-scripts.
Are you interested in Droonga? See overview for more details, and try the tutorial. You’ll understand how Droonga works with these documentations.
About this release
The current Droonga version is 0.9.9.
The release has the following improvements:
- Plugin APIs for adaptation phase are stabilized.
- Now you can develop any Droonga plugin which translates request and response messages, between the Droonga Engine and the client including the Protocol Adapter. See the plugin development tutorial for more details.
- Plugins for other phases will become developable in near future, so please wait for the next release…
- The built-in REST interface of the express-droonga generates queries more intelligently.
For example, the search query for the URL “http://localhost:3000/droonga/tables/Store” will be named as “stores” from the table name automatically.
Why we ship Droonga 0.9.9 before 1.0.0?
On the previous release, we announced that we’ll release the version 1.0.0 today. However, now the version 0.9.9 is released. Why not 1.0.0? There are two reasons mainly.
First, plugin APIs were not matured yet. While we were brushing up internal operations of Droonga, we realized that it is hard to develop plugins, because current implementations were built on disorganized codes. Moreover, if people develop any plugin based on the current bad APIs and publish them, then they will become obsolete in very near future, because we define new plugin APIs which completely incompatible with the old one, on the version 1.1, 1.2, or 1.3. We thought that we should stabilize plugin APIs before the version 1.0.0 become public.
Second, we had to rethink the message flow around distributed operations. Droonga should support recursive distributions of messages, but the current message flow couldn’t describe such complex combinations of messages. To introduce such flexibility to Droonga, we had to reconstruct plugin APIs around distributing and collection phases. But rewriting of those mechanism takes much more time and we couldn’t complete it before today.
Then, we decided to postpone shipping of the version 1.0.0. 1.0.0 will be released at 2014-02-28.
Instead, we’ve stabilized plugin APIs for adaptation phase ahead of other phases. Now you can study how to develop Droonga plugins, via steps to develop plugins for adaptation phase.
Conclusion
- Droonga 0.9.9 has been released!
- Now you can develop plugins which translate request and response messages between the Droonga Engine and the client (including the Protocol Adapter). See the plugin development tutorial.
- Plugins for other phases will become developable in the next release, 1.0.0.
- 1.0.0 will be released at 2014-02-28.
- Droonga project will release a new version every month!
Droonga project welcomes you to join us as a user and/or a developer! See community to contact us!
About Droonga
Droonga is a scalable data processing engine. Droonga uses stream oriented processing model. Droonga processes data by pipeline. Many operations such as search, update, group are done in pipeline. The processing model provides flexibility and extensibility. Droonga can also process complex operations by mixing operations. Users can add custom operations to Droonga as Ruby plugins.
Are you interested in Droonga? See overview. It describes more details. Then try tutorial. You will understand how Droonga works with these documentations.
About this release
The current Droonga version is 0.9.0.
The release has the following improvements:
search: Supported "attributes" for elements of output.
table_remove: Implemented Groonga compatible table_remove command.
column_create: Implemented error handling.
catalog: Supported auto reloading.
- Supported reducing responses from two or more nodes for Groonga compatible commands.
- Supported three or more partitions.
- Supported HTTP streaming.
- droonga-client gem: droonga-client 0.1.1 has been released!
- drntest: Drntest 1.1.1 has been released! Drntest is a testing framework for Droonga.
- drnbench: Drnbench 1.0.0 has been released! Drnbench is a benchmark tool for Droonga.
- chef: Droonga related chef cookbooks are created. It is not well documented but works.
Here are incompatible changes in experimental features:
- watch: Changed command name to
watch.publish from watch.notification.
Conclusion
- Droonga 0.9.0 has been released!
search command is improved. Some unimplemented features are implemented!
- Groonga compatibility is improved.
- Droonga related tools have also been released.
- Droonga plugin will be writable in the next release. Sorry!
- Droonga project will release a new version every month!
Droonga project welcomes you to join us as a user and/or a developer! See community to contact us!
This is the first stable release of Droonga!
About Droonga
Droonga is a scalable data processing engine. Droonga uses stream oriented processing model. Droonga processes data by pipeline. Many operations such as search, update, group are done in pipeline. The processing model provides flexibility and extensibility. Droonga can also process complex operations by mixing operations. Users can add custom operations to Droonga as Ruby plugins.
Are you interested in Droonga? See overview. It describes more details. Then try tutorial. You will understand how Droonga works with these documentations.
About this release
The current Droonga version is 0.8.0. This is the first stable release.
The release has the following improvements:
Conclusion
- Droonga 0.8.0 has been released!
- Droonga 0.8.0 is the first stable release.
- Droonga plugin will be writable in the next release.
- Droonga project will release a new version every month!
Droonga project welcomes you to join us as a user and/or a developer! See community to contact us!
This is the first release of Droonga!
About Droonga
Droonga is a scalable data processing engine. Droonga uses stream oriented processing model. Droonga processes data by pipeline. Many operations such as search, update, group are done in pipeline. The processing model provides flexibility and extensibility. Droonga can also process complex operations by mixing operations. Users can add custom operations to Droonga as Ruby plugins.
Are you interested in Droonga? See overview. It describes more details. Then try tutorial. You will understand how Droonga works with these documentations.
Who does try it?
The current Droonga version is 0.7.0. It means “usable” not “stable”. The current Droonga provides basic core features but many other features aren’t implemented yet. Error handlings are also not perfect yet.
If you are interested in Droonga and you don’t care about try & error, please try the current Droonga! If you have questions, please contact us on GitHub issues. Or use mailing list in English (groonga-talk) or in Japanese (groonga-dev). We will help you.
If you are interested in Droonga but you don’t want to avoid try & error, please try again a few months after. Droonga project continues to develop Droonga actively and release a new version every month. You will get more usable Droonga a few months after.
Conclusion
- Droonga 0.7.0 has been released!
- Droonga 0.7.0 is usable but not stable.
- If you’re brave, try Droonga 0.7.0!
- If you’re not so brave, wait a few months.
- Droonga project will release a new version every month!
Droonga project welcomes you to join us as a user and/or a developer!