English 中文(简体)
在目标数据库如db4o处理数据维护
原标题:Handling data maintenance in Object Databases like db4o

我不断发现,使用一个目标数据库,如db4o,令人非常困惑的是,你应如何处理通常由QL/PL-SQL处理的复杂移民。

例如,想象你在称为我的用户的关系数据库中有一个表格。 最初,你有一个名为“姓名”的栏目,因为你的软件在V2中,你希望删除该栏,将全名分成一个空白处,把第一部分放在一个名为“第一名称”的栏内,第二栏列在最后名称的栏中。 在我简单地把“第一名称”和“第二名”一栏删除了原先的“完整名称”一栏。

我怎么做,像 d4o那样? 我是否写过一份 Java方案,描述用户的所有物体。 当我下一位人物作出承诺时,不会有相当于全名的外地/加勒比财产,这是否是一个问题? 在我的“施马”改变生产申请时,我似乎要写一个文字,将数据从X版移至X+1版,然后用X+2版本实际去除我试图删除X+1版的特性,因为我无法撰写瓦 Java文字,修改不再属于我一类的财产。

部分问题似乎是,如果新电离层/野外不是装货舱的成员,则你不能提及财产,因此你基本上需要用同一手稿(hmm,定制舱载重机,像疼痛一样)有两种版本的代码,其新版本的舱面属于另一个包(音响灯),或者使用我提到的X1+x+2战略(需要更多的规划)。 也许有一些明显的解决办法,我从来不从四轮文件中看到。

任何想法? 希望这一点具有某种意义。

最佳回答

首先,db4o处理简单的 ,特别令人振奋——s

现在,你会这样做:

  1. Remove the field full_name , add the new fields first_name and second_name
  2. Iterate over all Address -objects
  3. Access the old field via the StoredClass -API
  4. Split, change, update etc the value. Set the new values on the new field and store the object.

让我们假设我们有地址——阶级。 全部——姓名领域已经拆除。 现在,我们没有把它复制到第一个名字和姓氏。 之后,它就能够这样做(Java):

    ObjectSet<Address> addresses = db.query(Address.class);
    StoredField metaInfoOfField = db.ext().storedClass(Address.class).storedField("full_name", String.class);
    for (Address address : addresses) {
        String fullName = (String)metaInfoOfField.get(address);
        String[] splitName = fullName.split(" ");
        address.setFirstname(splitName[0]);
        address.setSurname(splitName[1]);
        db.store(address);
    }

如你所建议的,你将撰写每一版本的移民编码。 实地是你班子的一部分,因此,你不得不与上面所储存的外地人员接触。

您可以获得一份所有储存类别的清单,并附有<条码>。 有了<代码>StoredClass.getStored Fields(>,你可以找到一份所有储存田地清单,在你的班子里,没有哪怕是田间。 如果再有一等 t子,你仍可以通过基因组获得物体和进入。

www.un.org/Depts/DGACM/index_spanish.htm 更新: 关于复杂情况,如果一个数据库需要转移至多个转化步骤。

例如,在版本第3号中,地址目标完全不同。 因此,对1至2吨的移民口号只能进入所需的领域(例如,我就这样说的首个名称和名称)。 我认为,有多种可能处理这一问题。

  1. (Assuming Java for this idea. Certainly there s an equivalent in .NET). You could make the migration-step a Groovy-script. So each that each script does not interfere with another. Then you define classes the needed classes for the migration there. So each migration has its own migration-classes. With aliases you would bind your groovy-migration-classes to the actual java-classes.
  2. Creating refactoring-classes for complex scenarios. Also bind this classes with aliases.
问题回答




相关问题
MaxPooledStatements setting in JDBC oracle

I can t figure out how to set MaxPooledStatements in Oracle using the Oracle thin JDBC driver. Could someone point me in the right direction?

pass ResultSet from servlet to JSP

I am doing the following in my SampleServlet.java //Fill resultset from db .... try { ArrayList Rows = new ArrayList(); while (resultSet.next()){ ArrayList row = new ArrayList(); ...

How to correctly use ResultSet with h:dataTable

The problem is, that after displaying the ResultSet with <h:dataTable>, the connection is left open. If I close it, it closes the ResultSet too. I m thinking about copying the ResultSet data ...

Mysql session variable in JDBC string

am using this connection string to connect to mysql from java: jdbc:mysql://localhost:3306/db?noDatetimeStringSync=true&useUnicode=yes&characterEncoding=UTF-8 is it possible to set the ...