Hi,
regarding this proposal:
https://github.com/geotools/geotools/wiki/Implement-a-pure-java-Dbase-indexing-to-optimize-shapefile-access

After reviewing the proposal and checking the current pull request, I'm
going to cast a -1, fair and square.

I'm quite happy to see work on indexing the DBF files, but the current
implementation choice is not acceptable
for a few reasons:
* It bakes a large-ish amount of new untested code into a core supported
module that's used by many users
* The current implementation causes evident performance regressions if the
CDX file is not there
* The chosen format, CDX, has been created by Microsoft for Visual Foxpro,
and can only be created
   by Visual FoxPro
* Visual FoxPro has been completely abandoned by Microsoft, the last
release of it being dated 2007
  https://msdn.microsoft.com/it-it/vfoxpro/bb190225.aspx
* The current implementation of the CDX support cannot create an index,
just use an existing one, so you
   either own a Visual FoxPro license and can run windows, or you're toast

Long story short, the implementation is of interest of a niche within a
niche, the subset of users that
cannot use a proper spatial database, nor H2 with spatial extensions, nor
GeoPackage,
but demand usage of shapefiles, and still own a 8 years old license of
Visual FoxPro to create the
CDX files.

That said, I don't want to reject the code, just make it manageable so that
only the few interested
parties can be affected by its presence, and without burdening myself (as
the shapefile module
maintainer) with code that in the current state only helps a minuscule
portion of the user base.

Alvaro already made modifications to the shapefile store to support generic
attribute indexing,
with interfaces to support other index types (e.g., MDX), in order to make
the contribution acceptable all that's required
is to make it actually pluggable, via SPI, so that the CDX index
implementation can reside in another module.
And then create a gt-shapefile-cdx unsupported module that contains the CDX
indexing support, which will
be maintained by Alvaro himself, so that when that jar is plugged in, CDX
files will be used
for attribute indexing.
This will also lower the bar for entry, as an unsupported module does not
have particular requirements
for code quality or testing level, it's there for everybody to try at their
own risk.

Alvaro, in order to make the plugin system work you'll need to write a
factory class for each index type
and a finder helping to locate the factories. The latest extension point we
added is for projection handlers
in the referencing subsystem, you can find the commit introducing it here:
https://github.com/geotools/geotools/commit/d206957bc4d8de1f7d33e06501aa3b9c95496d7d

For reference, the moving parts of the SPI system used by ProjectionHandler
are:
* The object being created, in this case, an implementation of the
ProjectionHandler interface:
https://github.com/geotools/geotools/blob/master/modules/library/render/src/main/java/org/geotools/renderer/crs/ProjectionHandler.java
* The factory that creates it:
https://github.com/geotools/geotools/blob/master/modules/library/render/src/main/java/org/geotools/renderer/crs/ProjectionHandlerFactory.java
* The finder that can be invoked to locate all the factories:
https://github.com/geotools/geotools/blob/master/modules/library/render/src/main/java/org/geotools/renderer/crs/ProjectionHandlerFinder.java
* The registration files listing which factories are available, in
META-INF, using the same name as the factory itself:
https://github.com/geotools/geotools/blob/master/modules/library/render/src/main/resources/META-INF/services/org.geotools.renderer.crs.ProjectionHandlerFactory

You already have the interface and implementation, and will have to add the
three other bits (for a single implementation
it should be quick).

The new unsupported module will give the CDX code an occasion to be tested
by the interested user base
without affecting the general user population, and will greatly expedite
the inclusion in the code base (you will
receive a detailed review only of the changes in gt-shapefile, to make sure
there are no functional and performance
regressions for the index-less case).

Cheers
Andrea




-- 
==
GeoServer Professional Services from the experts! Visit
http://goo.gl/it488V for more information.
==

*Geosolutions' Winter Holidays from 24/12 to 6/1*

Ing. Andrea Aime
@geowolf
Technical Lead

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054  Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272
mob: +39  339 8844549

http://www.geo-solutions.it
http://twitter.com/geosolutions_it

*AVVERTENZE AI SENSI DEL D.Lgs. 196/2003*

Le informazioni contenute in questo messaggio di posta elettronica e/o
nel/i file/s allegato/i sono da considerarsi strettamente riservate. Il
loro utilizzo è consentito esclusivamente al destinatario del messaggio,
per le finalità indicate nel messaggio stesso. Qualora riceviate questo
messaggio senza esserne il destinatario, Vi preghiamo cortesemente di
darcene notizia via e-mail e di procedere alla distruzione del messaggio
stesso, cancellandolo dal Vostro sistema. Conservare il messaggio stesso,
divulgarlo anche in parte, distribuirlo ad altri soggetti, copiarlo, od
utilizzarlo per finalità diverse, costituisce comportamento contrario ai
principi dettati dal D.Lgs. 196/2003.



The information in this message and/or attachments, is intended solely for
the attention and use of the named addressee(s) and may be confidential or
proprietary in nature or covered by the provisions of privacy act
(Legislative Decree June, 30 2003, no.196 - Italy's New Data Protection
Code).Any use not in accord with its purpose, any disclosure, reproduction,
copying, distribution, or either dissemination, either whole or partial, is
strictly forbidden except previous formal approval of the named
addressee(s). If you are not the intended recipient, please contact
immediately the sender by telephone, fax or e-mail and delete the
information in this message that has been received in error. The sender
does not give any warranty or accept liability as the content, accuracy or
completeness of sent messages and accepts no responsibility  for changes
made after they were sent or for other risks which arise as a result of
e-mail transmission, viruses, etc.

-------------------------------------------------------
------------------------------------------------------------------------------
_______________________________________________
GeoTools-Devel mailing list
GeoTools-Devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geotools-devel

Reply via email to