Sorry, I don't understand your example.
On Sun, Apr 11, 2010 at 12:54 AM, Lucifer Dignified <vineetdan...@gmail.com> wrote: > Benjamin I quite agree to you, but what in case of duplicate usernames, > suppose if I am not using unique names as in email id's . If we have > duplicacy in usernames we cannot use it for key, so what should be the > solution. I think keeping incremental numeric id as key and keeping the name > and value same in the column family. > > Example : > User1 has password as 123456 > > Cassandra structure : > > 1 as key > user1 - column name > value - user1 > 123456 - column name > value - 123456 > > I m thinking of doing it this way for my applicaton, this way i can run > different sorts of queries too. Any feedback on this is welcome. > > On Sun, Apr 11, 2010 at 1:13 PM, Benjamin Black <b...@b3k.us> wrote: >> >> You would have a Column Family, not a column for that; let's call it >> the Users CF. You'd use username as the row key and have a column >> called 'password'. For your example query, you'd retrieve row key >> 'usr2', column 'password'. The general pattern is that you create CFs >> to act as indices for each query you want to perform. There is no >> equivalent to a relational store to perform arbitrary queries. You >> must structure things to permit the queries of interest. >> >> >> b >> >> On Sat, Apr 10, 2010 at 8:34 PM, dir dir <sikerasa...@gmail.com> wrote: >> > I have already read the API spesification. Honestly I do not understand >> > how to use it. Because there are not an examples. >> > >> > For example I have a column like this: >> > >> > UserName Password >> > usr1 abc >> > usr2 xyz >> > usr3 opm >> > >> > suppose I want query the user's password using SQL in RDBMS >> > >> > Select Password From Users Where UserName = "usr2"; >> > >> > Now I want to get the password using OODBMS DB4o Object Query and Java >> > >> > ObjectSet QueryResult = db.query(new Predicate() >> > { >> > public boolean match(Users Myusers) >> > { >> > return Myuser.getUserName() == "usr2"; >> > } >> > }); >> > >> > After we get the Users instance in the QueryResult, hence we can get the >> > usr2's password. >> > >> > How we perform this query using Cassandra API and Java?? >> > Would you tell me please?? Thank You. >> > >> > Dir. >> > >> > >> > On Sat, Apr 10, 2010 at 11:06 AM, Paul Prescod <p...@prescod.net> wrote: >> >> >> >> No. Cassandra has an API. >> >> >> >> http://wiki.apache.org/cassandra/API >> >> >> >> On Fri, Apr 9, 2010 at 8:00 PM, dir dir <sikerasa...@gmail.com> wrote: >> >> > Does Cassandra has a default query language such as SQL in RDBMS >> >> > and Object Query in OODBMS? Thank you. >> >> > >> >> > Dir. >> >> > >> >> > On Sat, Apr 10, 2010 at 7:01 AM, malsmith >> >> > <malsm...@treehousesystems.com> >> >> > wrote: >> >> >> >> >> >> >> >> >> It's sort of an interesting problem - in RDBMS one relatively simple >> >> >> approach would be calculate a rectangle that is X km by Y km with >> >> >> User >> >> >> 1's >> >> >> location at the center. So the rectangle is UserX - 10KmX , >> >> >> UserY-10KmY to >> >> >> UserX+10KmX , UserY+10KmY >> >> >> >> >> >> Then you could query the database for all other users where that >> >> >> each >> >> >> user >> >> >> considered is curUserX > UserX-10Km and curUserX < UserX+10KmX and >> >> >> curUserY >> >> >> > UserY-10KmY and curUserY < UserY+10KmY >> >> >> * Not the 10KmX and 10KmY are really a translation from Kilometers >> >> >> to >> >> >> degrees of lat and longitude (that you can find on a google >> >> >> search) >> >> >> >> >> >> With the right indexes this query actually runs pretty well. >> >> >> >> >> >> Translating that to Cassandra seems a bit complex at first - but you >> >> >> could >> >> >> try something like pre-calculating a grid with the right resolution >> >> >> (like a >> >> >> square of 5KM per side) and assign every user to a particular grid >> >> >> ID. >> >> >> That >> >> >> way you just calculate with grid ID User1 is in then do a direct key >> >> >> lookup >> >> >> to get a list of the users in that same grid id. >> >> >> >> >> >> A second approach would be to have to column families -- one that >> >> >> maps >> >> >> a >> >> >> Latitude to a list of users who are at that latitude and a second >> >> >> that >> >> >> maps >> >> >> users who are at a particular longitude. You could do the same >> >> >> rectange >> >> >> calculation above then do a get_slice range lookup to get a list of >> >> >> users >> >> >> from range of latitude and a second list from the range of >> >> >> longitudes. >> >> >> You would then need to do a in-memory nested loop to find the list >> >> >> of >> >> >> users >> >> >> that are in both lists. This second approach could cause some >> >> >> trouble >> >> >> depending on where you search and how many users you really have -- >> >> >> some >> >> >> latitudes and longitudes have many many people in them >> >> >> >> >> >> So, it seems some version of a chunking / grid id thing would be the >> >> >> better approach. If you let people zoom in or zoom out - you could >> >> >> just >> >> >> have different column families for each level of zoom. >> >> >> >> >> >> >> >> >> I'm stuck on a stopped train so -- here is even more code: >> >> >> >> >> >> static Decimal GetLatitudeMiles(Decimal lat) >> >> >> { >> >> >> Decimal f = 0.0M; >> >> >> lat = Math.Abs(lat); >> >> >> f = 68.99M; >> >> >> if (lat >= 0.0M && lat < 10.0M) { f = 68.71M; } >> >> >> else if (lat >= 10.0M && lat < 20.0M) { f = 68.73M; } >> >> >> else if (lat >= 20.0M && lat < 30.0M) { f = 68.79M; } >> >> >> else if (lat >= 30.0M && lat < 40.0M) { f = 68.88M; } >> >> >> else if (lat >= 40.0M && lat < 50.0M) { f = 68.99M; } >> >> >> else if (lat >= 50.0M && lat < 60.0M) { f = 69.12M; } >> >> >> else if (lat >= 60.0M && lat < 70.0M) { f = 69.23M; } >> >> >> else if (lat >= 70.0M && lat < 80.0M) { f = 69.32M; } >> >> >> else if (lat >= 80.0M) { f = 69.38M; } >> >> >> >> >> >> return f; >> >> >> } >> >> >> >> >> >> >> >> >> Decimal MilesPerDegreeLatitude = >> >> >> GetLatitudeMiles(zList[0].Latitude); >> >> >> Decimal MilesPerDegreeLongitude = ((Decimal) >> >> >> Math.Abs(Math.Cos((Double) >> >> >> zList[0].Latitude))) * 24900.0M / 360.0M; >> >> >> dRadius = 10.0M // ten miles >> >> >> Decimal deltaLat = dRadius / MilesPerDegreeLatitude; >> >> >> Decimal deltaLong = dRadius / MilesPerDegreeLongitude; >> >> >> >> >> >> ps.TopLatitude = zList[0].Latitude - deltaLat; >> >> >> ps.TopLongitude = zList[0].Longitude - deltaLong; >> >> >> ps.BottomLatitude = zList[0].Latitude + deltaLat; >> >> >> ps.BottomLongitude = zList[0].Longitude + deltaLong; >> >> >> >> >> >> >> >> >> >> >> >> On Fri, 2010-04-09 at 16:30 -0700, Paul Prescod wrote: >> >> >> >> >> >> 2010/4/9 Onur AKTAS <onur.ak...@live.com>: >> >> >> > ... >> >> >> > I'm trying to find out how do you perform queries with >> >> >> > calculations >> >> >> > on >> >> >> > the >> >> >> > fly without inserting the data as calculated from the beginning. >> >> >> > Lets say we have latitude and longitude coordinates of all users >> >> >> > and >> >> >> > we >> >> >> > have >> >> >> > Distance(from_lat, from_long, to_lat, to_long) function which >> >> >> > gives distance between lat/longs pairs in kilometers. >> >> >> >> >> >> I'm not an expert, but I think that it boils down to "MapReduce" and >> >> >> "Hadoop". >> >> >> >> >> >> I don't think that there's any top-down tutorial on those two words, >> >> >> you'll have to research yourself starting here: >> >> >> >> >> >> * http://en.wikipedia.org/wiki/MapReduce >> >> >> >> >> >> * http://hadoop.apache.org/ >> >> >> >> >> >> * http://wiki.apache.org/cassandra/HadoopSupport >> >> >> >> >> >> I don't think it is all documented in any one place yet... >> >> >> >> >> >> Paul Prescod >> >> >> >> >> > >> >> > >> > >> > > >