cayenne-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andrus Adamchik <and...@objectstyle.org>
Subject Re: NuoDB Cayenne Adaptor
Date Thu, 23 Aug 2012 08:18:26 GMT
Re: casting chars to numbers. 

IMO NuoDB driver does it right and others are doing it wrong ;) With John's type-safe properties
available on trunk per CAY-1724 it will be easier for the users to ensure the correct expression
argument type:

// since AGE is Property<Integer>, a user can't pass a String here
Expression e = Artist.NAME.eq("Pablo").andExp(Artist.AGE.gt(40));


Re: branches

Yeah, you can develop this on trunk and/or some of the STABLE branches. I guess STABLE-3.1
is a tricky one, as it is in Beta and presumably in feature freeze. So according to our own
convention, new features can only appear as 3.1.1 (but not 3.1-final). If that's an issue
for you, we can fork 3.1 into "STABLE" and "BETA". Let's continue this discussion on dev if
you have more questions.

Andrus



On Aug 23, 2012, at 10:41 AM, Malcolm Edgar wrote:
> Hi Andrus,
> 
> Its going pretty well so far. I have a smallish Cayenne web application
> running on it with 30 odd tables. The NuoDB JDBC driver is a picky with
> types, e.g. if you pass a numeric string value "6418" into a Cayenne query
> as the PK, Cayenne will set this in the PreparedStatement as
> setObject(index, value), however if the underlying database type is a
> BIGINT the driver will complain internally about casting a java.lang.String
> to java.lang.Long.  I can fix this with the Cayenne CharType
> method setJdbcObject() by marshalling the value into a java.lang.Long and
> performing PreparedStatement#setLong(). However I am not sure if this is
> what I should be doing from a Cayenne perspective.
> 
> Other JDBC drivers I use (MySQL, Oracle, SQL Server)  don't complain doing
> this data marshaling internally.
> 
> On the topic of Cayenne branches, I am currently working against is:
> 
>   - https://svn.apache.org/repos/asf/cayenne/main/branches/STABLE-3.0/<https://svn.apache.org/repos/asf/cayenne/main/branches/STABLE-3.0/f>
>   - https://svn.apache.org/repos/asf/cayenne/main/trunk/
> 
> Is this the correct approach. The reason I am using Cayenne 3.0.x, is so I
> can perform testing against our applications, which I think is a good way
> of verifying this code.
> 
> I can't really comment about how they implement ACID, there is the issue of
> latency and the speed of light!  I think their use of MVCC helps with this
> type of problem, which then becomes an application problem.
> 
> The applications I develop don't have a lot of contention, my main concern
> is about availability. I haven't figured out how to do automatic fail over
> yet, beyond loosing a connection to a Transaction Engine (TE) and then
> going back to a Broker to establish a new connection to a (TE).  My concern
> is if you loose a TE and Broker, then I have to write the code to reconnect
> to another Broker.
> 
> MongoDB do a good job with this in their Java drivers from what I
> understand, if the primary DB is lost, and a secondary is elected to
> primary the driver will automatically fail over to the new primary.
> 
> regards
> 
> On Thu, Aug 23, 2012 at 5:44 AM, Andrus Adamchik <andrus@objectstyle.org>wrote:
> 
>> Hi Malcolm,
>> 
>> Certainly interested to see how this project goes.
>> 
>> I watched the webinar and I am sure this thing can't be nowhere near ACID.
>> But as long as it supports joins, has a JDBC driver, and can store more
>> than a few gigabytes of data, it'll be good enough for many applications :)
>> 
>> Good luck,
>> Andrus
>> 
>> 
>> On Aug 15, 2012, at 3:01 PM, Malcolm Edgar wrote:
>>> Hi Guys,
>>> 
>>> Thanks for the feedback.
>>> 
>>> In terms of my interest, I have no relationship with NuoDB at all.
>>> 
>>> The company I work for Avoka Technologies provide a forms hosting
>> platform
>>> for large government and corporates.  We use/love Cayenne and support
>>> Oracle, SQL Server, MySQL databases.  Generally Oracle and SQL Server are
>>> used for on-premise installations and we use MySQL for a cloud offering
>>> (Amazon RDS).
>>> 
>>> For us we have no performance problems with relational databases. By
>> using
>>> Cayenne caching intelligently we can handle very high loads.  However
>> when
>>> it comes to providing a High Availability solution across multiple data
>>> centers things become much harder.
>>> 
>>> The database vendors have different approaches to this problem, but
>>> generally use a primary active database in data center 1 and a standby
>>> database in data center 2.  Microsoft provides a new capability to
>> support
>>> this in SQL Server 2012 AlwaysOn, for MySQL there is Continuent, for
>> Oracle
>>> there is RAC with Data Guard.
>>> 
>>> All these HA approaches are inherently complex to setup and administer.
>>> 
>>> NuoDB offers fresh approach at this problem. The video below gives a good
>>> overview:
>>> 
>>> http://vimeo.com/33785505
>>> 
>>> I looked at early beta's of NuoDB about 8 months ago, and it was too
>>> unstable at this point. Whether NuoDB becomes a viable player in the
>> market
>>> is open to question. Building SQL databases is hard, but they do have
>>> people like Jim Starkey on board and some serious Venture Captial backing
>>> 
>>> I don't think adding NuoDB support to Cayenne would be trivial, as they
>>> have their own DDL and SQL dialect as does every database vendor. I
>> wished
>>> they had a MySQL emulation mode.
>>> 
>>> Again I have no direct commercial interest in this, and would look at
>>> contributing/developing this code in the Cayenne project if people were
>>> interested.
>>> 
>>> regards Malcolm Edgar
>>> 
>>> On Wed, Aug 15, 2012 at 9:15 AM, Aristedes Maniatis <ari@maniatis.org
>>> wrote:
>>> 
>>>> On 14/08/12 11:32pm, Aristedes Maniatis wrote:
>>>> 
>>>>> On 14/08/12 10:00pm, Malcolm Edgar wrote:
>>>>> 
>>>>>> Hi All,
>>>>>> 
>>>>>> I am interested in developing a Cayenne Adaptor for the NuoDB database
>>>>>> https://www.nuodb.com/
>>>>>> 
>>>>>> Its a very interesting database technology for developing scale out
/
>>>>>> high
>>>>>> availability solutions. The stuff that relational databases struggle
>>>>>> with.
>>>>>> 
>>>>>> Presumably to get started I would need to create a NuoDBAdaptor
>>>>>> extending *
>>>>>> org.apache.cayenne.dba.**JdbcAdapter*.  Is this the best place to
>>>>>> start, does
>>>>>> anyone have any recommendations, or would like to be involved ?
>>>>>> 
>>>>>> regards Malcolm Edgar
>>>>>> 
>>>>> 
>>>>> 
>>>>> Interesting. Their website is full of marketing speak, but very light
>> on
>>>>> what makes this database so "revolutionary". What is that attracts you
>> to
>>>>> it over the choice of existing open source databases?
>>>>> 
>>>>> If it supports the basic SQL specification, there is probably very
>> little
>>>>> code to implement in the Cayenne dba package.
>>>>> 
>>>>> Ari
>>>>> 
>>>> 
>>>> Just to be clear Malcolm, I'm not being critical of your effort at all.
>>>> The more databases Cayenne supports the better. But I've never come
>> across
>>>> Nuo before and I'm curious about what it offers. Certainly mysql's
>>>> master/master clustering capabilities leave a bit to be desired, but as
>> a
>>>> basic SQL/storage engine I wonder how easy it would be for anyone to
>>>> surpass postgresql/mysql after all the years of bug fixing and tuning.
>>>> 
>>>> I've not been able to Google any benchmarks or other third party
>> reviews.
>>>> The best I found was this:
>>>> 
>>>>  http://sqlandsiva.blogspot.**com.au/2011/11/nuodb-acid-**
>>>> compliant-scalable-cloud_02.**html<
>> http://sqlandsiva.blogspot.com.au/2011/11/nuodb-acid-compliant-scalable-cloud_02.html
>>> 
>>>> 
>>>> which suggests that about 90% of the SQL standard is implemented. I
>> guess
>>>> the real question is which 90%?
>>>> 
>>>> 
>>>> 
>>>> 
>>>> Ari
>>>> 
>>>> 
>>>> --
>>>> -------------------------->
>>>> Aristedes Maniatis
>>>> GPG fingerprint CBFB 84B4 738D 4E87 5E5C  5EFA EF6A 7D2E 3E49 102A
>>>> 
>> 
>> 


Mime
View raw message