问题描述
我有兴趣了解您使用非关系型nosql数据库的设计策略 - 也就是说,不使用传统关系型数据库的(主要是新的)类别的数据存储设计或SQL(例如Hypertable,CouchDB,SimpleDB,Google App Engine数据存储,Voldemort,Cassandra,SQL数据服务等)。它们通常也被称为键/值存储,在基础上它们像巨大的分布式持久散列表一样。
I'm interested in hearing about design strategies you have used with non-relational "nosql" databases - that is, the (mostly new) class of data stores that don't use traditional relational design or SQL (such as Hypertable, CouchDB, SimpleDB, Google App Engine datastore, Voldemort, Cassandra, SQL Data Services, etc.). They're also often referred to as "key/value stores", and at base they act like giant distributed persistent hash tables.
具体来说,我想了解与这些新数据库的概念数据设计的差异。
Specifically, I want to learn about the differences in conceptual data design with these new databases. What's easier, what's harder, what can't be done at all?
-
你想出了一些有效的替代设计更好的在非关系世界?
Have you come up with alternate designs that work much better in the non-relational world?
你有没有打击你的头似乎不可能的东西?
Have you hit your head against anything that seems impossible?
您已搭配任何设计模式,例如从一个翻译到另一个?
Have you bridged the gap with any design patterns, e.g. to translate from one to the other?
你现在甚至可以做显式数据模型(例如在UML中),或者你已经完全支持半结构化/ blob?
Do you even do explicit data models at all now (e.g. in UML) or have you chucked them entirely in favor of semi-structured / document-oriented data blobs?
您是否错过任何RDBMS提供的主要额外服务,例如关系完整性,任意复杂的事务支持,触发器等?
Do you miss any of the major extra services that RDBMSes provide, like relational integrity, arbitrarily complex transaction support, triggers, etc?
我来自SQL关系数据库背景,所以正常化是我的血液。也就是说,为了简单和缩放,我得到了非关系数据库的优点,我的直觉告诉我,设计能力必须更加重叠。你做了什么?
I come from a SQL relational DB background, so normalization is in my blood. That said, I get the advantages of non-relational databases for simplicity and scaling, and my gut tells me that there has to be a richer overlap of design capabilities. What have you done?
FYI,有关于类似主题的StackOverflow讨论:
FYI, there have been StackOverflow discussions on similar topics here:
- the next generation of databases
- changing schemas to work with Google App Engine
- choosing a document-oriented database
推荐答案
认为非关系DBMS在他们的数据模型上有很大的不同,因此概念数据设计也会有很大的不同。在线程 的不同范例分类如下:
I think you have to consider that the non-relational DBMS differ a lot regarding their data model and therefore the conceptual data design will also differ a lot. In the thread Data Design in Non-Relational Databases of the NOSQL Google group the different paradigms are categorized like this:
- Bigtable式系统(HBase,
Hypertable等) - ,
等) - 文档数据库(CouchDB,
MongoDB等) - 图数据库(AllegroGraph,
Neo4j,Sesame等)
- Bigtable-like systems (HBase,Hypertable, etc)
- Key-value stores (Tokyo, Voldemort,etc)
- Document databases (CouchDB,MongoDB, etc)
- Graph databases (AllegroGraph,Neo4j, Sesame, etc)
我主要进入,使用这种模式的数据设计的优雅是什么让我在那里,厌倦了。我在此上使用图表数据库提供了一些数据设计示例, a href =http://wiki.neo4j.org/content/IMDB_The_Domain =noreferrer>如何建模的示例基本作者:对使用图表数据库的数据设计也有非常好的介绍。
The presentation slides (slideshare) Graph Databases and the Future of Large-Scale Knowledge Management by Marko Rodriguez contains a very nice introduction to data design using a graph database as well.
从graphdb的角度回答具体问题:
Answering the specific questions from a graphdb point of view:
替代设计:添加多种不同类型的关系实体没有任何担心或需要预先定义哪些实体可以连接。
Alternate design: adding relationships between many different kinds of entities without any worries or a need to predefine which entities can get connected.
桥接缺口:我倾向于做不同的每个案例,基于域本身,因为我不想要一个面向表的图形等。但是,有关从RDBMS自动翻译为graphdb的信息。
Bridging the gap: I tend to do this different for every case, based on the domain itself, as I don't want a "table-oriented graph" and the like. However, here's some information on automatic translation from RDBMS to graphdb.
显式数据模型:我一直这样做(白板样式),然后使用模型,因为它是在数据库中。
Explicit data models: I do these all the time (whiteboard style), and then use the model as it is in the DB as well.
来自RDBMS世界的小姐:很容易的方法来创建报告。更新:可能不是难以从图表数据库创建报表,请参阅。
Miss from RDBMS world: easy ways to create reports. Update: maybe it's not that hard to create reports from a graph database, see Creating a Report for a Neo4J Sample Database.
这篇关于非关系数据库设计的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!