- 921. Minimum Add to Make Parentheses Valid 使括号有效的最少添加
- 915. Partition Array into Disjoint Intervals 分割数组
- 932. Beautiful Array 漂亮数组
- 940. Distinct Subsequences II 不同的子序列 II
假设HBase 用于存储客户和订单信息。有两种核心记录类型被摄取:客户记录类型和订单记录类型。
客户记录类型将包含您通常期望的所有内容:
订单记录类型将包含如下内容:
假设客户编号和销售订单的组合唯一地标识一个订单,对于一个订单(ORDER)表,这两个属性将组成 rowkey,特别是一个组合键,例如:
[customer number][order number]
但是,还有更多的设计决策需要:原始值是 rowkeys 的最佳选择吗?
LogData 用例中的相同设计问题在这里面对我们。客户编号的密钥空间是什么,以及格式是什么(例如,数字或是字母数字?)由于在HBase中使用固定长度的密钥以及可以在密钥空间中支持合理分布的密钥是有利的,因此会出现类似的选项:
带有哈希的复合 Rowkey:
复合数字/哈希组合 Rowkey:
传统的设计方法会为有单独的 CUSTOMER 和 SALES 表格。另一种选择是将多个记录类型打包到一个表中(例如,CUSTOMER ++)。
客户记录类型 Rowkey:
订单记录类型Rowkey:
这种特殊的 CUSTOMER ++ 方法的优点是通过客户 ID 来组织许多不同的记录类型(例如,一次扫描就可以得到关于该客户的所有信息)。缺点是扫描特定的记录类型并不容易。
现在我们需要解决如何建模 Order 对象。假设类结构如下:
Order
Order 可以有多个 ShippingLocations
LineItem
一个ShippingLocation 可以有多个 LineItems
存储这些数据有多种选择。
通过这种方法,ORDER,SHIPPING_LOCATION和LINE_ITEM 将会有单独的表格。
上面描述了 ORDER 表的 rowkey:schema.casestudies.custorder
SHIPPING_LOCATION 的复合 rowkey 就像这样:
LINE_ITEM 表的复合 rowkey 将如下所示:
这样的标准化模型很可能是 RDBMS 的方法,但这不是 HBase 唯一的选择。这种做法的缺点是要检索任何订单的信息,您需要:
这是一个 RDBMS 无论如何都会在封面下做的事情,但由于 HBase 中没有加入,所以您只是更加意识到这一点。
采用这种方法,将会存在一个包含单个表的ORDER
Order rowkey 如上所述:schema.casestudies.custorder
ShippingLocation 复合 rowkey 将如下所示:
LineItem 复合 rowkey 将如下所示:
具有记录类型的单个表格的一种变体是对一些对象层次结构进行非规范化和扁平化,比如将 ShippingLocation 属性折叠到每个 LineItem 实例上。
LineItem 复合 rowkey 将如下所示:
LineItem 列将是这样的:
这种方法的优点包括不太复杂的对象层次结构,但其中一个缺点是,如果这些信息发生变化,更新会变得更加复杂。
通过这种方法,整个 Order 对象图都以某种方式处理为 BLOB。例如,上面描述了 ORDER 表的 rowkey:schema.casestudies.custorder,而一个名为“order”的列将包含一个可以反序列化的对象,该对象包含一个容器 Order,ShippingLocations 和 LineItems。
这里有很多选项:JSON,XML,Java 序列化,Avro,Hadoop Writable等等。所有这些都是相同方法的变体:将对象图编码为字节数组。应该注意这种方法,以确保在对象模型发生更改时保持向后兼容性,使旧的持久结构仍能从 HBase 中读出。
优点是能够以最少的 I/O 来管理复杂的对象图(例如,在本例中每个 HBase Get 有 Order),但缺点包括前面提到的关于序列化的向后兼容性,序列化的语言依赖性(例如 Java 序列化只适用于 Java 客户端),事实上你必须反序列化整个对象才能获得 BLOB 中的任何信息,以及像 Hive 这样的框架难以使用像这样的自定义对象。
我有一个名为 flightbooking 的表。该表由字段组成,包括标有“R”或“C”的状态、已保留和已取消。 我想弄清楚的是允许删除状态为“C”的记录,但如果下一行的状态为“R”,则不应删除。 [编
关闭。这个问题是opinion-based .它目前不接受答案。 想改进这个问题?更新问题,以便 editing this post 可以用事实和引用来回答它. 1年前关闭。 Improve this
研究 PHP/Gearman。我试图了解 Gearman 服务器/进程如何确定什么构成“有效”客户端。 在我看过的文档中,文档显示了许多连接到 Gearman 服务器的客户端。但是,我没有找到任何描述
HBase案例:客户/订单 假设HBase 用于存储客户和订单信息。有两种核心记录类型被摄取:客户记录类型和订单记录类型。 客户记录类型将包含您通常期望的所有内容: 客户编号 客户名称
当运行配方时出现问题并且客户端运行中途挂起时,安装的 Chef 客户端将无法使用。 然后,您可以退出机器、重新启动、清理 Chef pid 文件等,但每次启动 Chef 客户端时都会显示以下消息: C
我正在用Java开发游戏,目前进展顺利。我想尽早实现多人游戏,因此我在此基础上进行构建,而不是在具有大量不同功能的情况下将整个游戏移植到多人游戏中。 我想使其成为客户端/服务器应用程序。 现在,我确定
我正在尝试以编程方式修改 magento 上的现有客户数据,但出现错误,希望有人可以帮助我。 require_once('../app/Mage.php'); ini_set("error_repor
我正在学习 JQuery。我需要创建一个自定义控件。该控件基本上将呈现一些 HTML。有时,我只想获取 HTML。我希望使用以下语法: // Put generated html inside of
我正在尝试以编程方式修改 magento 上的现有客户数据,但出现错误,希望有人可以帮助我。 require_once('../app/Mage.php'); ini_set("error_repor
我想选择表格的一行并插入到另一个现有表格中。(我用的是php和MySql,两张表除了id和timestamp外,其他列都是一样的) 我试着做一个手推车。我希望当有人付款时,从“carret”中选择该客
我想使用 JXTA 实现客户端-服务器架构。服务器部分的配置也将是 3 层。有谁知道开始这个项目的好地方吗? 提前致谢。 最佳答案 JXTA 处理 p2p 连接。这与客户端-服务器方法相反。 据我了解
我需要创建一个 Stripe 客户并为他们订阅一个计划。我查看了 Stripe.js,似乎虽然您可以获得 token ,但除此之外它没有提供任何东西。有可用于节点和 PHP 的库,但为什么不能用于 J
我有一个数据库设计要求,它变得越来越复杂,我需要找出最佳的处理方法。 目前,我有“联系人”,也有“公司”。一个公司可以有多个联系人,但一个联系人只能属于一个公司。这形成了明显的 1:n 关系。但是,联
http://ecc.galengrover.com/programs/facility-rentals/ 在那个页面上,只有那个页面我有一个奇怪的问题。在内容框上方,“所有区域”一词出现在其他文本的
所以,我让这个 CSS 预加载器正常工作。但是,我在将其添加到我的网站时遇到了一些困难。有人可以帮助我理解代码的实现,以允许预加载器成为网站加载前查看的第一个元素。此时预加载器将淡出。预加载器的代码如
考虑以下场景: 有一个 Windows 服务托管一个 WCF 服务。 WCF 服务在客户端和位于不同物理机器上的 AppFabric 服务器之间提供接口(interface)。它检索对象,对其进行计算
当前端的订单历史页面 (*/sales/order/history/) 只显示一条短消息时,这个问题首先被意识到:您没有下订单。 经过一番调试,发现问题出在这个函数上: Mage::getSingle
我的公司是一些项目的定制开发商店,有些较大,有些较小。目前,我们通过电子邮件处理所有客户通信。所以我们通过电子邮件发送设计文档,他们将其标记并发送回去。然后我们推出了他们产品的测试版,他们通过电子邮件
我有一个小部件 View 如下: 公共(public)类 RemoteNumView 扩展了 FrameLayout { 我如何调用 Roboguice 就像在 RoboActivity 中一样?如下
我有一个包含客户编号、客户名称和商品编号的 MySQL 表。它比这稍微复杂一点,但我尝试稍微简化它并删除敏感数据。 当前表 Unique Customer Number | Customer Name
我是一名优秀的程序员,十分优秀!