Hi, thomas: Yes, I had a look at cassandra and the java apis. I think that using that database or some other one would be fine, but would not be a substitute for having a repository architected to specifically serve the needs of this project. I think the repository interface comes first, then a suitable storage mechanism can be selected.
In the end I think a server of some kind exposing http methods for storage and retieval, as well as repository proxying is needed to get internet scale and commercial adoption On 1/5/11, Thomas Paviot <tpav...@gmail.com> wrote: > Hi Dave, > > I tried to ask this question to the cassandra users ml, but unfortunately I > can't send any message (the antispam system doesn't like me!). > > All I know is that Cassandra uses the TCP Port 7000 for communication > between nodes, port 9160 for clients (pycassa for instance) and 8080 for > JMX. > > Thomas > > 2010/12/30 Cowdens <dave.cow...@gmail.com> > >> I have not experimented with it. Though i know little about it, my main >> question would be around its replication: does it use http protocols for >> replication, such that the replication wouldnt have problems getting >> through >> firewalls? >> >> ------------------------------ >> *From:* pythonocc-users-boun...@gna.org [mailto: >> pythonocc-users-boun...@gna.org] *On Behalf Of *Thomas Paviot >> *Sent:* Thursday, December 30, 2010 7:43 AM >> *To:* pythonOCC users mailing list. >> *Subject:* Re: [Pythonocc-users] writing OCC data to a db >> >> One more information: there are 2 high level clients for Cassandra/Thrift >> : >> Pycassa (http://github.com/pycassa/pycassa) and Telephus ( >> http://github.com/driftx/Telephus). >> >> >> 2010/12/30 Thomas Paviot <tpav...@gmail.com> >> >>> A few months ago, I had a look to the Apache Cassandra project ( >>> http://cassandra.apache.org/), contributed by Facebook, and the Thrift >>> API (http://thrift.apache.org/). It seems to be an interesting way to >>> design and deploy distributed databases seamlessly accessible from >>> python. >>> Do anyone have experimented it? >>> >>> 2010/12/29 Dave Cowden <dave.cow...@gmail.com> >>> >>> I think that a distributed repository infrastructure is what's needed >>>> for robust sharing of objects and model data. For sure, such >>>> repositories would likely be based on a database-- but the repo would >>>> need to expose crud ( create read update delete) functions via http, >>>> so it is firwall and internet friendly. >>>> >>>> On 12/29/10, jelle feringa <jelleferi...@gmail.com> wrote: >>>> > Hi, >>>> > >>>> > Recently I had enough of storing OCC's cad as files. >>>> > Sometimes all you need is a database. >>>> > Turns out that its really easy to do so. Perhaps its worth sharing how >>>> this >>>> > can be done... >>>> > Though this might be pretty trivial technically speaking, it can open >>>> up >>>> > interesting ways of collaborating on projects. >>>> > >>>> > -jelle >>>> > >>>> > >>>> > ================================================ >>>> > from OCC.Utils.Topology import Topo >>>> > >>>> > __author__ = 'jdf' >>>> > >>>> > >>>> > from sqlalchemy import * >>>> > from sqlalchemy.ext.declarative import declarative_base >>>> > from sqlalchemy.orm import sessionmaker, scoped_session >>>> > >>>> > from OCC.Utils.Construct import make_cube >>>> > #from OCC.TopoDS import TopoDS_Shape >>>> > # >>>> > #TopoDS_Shape.__eq__ = lambda x: TopoDS_Shape.IsEqual(x) >>>> > >>>> > cube = make_cube(1,1,1) >>>> > >>>> > engine = create_engine('sqlite:///jelle.db') >>>> > Base = declarative_base(bind=engine) >>>> > Session = scoped_session(sessionmaker(engine)) >>>> > >>>> > def comp_brep(brepA, brepB): >>>> > import ipdb; ipdb.set_trace() >>>> > print 'jajajaj',brepB, brepA >>>> > return brepA.IsEqual(brepB) >>>> > >>>> > class Individual(Base): >>>> > '''used to store data about an individual >>>> > a row forms a generation >>>> > ''' >>>> > __tablename__ = 'individual' >>>> > >>>> > id = Column(Integer, primary_key=True) >>>> > #name = Column(String) >>>> > #fullname = Column(String) >>>> > #password = Column(String) >>>> > generation = Column(Integer) >>>> > ancestor_a = Column(PickleType()) >>>> > ancestor_b = Column(PickleType()) >>>> > brep = Column(PickleType(mutable=False)) #comparator=comp_brep)) >>>> > #) >>>> ) >>>> > fitness = Column(Float) >>>> > >>>> > Base.metadata.create_all() >>>> > >>>> > >>>> > indy = Individual() >>>> > indy.ancestor_a = 'parent_a' >>>> > indy.fitness = 12. >>>> > indy.ancestor_b = 'parent_a' >>>> > indy.generation = 1 >>>> > #indy.id = 0 >>>> > indy.brep = cube >>>> > >>>> > ''' >>>> > to INSERT many rows very quickly, use the "executemany" style of >>>> > insertion: >>>> > >>>> > >>>> > connection.execute(table.insert(), [{'foo':'row1'}, {'foo':'row2'}, >>>> > {'foo':'row3'}, ...]) >>>> > ''' >>>> > >>>> > s = Session() >>>> > # s.begin() >>>> > s.add(indy) >>>> > s.commit() >>>> > s.close() >>>> > >>>> > print('closed the previous db session\nlet\'s see if we can read back >>>> the >>>> > objects, that be cool...') >>>> > >>>> > engine = create_engine('sqlite:///jelle.db', echo=True) >>>> > Base = declarative_base(bind=engine) >>>> > Session = scoped_session(sessionmaker(engine)) >>>> > s = Session() >>>> > >>>> > from OCC.BRep import BRep_Tool >>>> > bt = BRep_Tool().Pnt >>>> > >>>> > for indy in s.query(Individual): >>>> > print indy.id >>>> > for i in Topo(indy.brep).vertices(): >>>> > print bt(i).Coord() >>>> > ================================================ >>>> > >>>> >>>> -- >>>> Sent from my mobile device >>>> >>>> _______________________________________________ >>>> Pythonocc-users mailing list >>>> Pythonocc-users@gna.org >>>> https://mail.gna.org/listinfo/pythonocc-users >>>> >>> >>> >> >> _______________________________________________ >> Pythonocc-users mailing list >> Pythonocc-users@gna.org >> https://mail.gna.org/listinfo/pythonocc-users >> >> > -- Sent from my mobile device _______________________________________________ Pythonocc-users mailing list Pythonocc-users@gna.org https://mail.gna.org/listinfo/pythonocc-users