我已经开始用 Vala 编写 RSS 阅读器,但我不知道应该使用什么数据库系统,我无法连接到 CouchDB,而 SQLite 工作正常,但我想使用 CouchDB,因为有 ubuntu 版本。我已安装最新更新
public CouchDB.Session session;
public CouchDB.Database db;
public string feed_table = "feed";
public string item_table = "item";
public struct field {
string name;
string val;
}
// constructor
public Database() {
try {
this.session = new CouchDB.Session();
} catch (Error e) {
stderr.printf ("%s a\n", e.message);
}
try {
this.db = new CouchDB.Database (this.session, "test");
} catch (Error e) {
stderr.printf ("%s a\n", e.message);
}
try {
this.session.get_database_info("test");
} catch (Error e) {
stderr.printf ("%s aa\n", e.message);
}
try {
var newdoc = new CouchDB.Document ();
newdoc.set_boolean_field ("awesome", true);
newdoc.set_string_field ("phone", "555-VALA");
newdoc.set_double_field ("pi", 3.14159);
newdoc.set_int_field ("meaning_of_life", 42);
this.db.put_document (newdoc); // store document
} catch (Error e) {
stderr.printf ("%s aaa\n", e.message);
}
报告
$ ./xml_parser rss.xmlCannot connect to destination (127.0.0.1) aa
Cannot connect to destination (127.0.0.1) aaa
答案1
从性能角度来看,我只想说,与 SQLite 等更成熟的解决方案相比,CouchDB 可能不是最快的解决方案。gwibber 比较将 SQLite 列为只是 速度快 10 倍。
鉴于 RSS 阅读器的功能远不止SELECT
于此INSERT
,您需要意识到这一点,因为它会影响应用程序的响应能力。
就您的代码而言,将其与“官方” Vala+Couch 示例,你没有传递连接详细信息,所以我想知道自动检测机制是否存在问题。Couch 每次运行时都会在不同的端口上启动,但你可以通过 dbus 获取其当前端口:
dbus-send --session --print-reply --dest=org.desktopcouch.CouchDB / org.desktopcouch.CouchDB.getPortmethod return sender=:1.231 -> dest=:1.230 reply_serial=2
我不知道 Vala 的做法,但手动查找可能会帮助您完成初始连接。