I like the idea of reusing the WideColumn class also for Cassandra. Is
"Wide Column" a term that you've encountered elsewhere, or did you make
that up? I kinda like it, but would want to consider naming as important.

One piece of perspective too is that some databases (notably MongoDB,
CouchDB, ElasticSearch) support "wide rows" in a way, meaning that any
particular row may contain additional fields outside of the norm. Maybe we
could introduce both WideRow and WideColumn interfaces to support that sort
of behaviour?

Kasper

2018-05-22 7:25 GMT-07:00 Arjan Seijkens <a.seijk...@quadient.com>:

> Hi,
>
>
>
> In the context of an internship we have been working on extending HBase
> support for MetaModel, mainly focusing on adding write support.
>
>
>
> Right now there is a pull request for this on a MetaModel fork, which can
> be found here: https://github.com/GerardDellemann/metamodel/pull/2. Note
> that we will probably have to replace this pull request with a new one to
> be able to merge it into MetaModel master instead of the fork.
>
>
>
> There is one specific change within this pull request which I would like
> to discuss here.
>
>
>
> Within this pull request we introduce the HBaseColumn class, which extends
> the AbstractColumn class and which represents a column in an HBase table.
> We introduced this class because HBase uses a Wide column store for it's
> database model, which works in a different manner as relational database
> columns.
>
>
>
> In its current state the HBaseColumn class has two important new methods:
>
>    - HBaseColumn#getColumnFamily()
>    - HBaseColumn#getQualifier()
>
>
>
> From this perspective each Column always has a Column family and
> optionally has a qualifier. If a Column has both a Column family and a
> qualifier, we are able to get a specific value from a table row based on
> that column. If a Column only has a Column family, we don't know which
> qualifiers it has, which can be a typical use case because qualifiers are
> dynamic and can be different for each row, then when getting the value from
> a table row base on that column, we get a list of all values.
>
>
>
> This is how it's implemented now in the pull request.
>
>
>
> I would like your opinion on this, so fire away. Some considerations:
>
>    - Maybe we shouldn't call the class HBaseColumn, but rename it to
>    WideColumn instead and do some more renaming of the methods, so it can be
>    reused later on for Cassandra.
>    - In the current implementation the HBaseColumn supports both using it
>    with and without a qualifier, which causes different behaviors, is this
>    desirable, or should we create two different classes?
>
>
>
> Furthermore all other feedback on the pull request is welcome, but you can
> also wait with that until we replace it with a pull request to actually
> merge it into MetaModel (instead of into the fork).
>
>
>
> Kind regards,
>
>
>
> Arjan Seijkens
>
> *Technical Lead Quadient DataCleaner*
>
> Research & Development
>
>
>
> [image: Quadient]
>
> *Quadient®*
>
> a:
>
> Utrechtseweg 310, Building H31
> <https://maps.google.com/?q=Utrechtseweg+310,+Building+H31+%0D%0A+6812+AR+Arnhem+%0D%0A+%0D%0A+The+Netherlands&entry=gmail&source=g>
> 6812 AR Arnhem
> <https://maps.google.com/?q=Utrechtseweg+310,+Building+H31+%0D%0A+6812+AR+Arnhem+%0D%0A+%0D%0A+The+Netherlands&entry=gmail&source=g>
>
> The Netherlands
> <https://maps.google.com/?q=Utrechtseweg+310,+Building+H31+%0D%0A+6812+AR+Arnhem+%0D%0A+%0D%0A+The+Netherlands&entry=gmail&source=g>
>
> w:
>
> www.quadient.com e: a.seijk...@quadient.com
>
>
>
>   [image:
> https://go.pardot.com/l/68752/2015-06-17/dymgk/68752/22130/Twitter_icon_2.png]
> <https://twitter.com/Quadient>    [image:
> https://go.pardot.com/l/68752/2015-06-17/dymg7/68752/22126/LinkedIn_icon_2.png]
> <https://www.linkedin.com/Quadient/>    [image:
> https://go.pardot.com/l/68752/2015-06-17/dylq7/68752/22120/Facebook_icon_2.png]
> <https://www.facebook.com/Quadient>    [image:
> https://go.pardot.com/l/68752/2015-06-17/dymgy/68752/22132/YouTube_icon_2.png]
> <https://www.youtube.com/channel/UCdOGV3K4rE7t9dW7A7JNN7w>
>
>
>
> The information contained in this e-mail is intended only for the
> individual to whom it is addressed. It may contain privileged and
> confidential information. If you have received this message in error or
> there are any problems, please notify the sender immediately and delete the
> message from your computer. The unauthorized use, disclosure, copying or
> alteration of this message is forbidden. Quadient and/or its worldwide
> subsidiaries will not be liable for direct, special, indirect or
> consequential damage as a result of any virus being passed on, or arising
> from alteration of the contents of this message by a third party.
>
>
>
> Quadient, Max Höggerstrasse 6, CH-8048 Zurich
> <https://maps.google.com/?q=Max+H%C3%B6ggerstrasse+6,+CH-8048+Zurich&entry=gmail&source=g>
>
>
>

Reply via email to