你知道任何使用Orient DB的开源软件吗?或者您自己使用过该产品?有什么经验可以分享?
我最近研究过Orient DB,它有很好的有趣的功能集(快速,可嵌入Java,简单的API),但它似乎没有被广泛使用.是因为东方数据库是该领域的新玩家吗?
我一直在阅读有关OrientDB的文章,我对该软件的"版本"感到有些困惑.
主要版本听起来就像是文档存储,但互联网上的东西让它听起来像是文档和图形数据库.http://nosql.mypopescu.com/post/1254869909/correction-orientdb-is-a-document-and-graph-store
它和图表版本有什么区别?图表版本是仅使用节点和边缘进行图形化,还是文档图形数据库?
更新:关键值商店版本是什么?它有何不同?你能和其他版本一起使用吗?
我应该在Java-Groovy应用程序中以嵌入模式使用OrientDB.同时,我必须在几台机器上分发这个java-groovy应用程序.
问题是:是否可以从所有机器访问同一个数据库?换句话说:在OrientDB中是否可以在嵌入模式下使用分布式数据库?
谢谢
我想将OrientJS与Express.js一起使用.如何在发出任何http请求之前配置连接池,在请求/响应周期中从池中获取和释放连接,并在关闭应用程序时完成池?
OrientDB官方网站说:
在通用硬件上,每秒最多可存储150,000个文档,每天可存储10亿个文档.大图可以在几毫秒内加载,而无需执行昂贵的JOIN,例如Relational DBMS.
但是,执行以下代码表明,插入150000个简单文档需要大约17000ms.
import com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx;
import com.orientechnologies.orient.core.record.impl.ODocument;
public final class OrientDBTrial {
public static void main(String[] args) {
ODatabaseDocumentTx db = new ODatabaseDocumentTx("remote:localhost/foo");
try {
db.open("admin", "admin");
long a = System.currentTimeMillis();
for (int i = 1; i < 150000; ++i) {
final ODocument foo = new ODocument("Foo");
foo.field("code", i);
foo.save();
}
long b = System.currentTimeMillis();
System.out.println(b - a + "ms");
for (ODocument doc : db.browseClass("Foo")) {
doc.delete();
}
} finally {
db.close();
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的硬件:
我将构建一个电子商务网站,并想用一个没有SQL数据库,将与该应用的计划吻合.但是当谈到哪个数据库适合这项工作时,我不确定.在比较各种DB之后,看起来最好的那些可能是mongo,沙发,甚至是orientdb.我已经看到与MySQL相比,使用或不使用所有这些参数的参数.但他们之间(nosql数据库),哪一个适合电子商务解决方案?
请注意,对于用例,我不会在一秒钟内进行数千次交易.或类似的高写入率.他们将是温和的确定,但在任何已建立的数据库可以处理的水平.
CouchDB:掌握到掌握复制,我真的可以使用.如果没有,我仍然必须在代码中实现相同的功能.我需要能够拥有一个用户数据库,与母舰同步.(用户将拥有自己的,可能是localhost数据库,可以与主域服务器同步).一旦你的查询存储在db中,Couch也很快.因为我可能对读取性能有更高的要求.虽然不是很多.
MongoDB:查询非常简单且用户友好.此外,由于最终用户可能需要在给定时间查询我可能无法提前解决的某些事情,这似乎可能更适合.我不必在db中预先存储我的查询.是否支持原子事务,但仅限于一次写入单个文档时.
OrientDB:图形数据库.大多数人都习惯了很多不同,但是根据需要,它也可以很好地适应.Orient具有无模式的优点,并且支持ACID事务.图形数据库可以很好地与客户和产品关系很多.Orient还支持master到master复制,类似于couchdb.
不要误会我的意思,我可以看到如何使用像MySQL这样的传统方法来构建它,但是nosql解决方案的简单性和简单性非常有吸引力.虽然,在我的情况下,需要一个无模式的解决方案,在nosql而不是mysql中会容易得多.给定产品可能比其他产品具有更多或更少的商品.并且在添加新字段时避免重新创建表格是可取的.
因此,在这3个(或者您认为可能更好的其他人)之间,在处理客户交易时,每个网站中的哪些功能可能对我有用,或者对我来说是基于电子商务的网站?
编辑:我没有使用现有解决方案的原因是因为我需要的集成功能,没有可用的解决方案.我们的目标也是将其作为我们公司的完整产品.除了销售之外,还有一些其他的集成.它也将与商店的POS系统合作.
我正在开发一个REST API.我在Orientdb中遇到各种各样的问题.在当前设置中,我们有一个包装ODatabaseDocumentPool的单例.我们通过此设置检索所有实例.每个api调用都是从池中获取实例并使用ODatabaseDocumentTx实例创建OrientGraph的新实例开始的.后面的代码使用ODatabaseDocumentTx和OrientGraph中的方法.在代码的最后,我们在写操作上调用graph.commit(),在所有操作上调用graph.shutdown().
我有一份问题清单.
为了验证,我仍然可以使用我用来创建OrientGraph的ODatabaseDocumentTx实例?或者我应该使用OrientGraph.getRawGraph()?
使用OrientGraph时,执行读取操作的最佳方法是什么?即使在读取操作期间,我也会在检索记录时获得OConcurrentModificationExceptions,锁定异常或错误.这是因为OrientGraph是事务性的,即使在检索记录时也会修改版本吗?我应该提一下,我也使用索引管理器并在这些读操作中迭代顶点的边.
当我通过索引管理器获取记录时,这是否更新了数据库上的版本?
graph.shutdown()是否将ODatabaseDocumentTx实例释放回池中?
v1.78是否仍然要求我们锁定交易中的记录?
如果在OrientGraph上将autoStartTx设置为false,我是否必须手动启动事务,还是在访问数据库时自动启动?
示例代码:
ODatabaseDocumentTx db = pool.acquire();
// READ
OrientGraph graph = new OrientGraph(db);
ODocument doc = (ODocument) oidentifialbe.getRecord() // I use Java API to a get record from index
if( ((String) doc.field("field")).equals('name') )
//code
OrientVertex v = graph.getVertex(doc);
for(OrientVertex vv : v.getVertices()) {
//code
}
// OR WRITE
doc.field('d',val);
doc = doc.save();
OrientVertex v = v.getVertex(doc);
graph.addEdge(null, v, otherVertex);
graph.addEdge(null, v, anotherVertex) // do I have to reload the record in v? …Run Code Online (Sandbox Code Playgroud) 是否有任何实现,api或OrientDB和C#的例子.我正在研究OrientDB的原因是因为它是我发现的唯一一个Graph和Document的组合.
关于我应该怎么做的任何建议.
我的下一个选择是RavenDB,但我不确定它是否支持连接或链接文档?
有什么想法吗...
我想用来docker-compose组合php和几个数据库(orientdb,neo4j等).然后进入php容器并使用shell执行命令.
单独地,我的所有容器都在游泳,当我把它们组合在一起时,它们都会运行.但是,我不能为我的生活弄清楚如何保持php容器活着,所以我可以进入它进行测试.
为简单起见,我只使用一个数据库:orient-db.
我的docker-compose.yml档案:
version: '2'
services:
php:
build: .
links:
- orientdb
orientdb:
image: orientdb:latest
environment:
ORIENTDB_ROOT_PASSWORD: rootpwd
ports:
- "2424:2424"
- "2480:2480"
Run Code Online (Sandbox Code Playgroud)
我的"php" Dockerfile:
FROM php:5.6-cli
ADD . /spider
WORKDIR /spider
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/bin/ --filename=composer
RUN composer install --prefer-source --no-interaction
RUN yes | pecl install xdebug \
&& echo "zend_extension=$(find /usr/local/lib/php/extensions/ -name xdebug.so)" > /usr/local/etc/php/conf.d/xdebug.ini
Run Code Online (Sandbox Code Playgroud)
我试过(除其他外):
docker-compose up在一个终端然后docker attach在另一个终端tty …我正在为我正在构建的应用程序建模图形,我有n个用户连接到n个用户,我也有n个帖子可以被n个用户喜欢.所以对于给定的用户,结构看起来像这样,

如果用户喜欢数百个Post节点,它将为节点生成100条边(realtionships),当post为n时,边也将为n.因此,一个用户将连接到n个用户和n个帖子以及n个未来的节点类型.
因此,使用中间节点从而减少给定节点的边缘,这看起来像这样,
如果用户有一个名为Collection的中间节点,它将连接到like,因为这是一个属性图,我可以向中间节点添加一个属性,使其行为类似于来自用户的连接(类似于Likes. username = User.username)
这将类似于这个问题(图形数据库建模:我应该使用一个集合节点来避免许多依赖于节点)
我的想法是
这种中间连接节点的方式可以将垃圾与主节点隔离,从而可以加速自定义算法.
我的问题,
orientdb ×10
nosql ×4
java ×2
architecture ×1
c# ×1
couchdb ×1
distributed ×1
docker ×1
e-commerce ×1
express ×1
javascript ×1
mongodb ×1
neo4j ×1
node.js ×1
orientjs ×1
php ×1
provisioning ×1
ravendb ×1